diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml
index bc893c979..7c454abf7 100644
--- a/.github/.OwlBot.lock.yaml
+++ b/.github/.OwlBot.lock.yaml
@@ -13,5 +13,5 @@
# limitations under the License.
docker:
image: gcr.io/cloud-devrel-public-resources/owlbot-python:latest
- digest: sha256:8a5d3f6a2e43ed8293f34e06a2f56931d1e88a2694c3bb11b15df4eb256ad163
-# created: 2022-04-06T10:30:21.687684602Z
+ digest: sha256:00c9d764fd1cd56265f12a5ef4b99a0c9e87cf261018099141e2ca5158890416
+# created: 2022-04-20T23:42:53.970438194Z
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 403472c37..b22459424 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,26 @@
# Changelog
+## [1.3.0](https://github.com/googleapis/python-compute/compare/v1.2.0...v1.3.0) (2022-04-21)
+
+
+### Features
+
+* add new methods for long running operations ([526fb10](https://github.com/googleapis/python-compute/commit/526fb1021cfa25aa34ee93fcca122fb8798c8359))
+
+
+### Bug Fixes
+
+* **compute:** remove proto3_optional from parent_id ([#260](https://github.com/googleapis/python-compute/issues/260)) ([526fb10](https://github.com/googleapis/python-compute/commit/526fb1021cfa25aa34ee93fcca122fb8798c8359))
+* **compute:** replace missing REQUIRED for parent_id ([526fb10](https://github.com/googleapis/python-compute/commit/526fb1021cfa25aa34ee93fcca122fb8798c8359))
+* **deps:** require google-api-core>=2.7.0 ([526fb10](https://github.com/googleapis/python-compute/commit/526fb1021cfa25aa34ee93fcca122fb8798c8359))
+* revert proto3_optional, required removal on parent_id ([#714](https://github.com/googleapis/python-compute/issues/714)) ([#265](https://github.com/googleapis/python-compute/issues/265)) ([ae1aeac](https://github.com/googleapis/python-compute/commit/ae1aeac4290d7a0e5961751bb00e03e08ade699e))
+
+
+### Documentation
+
+* **samples:** Add samples for suspending/resuming an instance ([#259](https://github.com/googleapis/python-compute/issues/259)) ([685d909](https://github.com/googleapis/python-compute/commit/685d909ebd015ccb5277f1ad2f3e9d142d532a13))
+* **samples:** Migrate samples to use new type of operations ([#264](https://github.com/googleapis/python-compute/issues/264)) ([767d7c8](https://github.com/googleapis/python-compute/commit/767d7c803453bc329499a12f92c20693134e4d91))
+
## [1.2.0](https://github.com/googleapis/python-compute/compare/v1.1.0...v1.2.0) (2022-04-07)
diff --git a/google/cloud/compute_v1/services/accelerator_types/client.py b/google/cloud/compute_v1/services/accelerator_types/client.py
index 15497538b..53f0e6201 100644
--- a/google/cloud/compute_v1/services/accelerator_types/client.py
+++ b/google/cloud/compute_v1/services/accelerator_types/client.py
@@ -16,7 +16,7 @@
from collections import OrderedDict
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
diff --git a/google/cloud/compute_v1/services/accelerator_types/transports/base.py b/google/cloud/compute_v1/services/accelerator_types/transports/base.py
index 7fd9ea6f9..0bd9a173b 100644
--- a/google/cloud/compute_v1/services/accelerator_types/transports/base.py
+++ b/google/cloud/compute_v1/services/accelerator_types/transports/base.py
@@ -84,6 +84,7 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -180,5 +181,9 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
__all__ = ("AcceleratorTypesTransport",)
diff --git a/google/cloud/compute_v1/services/accelerator_types/transports/rest.py b/google/cloud/compute_v1/services/accelerator_types/transports/rest.py
index c20ddb62c..93f7df6b8 100644
--- a/google/cloud/compute_v1/services/accelerator_types/transports/rest.py
+++ b/google/cloud/compute_v1/services/accelerator_types/transports/rest.py
@@ -583,6 +583,10 @@ def list(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/addresses/client.py b/google/cloud/compute_v1/services/addresses/client.py
index 946732c02..a9d987276 100644
--- a/google/cloud/compute_v1/services/addresses/client.py
+++ b/google/cloud/compute_v1/services/addresses/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.addresses import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import AddressesTransport, DEFAULT_CLIENT_INFO
@@ -521,22 +524,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -579,6 +569,118 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteAddressRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ address: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified address resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteAddressRequest, dict]):
+ The request object. A request message for
+ Addresses.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ address (str):
+ Name of the address resource to
+ delete.
+
+ This corresponds to the ``address`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, address])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteAddressRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteAddressRequest):
+ request = compute.DeleteAddressRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if address is not None:
+ request.address = address
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetAddressRequest, dict] = None,
@@ -711,22 +813,95 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, address_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertAddressRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertAddressRequest):
+ request = compute.InsertAddressRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if address_resource is not None:
+ request.address_resource = address_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertAddressRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ address_resource: compute.Address = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates an address resource in the specified project
+ by using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertAddressRequest, dict]):
+ The request object. A request message for
+ Addresses.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ address_resource (google.cloud.compute_v1.types.Address):
+ The body resource for this request
+ This corresponds to the ``address_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -766,6 +941,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/addresses/transports/base.py b/google/cloud/compute_v1/services/addresses/transports/base.py
index 9aaad770a..5ea827e6b 100644
--- a/google/cloud/compute_v1/services/addresses/transports/base.py
+++ b/google/cloud/compute_v1/services/addresses/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -203,5 +206,21 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("AddressesTransport",)
diff --git a/google/cloud/compute_v1/services/addresses/transports/rest.py b/google/cloud/compute_v1/services/addresses/transports/rest.py
index 9335962c0..ed9dc2d0b 100644
--- a/google/cloud/compute_v1/services/addresses/transports/rest.py
+++ b/google/cloud/compute_v1/services/addresses/transports/rest.py
@@ -845,6 +845,10 @@ def list(self) -> Callable[[compute.ListAddressesRequest], compute.AddressList]:
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/autoscalers/client.py b/google/cloud/compute_v1/services/autoscalers/client.py
index 704c71887..694282eb8 100644
--- a/google/cloud/compute_v1/services/autoscalers/client.py
+++ b/google/cloud/compute_v1/services/autoscalers/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.autoscalers import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import AutoscalersTransport, DEFAULT_CLIENT_INFO
@@ -519,22 +522,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -577,6 +567,116 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteAutoscalerRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ autoscaler: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified autoscaler.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteAutoscalerRequest, dict]):
+ The request object. A request message for
+ Autoscalers.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ Name of the zone for this request.
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ autoscaler (str):
+ Name of the autoscaler to delete.
+ This corresponds to the ``autoscaler`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, autoscaler])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteAutoscalerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteAutoscalerRequest):
+ request = compute.DeleteAutoscalerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if autoscaler is not None:
+ request.autoscaler = autoscaler
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetAutoscalerRequest, dict] = None,
@@ -713,22 +813,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -771,6 +858,117 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertAutoscalerRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ autoscaler_resource: compute.Autoscaler = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates an autoscaler in the specified project using
+ the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertAutoscalerRequest, dict]):
+ The request object. A request message for
+ Autoscalers.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ Name of the zone for this request.
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ autoscaler_resource (google.cloud.compute_v1.types.Autoscaler):
+ The body resource for this request
+ This corresponds to the ``autoscaler_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, autoscaler_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertAutoscalerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertAutoscalerRequest):
+ request = compute.InsertAutoscalerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if autoscaler_resource is not None:
+ request.autoscaler_resource = autoscaler_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListAutoscalersRequest, dict] = None,
@@ -904,22 +1102,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -962,6 +1147,119 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchAutoscalerRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ autoscaler_resource: compute.Autoscaler = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates an autoscaler in the specified project using
+ the data included in the request. This method supports
+ PATCH semantics and uses the JSON merge patch format and
+ processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchAutoscalerRequest, dict]):
+ The request object. A request message for
+ Autoscalers.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ Name of the zone for this request.
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ autoscaler_resource (google.cloud.compute_v1.types.Autoscaler):
+ The body resource for this request
+ This corresponds to the ``autoscaler_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, autoscaler_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchAutoscalerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchAutoscalerRequest):
+ request = compute.PatchAutoscalerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if autoscaler_resource is not None:
+ request.autoscaler_resource = autoscaler_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def update_unary(
self,
request: Union[compute.UpdateAutoscalerRequest, dict] = None,
@@ -1003,22 +1301,9 @@ def update_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1061,6 +1346,117 @@ def update_unary(
# Done; return the response.
return response
+ def update(
+ self,
+ request: Union[compute.UpdateAutoscalerRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ autoscaler_resource: compute.Autoscaler = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates an autoscaler in the specified project using
+ the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.UpdateAutoscalerRequest, dict]):
+ The request object. A request message for
+ Autoscalers.Update. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ Name of the zone for this request.
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ autoscaler_resource (google.cloud.compute_v1.types.Autoscaler):
+ The body resource for this request
+ This corresponds to the ``autoscaler_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, autoscaler_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.UpdateAutoscalerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.UpdateAutoscalerRequest):
+ request = compute.UpdateAutoscalerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if autoscaler_resource is not None:
+ request.autoscaler_resource = autoscaler_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.update]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/autoscalers/transports/base.py b/google/cloud/compute_v1/services/autoscalers/transports/base.py
index 0ff248d1f..f0c98e3b0 100644
--- a/google/cloud/compute_v1/services/autoscalers/transports/base.py
+++ b/google/cloud/compute_v1/services/autoscalers/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import zone_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -235,5 +238,21 @@ def update(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _zone_operations_client(self) -> zone_operations.ZoneOperationsClient:
+ ex_op_service = self._extended_operations_services.get("zone_operations")
+ if not ex_op_service:
+ ex_op_service = zone_operations.ZoneOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["zone_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("AutoscalersTransport",)
diff --git a/google/cloud/compute_v1/services/autoscalers/transports/rest.py b/google/cloud/compute_v1/services/autoscalers/transports/rest.py
index 34e6d96fe..abf6c63cc 100644
--- a/google/cloud/compute_v1/services/autoscalers/transports/rest.py
+++ b/google/cloud/compute_v1/services/autoscalers/transports/rest.py
@@ -1162,6 +1162,10 @@ def update(self) -> Callable[[compute.UpdateAutoscalerRequest], compute.Operatio
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/backend_buckets/client.py b/google/cloud/compute_v1/services/backend_buckets/client.py
index 00bad1169..8ca743195 100644
--- a/google/cloud/compute_v1/services/backend_buckets/client.py
+++ b/google/cloud/compute_v1/services/backend_buckets/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.backend_buckets import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import BackendBucketsTransport, DEFAULT_CLIENT_INFO
@@ -447,22 +450,9 @@ def add_signed_url_key_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -505,6 +495,120 @@ def add_signed_url_key_unary(
# Done; return the response.
return response
+ def add_signed_url_key(
+ self,
+ request: Union[compute.AddSignedUrlKeyBackendBucketRequest, dict] = None,
+ *,
+ project: str = None,
+ backend_bucket: str = None,
+ signed_url_key_resource: compute.SignedUrlKey = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Adds a key for validating requests with signed URLs
+ for this backend bucket.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.AddSignedUrlKeyBackendBucketRequest, dict]):
+ The request object. A request message for
+ BackendBuckets.AddSignedUrlKey. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_bucket (str):
+ Name of the BackendBucket resource to
+ which the Signed URL Key should be
+ added. The name should conform to
+ RFC1035.
+
+ This corresponds to the ``backend_bucket`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ signed_url_key_resource (google.cloud.compute_v1.types.SignedUrlKey):
+ The body resource for this request
+ This corresponds to the ``signed_url_key_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, backend_bucket, signed_url_key_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.AddSignedUrlKeyBackendBucketRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.AddSignedUrlKeyBackendBucketRequest):
+ request = compute.AddSignedUrlKeyBackendBucketRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if backend_bucket is not None:
+ request.backend_bucket = backend_bucket
+ if signed_url_key_resource is not None:
+ request.signed_url_key_resource = signed_url_key_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.add_signed_url_key]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def delete_unary(
self,
request: Union[compute.DeleteBackendBucketRequest, dict] = None,
@@ -541,22 +645,88 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, backend_bucket])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteBackendBucketRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteBackendBucketRequest):
+ request = compute.DeleteBackendBucketRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if backend_bucket is not None:
+ request.backend_bucket = backend_bucket
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def delete(
+ self,
+ request: Union[compute.DeleteBackendBucketRequest, dict] = None,
+ *,
+ project: str = None,
+ backend_bucket: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified BackendBucket resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteBackendBucketRequest, dict]):
+ The request object. A request message for
+ BackendBuckets.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_bucket (str):
+ Name of the BackendBucket resource to
+ delete.
+
+ This corresponds to the ``backend_bucket`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -594,6 +764,30 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -644,22 +838,101 @@ def delete_signed_url_key_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, backend_bucket, key_name])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteSignedUrlKeyBackendBucketRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteSignedUrlKeyBackendBucketRequest):
+ request = compute.DeleteSignedUrlKeyBackendBucketRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if backend_bucket is not None:
+ request.backend_bucket = backend_bucket
+ if key_name is not None:
+ request.key_name = key_name
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete_signed_url_key]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def delete_signed_url_key(
+ self,
+ request: Union[compute.DeleteSignedUrlKeyBackendBucketRequest, dict] = None,
+ *,
+ project: str = None,
+ backend_bucket: str = None,
+ key_name: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes a key for validating requests with signed
+ URLs for this backend bucket.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteSignedUrlKeyBackendBucketRequest, dict]):
+ The request object. A request message for
+ BackendBuckets.DeleteSignedUrlKey. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_bucket (str):
+ Name of the BackendBucket resource to
+ which the Signed URL Key should be
+ added. The name should conform to
+ RFC1035.
+
+ This corresponds to the ``backend_bucket`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ key_name (str):
+ The name of the Signed URL Key to
+ delete.
+
+ This corresponds to the ``key_name`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -689,7 +962,368 @@ def delete_signed_url_key_unary(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.delete_signed_url_key]
+ rpc = self._transport._wrapped_methods[self._transport.delete_signed_url_key]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def get(
+ self,
+ request: Union[compute.GetBackendBucketRequest, dict] = None,
+ *,
+ project: str = None,
+ backend_bucket: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.BackendBucket:
+ r"""Returns the specified BackendBucket resource. Gets a
+ list of available backend buckets by making a list()
+ request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetBackendBucketRequest, dict]):
+ The request object. A request message for
+ BackendBuckets.Get. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_bucket (str):
+ Name of the BackendBucket resource to
+ return.
+
+ This corresponds to the ``backend_bucket`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.BackendBucket:
+ Represents a Cloud Storage Bucket
+ resource. This Cloud Storage bucket
+ resource is referenced by a URL map of a
+ load balancer. For more information,
+ read Backend Buckets.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, backend_bucket])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetBackendBucketRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetBackendBucketRequest):
+ request = compute.GetBackendBucketRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if backend_bucket is not None:
+ request.backend_bucket = backend_bucket
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert_unary(
+ self,
+ request: Union[compute.InsertBackendBucketRequest, dict] = None,
+ *,
+ project: str = None,
+ backend_bucket_resource: compute.BackendBucket = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Creates a BackendBucket resource in the specified
+ project using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertBackendBucketRequest, dict]):
+ The request object. A request message for
+ BackendBuckets.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_bucket_resource (google.cloud.compute_v1.types.BackendBucket):
+ The body resource for this request
+ This corresponds to the ``backend_bucket_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, backend_bucket_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertBackendBucketRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertBackendBucketRequest):
+ request = compute.InsertBackendBucketRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if backend_bucket_resource is not None:
+ request.backend_bucket_resource = backend_bucket_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertBackendBucketRequest, dict] = None,
+ *,
+ project: str = None,
+ backend_bucket_resource: compute.BackendBucket = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a BackendBucket resource in the specified
+ project using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertBackendBucketRequest, dict]):
+ The request object. A request message for
+ BackendBuckets.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_bucket_resource (google.cloud.compute_v1.types.BackendBucket):
+ The body resource for this request
+ This corresponds to the ``backend_bucket_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, backend_bucket_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertBackendBucketRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertBackendBucketRequest):
+ request = compute.InsertBackendBucketRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if backend_bucket_resource is not None:
+ request.backend_bucket_resource = backend_bucket_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def list(
+ self,
+ request: Union[compute.ListBackendBucketsRequest, dict] = None,
+ *,
+ project: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListPager:
+ r"""Retrieves the list of BackendBucket resources
+ available to the specified project.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListBackendBucketsRequest, dict]):
+ The request object. A request message for
+ BackendBuckets.List. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.backend_buckets.pagers.ListPager:
+ Contains a list of BackendBucket
+ resources.
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListBackendBucketsRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ListBackendBucketsRequest):
+ request = compute.ListBackendBucketsRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list]
# Send the request.
response = rpc(
@@ -699,27 +1333,38 @@ def delete_signed_url_key_unary(
metadata=metadata,
)
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
# Done; return the response.
return response
- def get(
+ def patch_unary(
self,
- request: Union[compute.GetBackendBucketRequest, dict] = None,
+ request: Union[compute.PatchBackendBucketRequest, dict] = None,
*,
project: str = None,
backend_bucket: str = None,
+ backend_bucket_resource: compute.BackendBucket = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.BackendBucket:
- r"""Returns the specified BackendBucket resource. Gets a
- list of available backend buckets by making a list()
- request.
+ ) -> compute.Operation:
+ r"""Updates the specified BackendBucket resource with the
+ data included in the request. This method supports PATCH
+ semantics and uses the JSON merge patch format and
+ processing rules.
Args:
- request (Union[google.cloud.compute_v1.types.GetBackendBucketRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.PatchBackendBucketRequest, dict]):
The request object. A request message for
- BackendBuckets.Get. See the method description for
+ BackendBuckets.Patch. See the method description for
details.
project (str):
Project ID for this request.
@@ -728,11 +1373,16 @@ def get(
should not be set.
backend_bucket (str):
Name of the BackendBucket resource to
- return.
+ patch.
This corresponds to the ``backend_bucket`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ backend_bucket_resource (google.cloud.compute_v1.types.BackendBucket):
+ The body resource for this request
+ This corresponds to the ``backend_bucket_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -740,18 +1390,15 @@ def get(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.BackendBucket:
- Represents a Cloud Storage Bucket
- resource. This Cloud Storage bucket
- resource is referenced by a URL map of a
- load balancer. For more information,
- read Backend Buckets.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, backend_bucket])
+ has_flattened_params = any([project, backend_bucket, backend_bucket_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -759,21 +1406,23 @@ def get(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetBackendBucketRequest.
+ # in a compute.PatchBackendBucketRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetBackendBucketRequest):
- request = compute.GetBackendBucketRequest(request)
+ if not isinstance(request, compute.PatchBackendBucketRequest):
+ request = compute.PatchBackendBucketRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if backend_bucket is not None:
request.backend_bucket = backend_bucket
+ if backend_bucket_resource is not None:
+ request.backend_bucket_resource = backend_bucket_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get]
+ rpc = self._transport._wrapped_methods[self._transport.patch]
# Send the request.
response = rpc(
@@ -786,29 +1435,39 @@ def get(
# Done; return the response.
return response
- def insert_unary(
+ def patch(
self,
- request: Union[compute.InsertBackendBucketRequest, dict] = None,
+ request: Union[compute.PatchBackendBucketRequest, dict] = None,
*,
project: str = None,
+ backend_bucket: str = None,
backend_bucket_resource: compute.BackendBucket = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Creates a BackendBucket resource in the specified
- project using the data included in the request.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified BackendBucket resource with the
+ data included in the request. This method supports PATCH
+ semantics and uses the JSON merge patch format and
+ processing rules.
Args:
- request (Union[google.cloud.compute_v1.types.InsertBackendBucketRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.PatchBackendBucketRequest, dict]):
The request object. A request message for
- BackendBuckets.Insert. See the method description for
+ BackendBuckets.Patch. See the method description for
details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ backend_bucket (str):
+ Name of the BackendBucket resource to
+ patch.
+
+ This corresponds to the ``backend_bucket`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
backend_bucket_resource (google.cloud.compute_v1.types.BackendBucket):
The body resource for this request
This corresponds to the ``backend_bucket_resource`` field
@@ -821,28 +1480,15 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, backend_bucket_resource])
+ has_flattened_params = any([project, backend_bucket, backend_bucket_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -850,21 +1496,23 @@ def insert_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.InsertBackendBucketRequest.
+ # in a compute.PatchBackendBucketRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.InsertBackendBucketRequest):
- request = compute.InsertBackendBucketRequest(request)
+ if not isinstance(request, compute.PatchBackendBucketRequest):
+ request = compute.PatchBackendBucketRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
+ if backend_bucket is not None:
+ request.backend_bucket = backend_bucket
if backend_bucket_resource is not None:
request.backend_bucket_resource = backend_bucket_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.insert]
+ rpc = self._transport._wrapped_methods[self._transport.patch]
# Send the request.
response = rpc(
@@ -874,31 +1522,70 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def list(
+ def set_edge_security_policy_unary(
self,
- request: Union[compute.ListBackendBucketsRequest, dict] = None,
+ request: Union[compute.SetEdgeSecurityPolicyBackendBucketRequest, dict] = None,
*,
project: str = None,
+ backend_bucket: str = None,
+ security_policy_reference_resource: compute.SecurityPolicyReference = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListPager:
- r"""Retrieves the list of BackendBucket resources
- available to the specified project.
+ ) -> compute.Operation:
+ r"""Sets the edge security policy for the specified
+ backend bucket.
Args:
- request (Union[google.cloud.compute_v1.types.ListBackendBucketsRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetEdgeSecurityPolicyBackendBucketRequest, dict]):
The request object. A request message for
- BackendBuckets.List. See the method description for
- details.
+ BackendBuckets.SetEdgeSecurityPolicy. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ backend_bucket (str):
+ Name of the BackendService resource
+ to which the security policy should be
+ set. The name should conform to RFC1035.
+
+ This corresponds to the ``backend_bucket`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy_reference_resource (google.cloud.compute_v1.types.SecurityPolicyReference):
+ The body resource for this request
+ This corresponds to the ``security_policy_reference_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -906,18 +1593,17 @@ def list(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.backend_buckets.pagers.ListPager:
- Contains a list of BackendBucket
- resources.
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project])
+ has_flattened_params = any(
+ [project, backend_bucket, security_policy_reference_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -925,19 +1611,25 @@ def list(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListBackendBucketsRequest.
+ # in a compute.SetEdgeSecurityPolicyBackendBucketRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ListBackendBucketsRequest):
- request = compute.ListBackendBucketsRequest(request)
+ if not isinstance(request, compute.SetEdgeSecurityPolicyBackendBucketRequest):
+ request = compute.SetEdgeSecurityPolicyBackendBucketRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
+ if backend_bucket is not None:
+ request.backend_bucket = backend_bucket
+ if security_policy_reference_resource is not None:
+ request.security_policy_reference_resource = (
+ security_policy_reference_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list]
+ rpc = self._transport._wrapped_methods[self._transport.set_edge_security_policy]
# Send the request.
response = rpc(
@@ -947,54 +1639,44 @@ def list(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
-
# Done; return the response.
return response
- def patch_unary(
+ def set_edge_security_policy(
self,
- request: Union[compute.PatchBackendBucketRequest, dict] = None,
+ request: Union[compute.SetEdgeSecurityPolicyBackendBucketRequest, dict] = None,
*,
project: str = None,
backend_bucket: str = None,
- backend_bucket_resource: compute.BackendBucket = None,
+ security_policy_reference_resource: compute.SecurityPolicyReference = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Updates the specified BackendBucket resource with the
- data included in the request. This method supports PATCH
- semantics and uses the JSON merge patch format and
- processing rules.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the edge security policy for the specified
+ backend bucket.
Args:
- request (Union[google.cloud.compute_v1.types.PatchBackendBucketRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetEdgeSecurityPolicyBackendBucketRequest, dict]):
The request object. A request message for
- BackendBuckets.Patch. See the method description for
- details.
+ BackendBuckets.SetEdgeSecurityPolicy. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
backend_bucket (str):
- Name of the BackendBucket resource to
- patch.
+ Name of the BackendService resource
+ to which the security policy should be
+ set. The name should conform to RFC1035.
This corresponds to the ``backend_bucket`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- backend_bucket_resource (google.cloud.compute_v1.types.BackendBucket):
+ security_policy_reference_resource (google.cloud.compute_v1.types.SecurityPolicyReference):
The body resource for this request
- This corresponds to the ``backend_bucket_resource`` field
+ This corresponds to the ``security_policy_reference_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1004,28 +1686,17 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, backend_bucket, backend_bucket_resource])
+ has_flattened_params = any(
+ [project, backend_bucket, security_policy_reference_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1033,23 +1704,25 @@ def patch_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.PatchBackendBucketRequest.
+ # in a compute.SetEdgeSecurityPolicyBackendBucketRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.PatchBackendBucketRequest):
- request = compute.PatchBackendBucketRequest(request)
+ if not isinstance(request, compute.SetEdgeSecurityPolicyBackendBucketRequest):
+ request = compute.SetEdgeSecurityPolicyBackendBucketRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if backend_bucket is not None:
request.backend_bucket = backend_bucket
- if backend_bucket_resource is not None:
- request.backend_bucket_resource = backend_bucket_resource
+ if security_policy_reference_resource is not None:
+ request.security_policy_reference_resource = (
+ security_policy_reference_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.patch]
+ rpc = self._transport._wrapped_methods[self._transport.set_edge_security_policy]
# Send the request.
response = rpc(
@@ -1059,44 +1732,67 @@ def patch_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def set_edge_security_policy_unary(
+ def update_unary(
self,
- request: Union[compute.SetEdgeSecurityPolicyBackendBucketRequest, dict] = None,
+ request: Union[compute.UpdateBackendBucketRequest, dict] = None,
*,
project: str = None,
backend_bucket: str = None,
- security_policy_reference_resource: compute.SecurityPolicyReference = None,
+ backend_bucket_resource: compute.BackendBucket = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Sets the edge security policy for the specified
- backend bucket.
+ r"""Updates the specified BackendBucket resource with the
+ data included in the request.
Args:
- request (Union[google.cloud.compute_v1.types.SetEdgeSecurityPolicyBackendBucketRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.UpdateBackendBucketRequest, dict]):
The request object. A request message for
- BackendBuckets.SetEdgeSecurityPolicy. See the method
- description for details.
+ BackendBuckets.Update. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
backend_bucket (str):
- Name of the BackendService resource
- to which the security policy should be
- set. The name should conform to RFC1035.
+ Name of the BackendBucket resource to
+ update.
This corresponds to the ``backend_bucket`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- security_policy_reference_resource (google.cloud.compute_v1.types.SecurityPolicyReference):
+ backend_bucket_resource (google.cloud.compute_v1.types.BackendBucket):
The body resource for this request
- This corresponds to the ``security_policy_reference_resource`` field
+ This corresponds to the ``backend_bucket_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1106,30 +1802,15 @@ def set_edge_security_policy_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, backend_bucket, security_policy_reference_resource]
- )
+ has_flattened_params = any([project, backend_bucket, backend_bucket_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1137,25 +1818,23 @@ def set_edge_security_policy_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetEdgeSecurityPolicyBackendBucketRequest.
+ # in a compute.UpdateBackendBucketRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetEdgeSecurityPolicyBackendBucketRequest):
- request = compute.SetEdgeSecurityPolicyBackendBucketRequest(request)
+ if not isinstance(request, compute.UpdateBackendBucketRequest):
+ request = compute.UpdateBackendBucketRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if backend_bucket is not None:
request.backend_bucket = backend_bucket
- if security_policy_reference_resource is not None:
- request.security_policy_reference_resource = (
- security_policy_reference_resource
- )
+ if backend_bucket_resource is not None:
+ request.backend_bucket_resource = backend_bucket_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_edge_security_policy]
+ rpc = self._transport._wrapped_methods[self._transport.update]
# Send the request.
response = rpc(
@@ -1168,7 +1847,7 @@ def set_edge_security_policy_unary(
# Done; return the response.
return response
- def update_unary(
+ def update(
self,
request: Union[compute.UpdateBackendBucketRequest, dict] = None,
*,
@@ -1178,7 +1857,7 @@ def update_unary(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
+ ) -> extended_operation.ExtendedOperation:
r"""Updates the specified BackendBucket resource with the
data included in the request.
@@ -1211,22 +1890,9 @@ def update_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1266,6 +1932,30 @@ def update_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/backend_buckets/transports/base.py b/google/cloud/compute_v1/services/backend_buckets/transports/base.py
index 6740ea3e9..da8fd23b0 100644
--- a/google/cloud/compute_v1/services/backend_buckets/transports/base.py
+++ b/google/cloud/compute_v1/services/backend_buckets/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -260,5 +263,21 @@ def update(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("BackendBucketsTransport",)
diff --git a/google/cloud/compute_v1/services/backend_buckets/transports/rest.py b/google/cloud/compute_v1/services/backend_buckets/transports/rest.py
index a45c05b44..c2fb5d899 100644
--- a/google/cloud/compute_v1/services/backend_buckets/transports/rest.py
+++ b/google/cloud/compute_v1/services/backend_buckets/transports/rest.py
@@ -1523,6 +1523,10 @@ def update(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/backend_services/client.py b/google/cloud/compute_v1/services/backend_services/client.py
index d4d40b2b6..098415104 100644
--- a/google/cloud/compute_v1/services/backend_services/client.py
+++ b/google/cloud/compute_v1/services/backend_services/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.backend_services import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import BackendServicesTransport, DEFAULT_CLIENT_INFO
@@ -447,22 +450,99 @@ def add_signed_url_key_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, backend_service, signed_url_key_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.AddSignedUrlKeyBackendServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.AddSignedUrlKeyBackendServiceRequest):
+ request = compute.AddSignedUrlKeyBackendServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if backend_service is not None:
+ request.backend_service = backend_service
+ if signed_url_key_resource is not None:
+ request.signed_url_key_resource = signed_url_key_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.add_signed_url_key]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def add_signed_url_key(
+ self,
+ request: Union[compute.AddSignedUrlKeyBackendServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ backend_service: str = None,
+ signed_url_key_resource: compute.SignedUrlKey = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Adds a key for validating requests with signed URLs
+ for this backend service.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.AddSignedUrlKeyBackendServiceRequest, dict]):
+ The request object. A request message for
+ BackendServices.AddSignedUrlKey. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_service (str):
+ Name of the BackendService resource
+ to which the Signed URL Key should be
+ added. The name should conform to
+ RFC1035.
+
+ This corresponds to the ``backend_service`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ signed_url_key_resource (google.cloud.compute_v1.types.SignedUrlKey):
+ The body resource for this request
+ This corresponds to the ``signed_url_key_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -502,6 +582,30 @@ def add_signed_url_key_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -625,22 +729,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -681,25 +772,23 @@ def delete_unary(
# Done; return the response.
return response
- def delete_signed_url_key_unary(
+ def delete(
self,
- request: Union[compute.DeleteSignedUrlKeyBackendServiceRequest, dict] = None,
+ request: Union[compute.DeleteBackendServiceRequest, dict] = None,
*,
project: str = None,
backend_service: str = None,
- key_name: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Deletes a key for validating requests with signed
- URLs for this backend service.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified BackendService resource.
Args:
- request (Union[google.cloud.compute_v1.types.DeleteSignedUrlKeyBackendServiceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteBackendServiceRequest, dict]):
The request object. A request message for
- BackendServices.DeleteSignedUrlKey. See the method
- description for details.
+ BackendServices.Delete. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -707,20 +796,11 @@ def delete_signed_url_key_unary(
should not be set.
backend_service (str):
Name of the BackendService resource
- to which the Signed URL Key should be
- added. The name should conform to
- RFC1035.
+ to delete.
This corresponds to the ``backend_service`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- key_name (str):
- The name of the Signed URL Key to
- delete.
-
- This corresponds to the ``key_name`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -728,28 +808,15 @@ def delete_signed_url_key_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, backend_service, key_name])
+ has_flattened_params = any([project, backend_service])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -757,23 +824,21 @@ def delete_signed_url_key_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.DeleteSignedUrlKeyBackendServiceRequest.
+ # in a compute.DeleteBackendServiceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.DeleteSignedUrlKeyBackendServiceRequest):
- request = compute.DeleteSignedUrlKeyBackendServiceRequest(request)
+ if not isinstance(request, compute.DeleteBackendServiceRequest):
+ request = compute.DeleteBackendServiceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if backend_service is not None:
request.backend_service = backend_service
- if key_name is not None:
- request.key_name = key_name
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.delete_signed_url_key]
+ rpc = self._transport._wrapped_methods[self._transport.delete]
# Send the request.
response = rpc(
@@ -783,27 +848,52 @@ def delete_signed_url_key_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def get(
+ def delete_signed_url_key_unary(
self,
- request: Union[compute.GetBackendServiceRequest, dict] = None,
+ request: Union[compute.DeleteSignedUrlKeyBackendServiceRequest, dict] = None,
*,
project: str = None,
backend_service: str = None,
+ key_name: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.BackendService:
- r"""Returns the specified BackendService resource. Gets a
- list of available backend services.
+ ) -> compute.Operation:
+ r"""Deletes a key for validating requests with signed
+ URLs for this backend service.
Args:
- request (Union[google.cloud.compute_v1.types.GetBackendServiceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteSignedUrlKeyBackendServiceRequest, dict]):
The request object. A request message for
- BackendServices.Get. See the method description for
- details.
+ BackendServices.DeleteSignedUrlKey. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -811,11 +901,20 @@ def get(
should not be set.
backend_service (str):
Name of the BackendService resource
- to return.
+ to which the Signed URL Key should be
+ added. The name should conform to
+ RFC1035.
This corresponds to the ``backend_service`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ key_name (str):
+ The name of the Signed URL Key to
+ delete.
+
+ This corresponds to the ``key_name`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -823,28 +922,15 @@ def get(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.BackendService:
- Represents a Backend Service resource. A backend service
- defines how Google Cloud load balancers distribute
- traffic. The backend service configuration contains a
- set of values, such as the protocol used to connect to
- backends, various distribution and session settings,
- health checks, and timeouts. These settings provide
- fine-grained control over how your load balancer
- behaves. Most of the settings have default values that
- allow for easy configuration if you need to get started
- quickly. Backend services in Google Compute Engine can
- be either regionally or globally scoped. \*
- [Global](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices)
- \*
- [Regional](https://cloud.google.com/compute/docs/reference/rest/v1/regionBackendServices)
- For more information, see Backend Services.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, backend_service])
+ has_flattened_params = any([project, backend_service, key_name])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -852,21 +938,23 @@ def get(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetBackendServiceRequest.
+ # in a compute.DeleteSignedUrlKeyBackendServiceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetBackendServiceRequest):
- request = compute.GetBackendServiceRequest(request)
+ if not isinstance(request, compute.DeleteSignedUrlKeyBackendServiceRequest):
+ request = compute.DeleteSignedUrlKeyBackendServiceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if backend_service is not None:
request.backend_service = backend_service
+ if key_name is not None:
+ request.key_name = key_name
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get]
+ rpc = self._transport._wrapped_methods[self._transport.delete_signed_url_key]
# Send the request.
response = rpc(
@@ -879,41 +967,44 @@ def get(
# Done; return the response.
return response
- def get_health(
+ def delete_signed_url_key(
self,
- request: Union[compute.GetHealthBackendServiceRequest, dict] = None,
+ request: Union[compute.DeleteSignedUrlKeyBackendServiceRequest, dict] = None,
*,
project: str = None,
backend_service: str = None,
- resource_group_reference_resource: compute.ResourceGroupReference = None,
+ key_name: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.BackendServiceGroupHealth:
- r"""Gets the most recent health check results for this
- BackendService. Example request body: { "group":
- "/zones/us-east1-b/instanceGroups/lb-backend-example" }
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes a key for validating requests with signed
+ URLs for this backend service.
Args:
- request (Union[google.cloud.compute_v1.types.GetHealthBackendServiceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteSignedUrlKeyBackendServiceRequest, dict]):
The request object. A request message for
- BackendServices.GetHealth. See the method description
- for details.
+ BackendServices.DeleteSignedUrlKey. See the method
+ description for details.
project (str):
-
+ Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
backend_service (str):
Name of the BackendService resource
- to which the queried instance belongs.
+ to which the Signed URL Key should be
+ added. The name should conform to
+ RFC1035.
This corresponds to the ``backend_service`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- resource_group_reference_resource (google.cloud.compute_v1.types.ResourceGroupReference):
- The body resource for this request
- This corresponds to the ``resource_group_reference_resource`` field
+ key_name (str):
+ The name of the Signed URL Key to
+ delete.
+
+ This corresponds to the ``key_name`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -923,15 +1014,15 @@ def get_health(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.BackendServiceGroupHealth:
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, backend_service, resource_group_reference_resource]
- )
+ has_flattened_params = any([project, backend_service, key_name])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -939,25 +1030,677 @@ def get_health(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetHealthBackendServiceRequest.
+ # in a compute.DeleteSignedUrlKeyBackendServiceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetHealthBackendServiceRequest):
- request = compute.GetHealthBackendServiceRequest(request)
+ if not isinstance(request, compute.DeleteSignedUrlKeyBackendServiceRequest):
+ request = compute.DeleteSignedUrlKeyBackendServiceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if backend_service is not None:
request.backend_service = backend_service
- if resource_group_reference_resource is not None:
- request.resource_group_reference_resource = (
- resource_group_reference_resource
- )
+ if key_name is not None:
+ request.key_name = key_name
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete_signed_url_key]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def get(
+ self,
+ request: Union[compute.GetBackendServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ backend_service: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.BackendService:
+ r"""Returns the specified BackendService resource. Gets a
+ list of available backend services.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetBackendServiceRequest, dict]):
+ The request object. A request message for
+ BackendServices.Get. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_service (str):
+ Name of the BackendService resource
+ to return.
+
+ This corresponds to the ``backend_service`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.BackendService:
+ Represents a Backend Service resource. A backend service
+ defines how Google Cloud load balancers distribute
+ traffic. The backend service configuration contains a
+ set of values, such as the protocol used to connect to
+ backends, various distribution and session settings,
+ health checks, and timeouts. These settings provide
+ fine-grained control over how your load balancer
+ behaves. Most of the settings have default values that
+ allow for easy configuration if you need to get started
+ quickly. Backend services in Google Compute Engine can
+ be either regionally or globally scoped. \*
+ [Global](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices)
+ \*
+ [Regional](https://cloud.google.com/compute/docs/reference/rest/v1/regionBackendServices)
+ For more information, see Backend Services.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, backend_service])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetBackendServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetBackendServiceRequest):
+ request = compute.GetBackendServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if backend_service is not None:
+ request.backend_service = backend_service
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_health(
+ self,
+ request: Union[compute.GetHealthBackendServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ backend_service: str = None,
+ resource_group_reference_resource: compute.ResourceGroupReference = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.BackendServiceGroupHealth:
+ r"""Gets the most recent health check results for this
+ BackendService. Example request body: { "group":
+ "/zones/us-east1-b/instanceGroups/lb-backend-example" }
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetHealthBackendServiceRequest, dict]):
+ The request object. A request message for
+ BackendServices.GetHealth. See the method description
+ for details.
+ project (str):
+
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_service (str):
+ Name of the BackendService resource
+ to which the queried instance belongs.
+
+ This corresponds to the ``backend_service`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource_group_reference_resource (google.cloud.compute_v1.types.ResourceGroupReference):
+ The body resource for this request
+ This corresponds to the ``resource_group_reference_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.BackendServiceGroupHealth:
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, backend_service, resource_group_reference_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetHealthBackendServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetHealthBackendServiceRequest):
+ request = compute.GetHealthBackendServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if backend_service is not None:
+ request.backend_service = backend_service
+ if resource_group_reference_resource is not None:
+ request.resource_group_reference_resource = (
+ resource_group_reference_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_health]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert_unary(
+ self,
+ request: Union[compute.InsertBackendServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ backend_service_resource: compute.BackendService = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Creates a BackendService resource in the specified
+ project using the data included in the request. For more
+ information, see Backend services overview .
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertBackendServiceRequest, dict]):
+ The request object. A request message for
+ BackendServices.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_service_resource (google.cloud.compute_v1.types.BackendService):
+ The body resource for this request
+ This corresponds to the ``backend_service_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, backend_service_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertBackendServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertBackendServiceRequest):
+ request = compute.InsertBackendServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if backend_service_resource is not None:
+ request.backend_service_resource = backend_service_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertBackendServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ backend_service_resource: compute.BackendService = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a BackendService resource in the specified
+ project using the data included in the request. For more
+ information, see Backend services overview .
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertBackendServiceRequest, dict]):
+ The request object. A request message for
+ BackendServices.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_service_resource (google.cloud.compute_v1.types.BackendService):
+ The body resource for this request
+ This corresponds to the ``backend_service_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, backend_service_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertBackendServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertBackendServiceRequest):
+ request = compute.InsertBackendServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if backend_service_resource is not None:
+ request.backend_service_resource = backend_service_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def list(
+ self,
+ request: Union[compute.ListBackendServicesRequest, dict] = None,
+ *,
+ project: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListPager:
+ r"""Retrieves the list of BackendService resources
+ available to the specified project.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListBackendServicesRequest, dict]):
+ The request object. A request message for
+ BackendServices.List. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.backend_services.pagers.ListPager:
+ Contains a list of BackendService
+ resources.
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListBackendServicesRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ListBackendServicesRequest):
+ request = compute.ListBackendServicesRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch_unary(
+ self,
+ request: Union[compute.PatchBackendServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ backend_service: str = None,
+ backend_service_resource: compute.BackendService = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Patches the specified BackendService resource with
+ the data included in the request. For more information,
+ see Backend services overview. This method supports
+ PATCH semantics and uses the JSON merge patch format and
+ processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchBackendServiceRequest, dict]):
+ The request object. A request message for
+ BackendServices.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_service (str):
+ Name of the BackendService resource
+ to patch.
+
+ This corresponds to the ``backend_service`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_service_resource (google.cloud.compute_v1.types.BackendService):
+ The body resource for this request
+ This corresponds to the ``backend_service_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, backend_service, backend_service_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchBackendServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchBackendServiceRequest):
+ request = compute.PatchBackendServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if backend_service is not None:
+ request.backend_service = backend_service
+ if backend_service_resource is not None:
+ request.backend_service_resource = backend_service_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch(
+ self,
+ request: Union[compute.PatchBackendServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ backend_service: str = None,
+ backend_service_resource: compute.BackendService = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified BackendService resource with
+ the data included in the request. For more information,
+ see Backend services overview. This method supports
+ PATCH semantics and uses the JSON merge patch format and
+ processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchBackendServiceRequest, dict]):
+ The request object. A request message for
+ BackendServices.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_service (str):
+ Name of the BackendService resource
+ to patch.
+
+ This corresponds to the ``backend_service`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_service_resource (google.cloud.compute_v1.types.BackendService):
+ The body resource for this request
+ This corresponds to the ``backend_service_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, backend_service, backend_service_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchBackendServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchBackendServiceRequest):
+ request = compute.PatchBackendServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if backend_service is not None:
+ request.backend_service = backend_service
+ if backend_service_resource is not None:
+ request.backend_service_resource = backend_service_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_health]
+ rpc = self._transport._wrapped_methods[self._transport.patch]
# Send the request.
response = rpc(
@@ -967,36 +1710,69 @@ def get_health(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def insert_unary(
+ def set_edge_security_policy_unary(
self,
- request: Union[compute.InsertBackendServiceRequest, dict] = None,
+ request: Union[compute.SetEdgeSecurityPolicyBackendServiceRequest, dict] = None,
*,
project: str = None,
- backend_service_resource: compute.BackendService = None,
+ backend_service: str = None,
+ security_policy_reference_resource: compute.SecurityPolicyReference = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Creates a BackendService resource in the specified
- project using the data included in the request. For more
- information, see Backend services overview .
+ r"""Sets the edge security policy for the specified
+ backend service.
Args:
- request (Union[google.cloud.compute_v1.types.InsertBackendServiceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetEdgeSecurityPolicyBackendServiceRequest, dict]):
The request object. A request message for
- BackendServices.Insert. See the method description for
- details.
+ BackendServices.SetEdgeSecurityPolicy. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- backend_service_resource (google.cloud.compute_v1.types.BackendService):
+ backend_service (str):
+ Name of the BackendService resource
+ to which the edge security policy should
+ be set. The name should conform to
+ RFC1035.
+
+ This corresponds to the ``backend_service`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy_reference_resource (google.cloud.compute_v1.types.SecurityPolicyReference):
The body resource for this request
- This corresponds to the ``backend_service_resource`` field
+ This corresponds to the ``security_policy_reference_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1006,28 +1782,17 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, backend_service_resource])
+ has_flattened_params = any(
+ [project, backend_service, security_policy_reference_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1035,21 +1800,25 @@ def insert_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.InsertBackendServiceRequest.
+ # in a compute.SetEdgeSecurityPolicyBackendServiceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.InsertBackendServiceRequest):
- request = compute.InsertBackendServiceRequest(request)
+ if not isinstance(request, compute.SetEdgeSecurityPolicyBackendServiceRequest):
+ request = compute.SetEdgeSecurityPolicyBackendServiceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
- if backend_service_resource is not None:
- request.backend_service_resource = backend_service_resource
+ if backend_service is not None:
+ request.backend_service = backend_service
+ if security_policy_reference_resource is not None:
+ request.security_policy_reference_resource = (
+ security_policy_reference_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.insert]
+ rpc = self._transport._wrapped_methods[self._transport.set_edge_security_policy]
# Send the request.
response = rpc(
@@ -1062,28 +1831,44 @@ def insert_unary(
# Done; return the response.
return response
- def list(
+ def set_edge_security_policy(
self,
- request: Union[compute.ListBackendServicesRequest, dict] = None,
+ request: Union[compute.SetEdgeSecurityPolicyBackendServiceRequest, dict] = None,
*,
project: str = None,
+ backend_service: str = None,
+ security_policy_reference_resource: compute.SecurityPolicyReference = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListPager:
- r"""Retrieves the list of BackendService resources
- available to the specified project.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the edge security policy for the specified
+ backend service.
Args:
- request (Union[google.cloud.compute_v1.types.ListBackendServicesRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetEdgeSecurityPolicyBackendServiceRequest, dict]):
The request object. A request message for
- BackendServices.List. See the method description for
- details.
+ BackendServices.SetEdgeSecurityPolicy. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ backend_service (str):
+ Name of the BackendService resource
+ to which the edge security policy should
+ be set. The name should conform to
+ RFC1035.
+
+ This corresponds to the ``backend_service`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy_reference_resource (google.cloud.compute_v1.types.SecurityPolicyReference):
+ The body resource for this request
+ This corresponds to the ``security_policy_reference_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1091,18 +1876,17 @@ def list(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.backend_services.pagers.ListPager:
- Contains a list of BackendService
- resources.
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project])
+ has_flattened_params = any(
+ [project, backend_service, security_policy_reference_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1110,19 +1894,25 @@ def list(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListBackendServicesRequest.
+ # in a compute.SetEdgeSecurityPolicyBackendServiceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ListBackendServicesRequest):
- request = compute.ListBackendServicesRequest(request)
+ if not isinstance(request, compute.SetEdgeSecurityPolicyBackendServiceRequest):
+ request = compute.SetEdgeSecurityPolicyBackendServiceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
+ if backend_service is not None:
+ request.backend_service = backend_service
+ if security_policy_reference_resource is not None:
+ request.security_policy_reference_resource = (
+ security_policy_reference_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list]
+ rpc = self._transport._wrapped_methods[self._transport.set_edge_security_policy]
# Send the request.
response = rpc(
@@ -1132,40 +1922,53 @@ def list(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
# Done; return the response.
return response
- def patch_unary(
+ def set_security_policy_unary(
self,
- request: Union[compute.PatchBackendServiceRequest, dict] = None,
+ request: Union[compute.SetSecurityPolicyBackendServiceRequest, dict] = None,
*,
project: str = None,
backend_service: str = None,
- backend_service_resource: compute.BackendService = None,
+ security_policy_reference_resource: compute.SecurityPolicyReference = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Patches the specified BackendService resource with
- the data included in the request. For more information,
- see Backend services overview. This method supports
- PATCH semantics and uses the JSON merge patch format and
- processing rules.
+ r"""Sets the Google Cloud Armor security policy for the
+ specified backend service. For more information, see
+ Google Cloud Armor Overview
Args:
- request (Union[google.cloud.compute_v1.types.PatchBackendServiceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetSecurityPolicyBackendServiceRequest, dict]):
The request object. A request message for
- BackendServices.Patch. See the method description for
- details.
+ BackendServices.SetSecurityPolicy. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1173,14 +1976,15 @@ def patch_unary(
should not be set.
backend_service (str):
Name of the BackendService resource
- to patch.
+ to which the security policy should be
+ set. The name should conform to RFC1035.
This corresponds to the ``backend_service`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- backend_service_resource (google.cloud.compute_v1.types.BackendService):
+ security_policy_reference_resource (google.cloud.compute_v1.types.SecurityPolicyReference):
The body resource for this request
- This corresponds to the ``backend_service_resource`` field
+ This corresponds to the ``security_policy_reference_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1190,28 +1994,17 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, backend_service, backend_service_resource])
+ has_flattened_params = any(
+ [project, backend_service, security_policy_reference_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1219,23 +2012,25 @@ def patch_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.PatchBackendServiceRequest.
+ # in a compute.SetSecurityPolicyBackendServiceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.PatchBackendServiceRequest):
- request = compute.PatchBackendServiceRequest(request)
+ if not isinstance(request, compute.SetSecurityPolicyBackendServiceRequest):
+ request = compute.SetSecurityPolicyBackendServiceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if backend_service is not None:
request.backend_service = backend_service
- if backend_service_resource is not None:
- request.backend_service_resource = backend_service_resource
+ if security_policy_reference_resource is not None:
+ request.security_policy_reference_resource = (
+ security_policy_reference_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.patch]
+ rpc = self._transport._wrapped_methods[self._transport.set_security_policy]
# Send the request.
response = rpc(
@@ -1248,9 +2043,9 @@ def patch_unary(
# Done; return the response.
return response
- def set_edge_security_policy_unary(
+ def set_security_policy(
self,
- request: Union[compute.SetEdgeSecurityPolicyBackendServiceRequest, dict] = None,
+ request: Union[compute.SetSecurityPolicyBackendServiceRequest, dict] = None,
*,
project: str = None,
backend_service: str = None,
@@ -1258,14 +2053,15 @@ def set_edge_security_policy_unary(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Sets the edge security policy for the specified
- backend service.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the Google Cloud Armor security policy for the
+ specified backend service. For more information, see
+ Google Cloud Armor Overview
Args:
- request (Union[google.cloud.compute_v1.types.SetEdgeSecurityPolicyBackendServiceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetSecurityPolicyBackendServiceRequest, dict]):
The request object. A request message for
- BackendServices.SetEdgeSecurityPolicy. See the method
+ BackendServices.SetSecurityPolicy. See the method
description for details.
project (str):
Project ID for this request.
@@ -1274,9 +2070,8 @@ def set_edge_security_policy_unary(
should not be set.
backend_service (str):
Name of the BackendService resource
- to which the edge security policy should
- be set. The name should conform to
- RFC1035.
+ to which the security policy should be
+ set. The name should conform to RFC1035.
This corresponds to the ``backend_service`` field
on the ``request`` instance; if ``request`` is provided, this
@@ -1293,22 +2088,9 @@ def set_edge_security_policy_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1324,11 +2106,11 @@ def set_edge_security_policy_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetEdgeSecurityPolicyBackendServiceRequest.
+ # in a compute.SetSecurityPolicyBackendServiceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetEdgeSecurityPolicyBackendServiceRequest):
- request = compute.SetEdgeSecurityPolicyBackendServiceRequest(request)
+ if not isinstance(request, compute.SetSecurityPolicyBackendServiceRequest):
+ request = compute.SetSecurityPolicyBackendServiceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1342,7 +2124,7 @@ def set_edge_security_policy_unary(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_edge_security_policy]
+ rpc = self._transport._wrapped_methods[self._transport.set_security_policy]
# Send the request.
response = rpc(
@@ -1352,29 +2134,53 @@ def set_edge_security_policy_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def set_security_policy_unary(
+ def update_unary(
self,
- request: Union[compute.SetSecurityPolicyBackendServiceRequest, dict] = None,
+ request: Union[compute.UpdateBackendServiceRequest, dict] = None,
*,
project: str = None,
backend_service: str = None,
- security_policy_reference_resource: compute.SecurityPolicyReference = None,
+ backend_service_resource: compute.BackendService = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Sets the Google Cloud Armor security policy for the
- specified backend service. For more information, see
- Google Cloud Armor Overview
+ r"""Updates the specified BackendService resource with
+ the data included in the request. For more information,
+ see Backend services overview.
Args:
- request (Union[google.cloud.compute_v1.types.SetSecurityPolicyBackendServiceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.UpdateBackendServiceRequest, dict]):
The request object. A request message for
- BackendServices.SetSecurityPolicy. See the method
- description for details.
+ BackendServices.Update. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1382,15 +2188,14 @@ def set_security_policy_unary(
should not be set.
backend_service (str):
Name of the BackendService resource
- to which the security policy should be
- set. The name should conform to RFC1035.
+ to update.
This corresponds to the ``backend_service`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- security_policy_reference_resource (google.cloud.compute_v1.types.SecurityPolicyReference):
+ backend_service_resource (google.cloud.compute_v1.types.BackendService):
The body resource for this request
- This corresponds to the ``security_policy_reference_resource`` field
+ This corresponds to the ``backend_service_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1400,30 +2205,15 @@ def set_security_policy_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, backend_service, security_policy_reference_resource]
- )
+ has_flattened_params = any([project, backend_service, backend_service_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1431,25 +2221,23 @@ def set_security_policy_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetSecurityPolicyBackendServiceRequest.
+ # in a compute.UpdateBackendServiceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetSecurityPolicyBackendServiceRequest):
- request = compute.SetSecurityPolicyBackendServiceRequest(request)
+ if not isinstance(request, compute.UpdateBackendServiceRequest):
+ request = compute.UpdateBackendServiceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if backend_service is not None:
request.backend_service = backend_service
- if security_policy_reference_resource is not None:
- request.security_policy_reference_resource = (
- security_policy_reference_resource
- )
+ if backend_service_resource is not None:
+ request.backend_service_resource = backend_service_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_security_policy]
+ rpc = self._transport._wrapped_methods[self._transport.update]
# Send the request.
response = rpc(
@@ -1462,7 +2250,7 @@ def set_security_policy_unary(
# Done; return the response.
return response
- def update_unary(
+ def update(
self,
request: Union[compute.UpdateBackendServiceRequest, dict] = None,
*,
@@ -1472,7 +2260,7 @@ def update_unary(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
+ ) -> extended_operation.ExtendedOperation:
r"""Updates the specified BackendService resource with
the data included in the request. For more information,
see Backend services overview.
@@ -1506,22 +2294,9 @@ def update_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1561,6 +2336,30 @@ def update_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/backend_services/transports/base.py b/google/cloud/compute_v1/services/backend_services/transports/base.py
index c83dceae5..0136b20cc 100644
--- a/google/cloud/compute_v1/services/backend_services/transports/base.py
+++ b/google/cloud/compute_v1/services/backend_services/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -308,5 +311,21 @@ def update(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("BackendServicesTransport",)
diff --git a/google/cloud/compute_v1/services/backend_services/transports/rest.py b/google/cloud/compute_v1/services/backend_services/transports/rest.py
index 9bc043175..ddf57782f 100644
--- a/google/cloud/compute_v1/services/backend_services/transports/rest.py
+++ b/google/cloud/compute_v1/services/backend_services/transports/rest.py
@@ -1984,6 +1984,10 @@ def update(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/disk_types/client.py b/google/cloud/compute_v1/services/disk_types/client.py
index 3df0e6401..d7eec993e 100644
--- a/google/cloud/compute_v1/services/disk_types/client.py
+++ b/google/cloud/compute_v1/services/disk_types/client.py
@@ -16,7 +16,7 @@
from collections import OrderedDict
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
diff --git a/google/cloud/compute_v1/services/disk_types/transports/base.py b/google/cloud/compute_v1/services/disk_types/transports/base.py
index b5faaa609..a72169361 100644
--- a/google/cloud/compute_v1/services/disk_types/transports/base.py
+++ b/google/cloud/compute_v1/services/disk_types/transports/base.py
@@ -84,6 +84,7 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -179,5 +180,9 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
__all__ = ("DiskTypesTransport",)
diff --git a/google/cloud/compute_v1/services/disk_types/transports/rest.py b/google/cloud/compute_v1/services/disk_types/transports/rest.py
index 298251795..6734a921a 100644
--- a/google/cloud/compute_v1/services/disk_types/transports/rest.py
+++ b/google/cloud/compute_v1/services/disk_types/transports/rest.py
@@ -561,6 +561,10 @@ def list(self) -> Callable[[compute.ListDiskTypesRequest], compute.DiskTypeList]
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/disks/client.py b/google/cloud/compute_v1/services/disks/client.py
index 76562a4b1..2e585f517 100644
--- a/google/cloud/compute_v1/services/disks/client.py
+++ b/google/cloud/compute_v1/services/disks/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.disks import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import DisksTransport, DEFAULT_CLIENT_INFO
@@ -450,22 +453,9 @@ def add_resource_policies_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -514,6 +504,132 @@ def add_resource_policies_unary(
# Done; return the response.
return response
+ def add_resource_policies(
+ self,
+ request: Union[compute.AddResourcePoliciesDiskRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ disk: str = None,
+ disks_add_resource_policies_request_resource: compute.DisksAddResourcePoliciesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Adds existing resource policies to a disk. You can
+ only add one policy which will be applied to this disk
+ for scheduling snapshot creation.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.AddResourcePoliciesDiskRequest, dict]):
+ The request object. A request message for
+ Disks.AddResourcePolicies. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ disk (str):
+ The disk name for this request.
+ This corresponds to the ``disk`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ disks_add_resource_policies_request_resource (google.cloud.compute_v1.types.DisksAddResourcePoliciesRequest):
+ The body resource for this request
+ This corresponds to the ``disks_add_resource_policies_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, disk, disks_add_resource_policies_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.AddResourcePoliciesDiskRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.AddResourcePoliciesDiskRequest):
+ request = compute.AddResourcePoliciesDiskRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if disk is not None:
+ request.disk = disk
+ if disks_add_resource_policies_request_resource is not None:
+ request.disks_add_resource_policies_request_resource = (
+ disks_add_resource_policies_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.add_resource_policies]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def aggregated_list(
self,
request: Union[compute.AggregatedListDisksRequest, dict] = None,
@@ -647,22 +763,9 @@ def create_snapshot_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -707,27 +810,29 @@ def create_snapshot_unary(
# Done; return the response.
return response
- def delete_unary(
+ def create_snapshot(
self,
- request: Union[compute.DeleteDiskRequest, dict] = None,
+ request: Union[compute.CreateSnapshotDiskRequest, dict] = None,
*,
project: str = None,
zone: str = None,
disk: str = None,
+ snapshot_resource: compute.Snapshot = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Deletes the specified persistent disk. Deleting a
- disk removes its data permanently and is irreversible.
- However, deleting a disk does not delete any snapshots
- previously made from the disk. You must separately
- delete snapshots.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a snapshot of a specified persistent disk.
+ For regular snapshot creation, consider using
+ snapshots.insert instead, as that method supports more
+ features, such as creating snapshots in a project
+ different from the source disk project.
Args:
- request (Union[google.cloud.compute_v1.types.DeleteDiskRequest, dict]):
- The request object. A request message for Disks.Delete.
- See the method description for details.
+ request (Union[google.cloud.compute_v1.types.CreateSnapshotDiskRequest, dict]):
+ The request object. A request message for
+ Disks.CreateSnapshot. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -742,11 +847,16 @@ def delete_unary(
should not be set.
disk (str):
Name of the persistent disk to
- delete.
+ snapshot.
This corresponds to the ``disk`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ snapshot_resource (google.cloud.compute_v1.types.Snapshot):
+ The body resource for this request
+ This corresponds to the ``snapshot_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -754,28 +864,15 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, disk])
+ has_flattened_params = any([project, zone, disk, snapshot_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -783,11 +880,11 @@ def delete_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.DeleteDiskRequest.
+ # in a compute.CreateSnapshotDiskRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.DeleteDiskRequest):
- request = compute.DeleteDiskRequest(request)
+ if not isinstance(request, compute.CreateSnapshotDiskRequest):
+ request = compute.CreateSnapshotDiskRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -796,10 +893,12 @@ def delete_unary(
request.zone = zone
if disk is not None:
request.disk = disk
+ if snapshot_resource is not None:
+ request.snapshot_resource = snapshot_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.delete]
+ rpc = self._transport._wrapped_methods[self._transport.create_snapshot]
# Send the request.
response = rpc(
@@ -809,12 +908,37 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def get(
+ def delete_unary(
self,
- request: Union[compute.GetDiskRequest, dict] = None,
+ request: Union[compute.DeleteDiskRequest, dict] = None,
*,
project: str = None,
zone: str = None,
@@ -822,14 +946,17 @@ def get(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Disk:
- r"""Returns a specified persistent disk. Gets a list of
- available persistent disks by making a list() request.
+ ) -> compute.Operation:
+ r"""Deletes the specified persistent disk. Deleting a
+ disk removes its data permanently and is irreversible.
+ However, deleting a disk does not delete any snapshots
+ previously made from the disk. You must separately
+ delete snapshots.
Args:
- request (Union[google.cloud.compute_v1.types.GetDiskRequest, dict]):
- The request object. A request message for Disks.Get. See
- the method description for details.
+ request (Union[google.cloud.compute_v1.types.DeleteDiskRequest, dict]):
+ The request object. A request message for Disks.Delete.
+ See the method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -844,7 +971,7 @@ def get(
should not be set.
disk (str):
Name of the persistent disk to
- return.
+ delete.
This corresponds to the ``disk`` field
on the ``request`` instance; if ``request`` is provided, this
@@ -856,19 +983,9 @@ def get(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Disk:
- Represents a Persistent Disk resource. Google Compute
- Engine has two Disk resources: \*
- [Zonal](/compute/docs/reference/rest/v1/disks) \*
- [Regional](/compute/docs/reference/rest/v1/regionDisks)
- Persistent disks are required for running your VM
- instances. Create both boot and non-boot (data)
- persistent disks. For more information, read Persistent
- Disks. For more storage options, read Storage options.
- The disks resource represents a zonal persistent disk.
- For more information, read Zonal persistent disks. The
- regionDisks resource represents a regional persistent
- disk. For more information, read Regional resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -882,11 +999,11 @@ def get(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetDiskRequest.
+ # in a compute.DeleteDiskRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetDiskRequest):
- request = compute.GetDiskRequest(request)
+ if not isinstance(request, compute.DeleteDiskRequest):
+ request = compute.DeleteDiskRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -898,7 +1015,7 @@ def get(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get]
+ rpc = self._transport._wrapped_methods[self._transport.delete]
# Send the request.
response = rpc(
@@ -911,25 +1028,27 @@ def get(
# Done; return the response.
return response
- def get_iam_policy(
+ def delete(
self,
- request: Union[compute.GetIamPolicyDiskRequest, dict] = None,
+ request: Union[compute.DeleteDiskRequest, dict] = None,
*,
project: str = None,
zone: str = None,
- resource: str = None,
+ disk: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Policy:
- r"""Gets the access control policy for a resource. May be
- empty if no such policy or resource exists.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified persistent disk. Deleting a
+ disk removes its data permanently and is irreversible.
+ However, deleting a disk does not delete any snapshots
+ previously made from the disk. You must separately
+ delete snapshots.
Args:
- request (Union[google.cloud.compute_v1.types.GetIamPolicyDiskRequest, dict]):
- The request object. A request message for
- Disks.GetIamPolicy. See the method description for
- details.
+ request (Union[google.cloud.compute_v1.types.DeleteDiskRequest, dict]):
+ The request object. A request message for Disks.Delete.
+ See the method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -942,11 +1061,11 @@ def get_iam_policy(
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- resource (str):
- Name or id of the resource for this
- request.
+ disk (str):
+ Name of the persistent disk to
+ delete.
- This corresponds to the ``resource`` field
+ This corresponds to the ``disk`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -956,45 +1075,259 @@ def get_iam_policy(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Policy:
- An Identity and Access Management (IAM) policy, which
- specifies access controls for Google Cloud resources. A
- Policy is a collection of bindings. A binding binds one
- or more members, or principals, to a single role.
- Principals can be user accounts, service accounts,
- Google groups, and domains (such as G Suite). A role is
- a named list of permissions; each role can be an IAM
- predefined role or a user-created custom role. For some
- types of Google Cloud resources, a binding can also
- specify a condition, which is a logical expression that
- allows access to a resource only if the expression
- evaluates to true. A condition can add constraints based
- on attributes of the request, the resource, or both. To
- learn which resources support conditions in their IAM
- policies, see the [IAM
- documentation](\ https://cloud.google.com/iam/help/conditions/resource-policies).
- **JSON example:** { "bindings": [ { "role":
- "roles/resourcemanager.organizationAdmin", "members": [
- "user:mike@example.com", "group:admins@example.com",
- "domain:google.com",
- "serviceAccount:my-project-id@appspot.gserviceaccount.com"
- ] }, { "role":
- "roles/resourcemanager.organizationViewer", "members": [
- "user:eve@example.com" ], "condition": { "title":
- "expirable access", "description": "Does not grant
- access after Sep 2020", "expression": "request.time <
- timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
- "BwWWja0YfJA=", "version": 3 } **YAML example:**
- bindings: - members: - user:\ mike@example.com -
- group:\ admins@example.com - domain:google.com -
- serviceAccount:\ my-project-id@appspot.gserviceaccount.com
- role: roles/resourcemanager.organizationAdmin - members:
- - user:\ eve@example.com role:
- roles/resourcemanager.organizationViewer condition:
- title: expirable access description: Does not grant
- access after Sep 2020 expression: request.time <
- timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
- version: 3 For a description of IAM and its features,
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, disk])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteDiskRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteDiskRequest):
+ request = compute.DeleteDiskRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if disk is not None:
+ request.disk = disk
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def get(
+ self,
+ request: Union[compute.GetDiskRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ disk: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Disk:
+ r"""Returns a specified persistent disk. Gets a list of
+ available persistent disks by making a list() request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetDiskRequest, dict]):
+ The request object. A request message for Disks.Get. See
+ the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ disk (str):
+ Name of the persistent disk to
+ return.
+
+ This corresponds to the ``disk`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.Disk:
+ Represents a Persistent Disk resource. Google Compute
+ Engine has two Disk resources: \*
+ [Zonal](/compute/docs/reference/rest/v1/disks) \*
+ [Regional](/compute/docs/reference/rest/v1/regionDisks)
+ Persistent disks are required for running your VM
+ instances. Create both boot and non-boot (data)
+ persistent disks. For more information, read Persistent
+ Disks. For more storage options, read Storage options.
+ The disks resource represents a zonal persistent disk.
+ For more information, read Zonal persistent disks. The
+ regionDisks resource represents a regional persistent
+ disk. For more information, read Regional resources.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, disk])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetDiskRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetDiskRequest):
+ request = compute.GetDiskRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if disk is not None:
+ request.disk = disk
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_iam_policy(
+ self,
+ request: Union[compute.GetIamPolicyDiskRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ resource: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Policy:
+ r"""Gets the access control policy for a resource. May be
+ empty if no such policy or resource exists.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetIamPolicyDiskRequest, dict]):
+ The request object. A request message for
+ Disks.GetIamPolicy. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.Policy:
+ An Identity and Access Management (IAM) policy, which
+ specifies access controls for Google Cloud resources. A
+ Policy is a collection of bindings. A binding binds one
+ or more members, or principals, to a single role.
+ Principals can be user accounts, service accounts,
+ Google groups, and domains (such as G Suite). A role is
+ a named list of permissions; each role can be an IAM
+ predefined role or a user-created custom role. For some
+ types of Google Cloud resources, a binding can also
+ specify a condition, which is a logical expression that
+ allows access to a resource only if the expression
+ evaluates to true. A condition can add constraints based
+ on attributes of the request, the resource, or both. To
+ learn which resources support conditions in their IAM
+ policies, see the [IAM
+ documentation](\ https://cloud.google.com/iam/help/conditions/resource-policies).
+ **JSON example:** { "bindings": [ { "role":
+ "roles/resourcemanager.organizationAdmin", "members": [
+ "user:mike@example.com", "group:admins@example.com",
+ "domain:google.com",
+ "serviceAccount:my-project-id@appspot.gserviceaccount.com"
+ ] }, { "role":
+ "roles/resourcemanager.organizationViewer", "members": [
+ "user:eve@example.com" ], "condition": { "title":
+ "expirable access", "description": "Does not grant
+ access after Sep 2020", "expression": "request.time <
+ timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
+ "BwWWja0YfJA=", "version": 3 } **YAML example:**
+ bindings: - members: - user:\ mike@example.com -
+ group:\ admins@example.com - domain:google.com -
+ serviceAccount:\ my-project-id@appspot.gserviceaccount.com
+ role: roles/resourcemanager.organizationAdmin - members:
+ - user:\ eve@example.com role:
+ roles/resourcemanager.organizationViewer condition:
+ title: expirable access description: Does not grant
+ access after Sep 2020 expression: request.time <
+ timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
+ version: 3 For a description of IAM and its features,
see the [IAM
documentation](\ https://cloud.google.com/iam/docs/).
@@ -1039,29 +1372,324 @@ def get_iam_policy(
# Done; return the response.
return response
- def insert_unary(
+ def insert_unary(
+ self,
+ request: Union[compute.InsertDiskRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ disk_resource: compute.Disk = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Creates a persistent disk in the specified project
+ using the data in the request. You can create a disk
+ from a source (sourceImage, sourceSnapshot, or
+ sourceDisk) or create an empty 500 GB data disk by
+ omitting all properties. You can also create a disk that
+ is larger than the default size by specifying the sizeGb
+ property.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertDiskRequest, dict]):
+ The request object. A request message for Disks.Insert.
+ See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ disk_resource (google.cloud.compute_v1.types.Disk):
+ The body resource for this request
+ This corresponds to the ``disk_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, disk_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertDiskRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertDiskRequest):
+ request = compute.InsertDiskRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if disk_resource is not None:
+ request.disk_resource = disk_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertDiskRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ disk_resource: compute.Disk = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a persistent disk in the specified project
+ using the data in the request. You can create a disk
+ from a source (sourceImage, sourceSnapshot, or
+ sourceDisk) or create an empty 500 GB data disk by
+ omitting all properties. You can also create a disk that
+ is larger than the default size by specifying the sizeGb
+ property.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertDiskRequest, dict]):
+ The request object. A request message for Disks.Insert.
+ See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ disk_resource (google.cloud.compute_v1.types.Disk):
+ The body resource for this request
+ This corresponds to the ``disk_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, disk_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertDiskRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertDiskRequest):
+ request = compute.InsertDiskRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if disk_resource is not None:
+ request.disk_resource = disk_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def list(
+ self,
+ request: Union[compute.ListDisksRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListPager:
+ r"""Retrieves a list of persistent disks contained within
+ the specified zone.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListDisksRequest, dict]):
+ The request object. A request message for Disks.List.
+ See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.disks.pagers.ListPager:
+ A list of Disk resources.
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListDisksRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ListDisksRequest):
+ request = compute.ListDisksRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def remove_resource_policies_unary(
self,
- request: Union[compute.InsertDiskRequest, dict] = None,
+ request: Union[compute.RemoveResourcePoliciesDiskRequest, dict] = None,
*,
project: str = None,
zone: str = None,
- disk_resource: compute.Disk = None,
+ disk: str = None,
+ disks_remove_resource_policies_request_resource: compute.DisksRemoveResourcePoliciesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Creates a persistent disk in the specified project
- using the data in the request. You can create a disk
- from a source (sourceImage, sourceSnapshot, or
- sourceDisk) or create an empty 500 GB data disk by
- omitting all properties. You can also create a disk that
- is larger than the default size by specifying the sizeGb
- property.
+ r"""Removes resource policies from a disk.
Args:
- request (Union[google.cloud.compute_v1.types.InsertDiskRequest, dict]):
- The request object. A request message for Disks.Insert.
- See the method description for details.
+ request (Union[google.cloud.compute_v1.types.RemoveResourcePoliciesDiskRequest, dict]):
+ The request object. A request message for
+ Disks.RemoveResourcePolicies. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1074,9 +1702,14 @@ def insert_unary(
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- disk_resource (google.cloud.compute_v1.types.Disk):
+ disk (str):
+ The disk name for this request.
+ This corresponds to the ``disk`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ disks_remove_resource_policies_request_resource (google.cloud.compute_v1.types.DisksRemoveResourcePoliciesRequest):
The body resource for this request
- This corresponds to the ``disk_resource`` field
+ This corresponds to the ``disks_remove_resource_policies_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1086,28 +1719,17 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, disk_resource])
+ has_flattened_params = any(
+ [project, zone, disk, disks_remove_resource_policies_request_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1115,23 +1737,27 @@ def insert_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.InsertDiskRequest.
+ # in a compute.RemoveResourcePoliciesDiskRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.InsertDiskRequest):
- request = compute.InsertDiskRequest(request)
+ if not isinstance(request, compute.RemoveResourcePoliciesDiskRequest):
+ request = compute.RemoveResourcePoliciesDiskRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if zone is not None:
request.zone = zone
- if disk_resource is not None:
- request.disk_resource = disk_resource
+ if disk is not None:
+ request.disk = disk
+ if disks_remove_resource_policies_request_resource is not None:
+ request.disks_remove_resource_policies_request_resource = (
+ disks_remove_resource_policies_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.insert]
+ rpc = self._transport._wrapped_methods[self._transport.remove_resource_policies]
# Send the request.
response = rpc(
@@ -1144,23 +1770,25 @@ def insert_unary(
# Done; return the response.
return response
- def list(
+ def remove_resource_policies(
self,
- request: Union[compute.ListDisksRequest, dict] = None,
+ request: Union[compute.RemoveResourcePoliciesDiskRequest, dict] = None,
*,
project: str = None,
zone: str = None,
+ disk: str = None,
+ disks_remove_resource_policies_request_resource: compute.DisksRemoveResourcePoliciesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListPager:
- r"""Retrieves a list of persistent disks contained within
- the specified zone.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Removes resource policies from a disk.
Args:
- request (Union[google.cloud.compute_v1.types.ListDisksRequest, dict]):
- The request object. A request message for Disks.List.
- See the method description for details.
+ request (Union[google.cloud.compute_v1.types.RemoveResourcePoliciesDiskRequest, dict]):
+ The request object. A request message for
+ Disks.RemoveResourcePolicies. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1173,6 +1801,16 @@ def list(
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ disk (str):
+ The disk name for this request.
+ This corresponds to the ``disk`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ disks_remove_resource_policies_request_resource (google.cloud.compute_v1.types.DisksRemoveResourcePoliciesRequest):
+ The body resource for this request
+ This corresponds to the ``disks_remove_resource_policies_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1180,17 +1818,17 @@ def list(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.disks.pagers.ListPager:
- A list of Disk resources.
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone])
+ has_flattened_params = any(
+ [project, zone, disk, disks_remove_resource_policies_request_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1198,21 +1836,27 @@ def list(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListDisksRequest.
+ # in a compute.RemoveResourcePoliciesDiskRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ListDisksRequest):
- request = compute.ListDisksRequest(request)
+ if not isinstance(request, compute.RemoveResourcePoliciesDiskRequest):
+ request = compute.RemoveResourcePoliciesDiskRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if zone is not None:
request.zone = zone
+ if disk is not None:
+ request.disk = disk
+ if disks_remove_resource_policies_request_resource is not None:
+ request.disks_remove_resource_policies_request_resource = (
+ disks_remove_resource_policies_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list]
+ rpc = self._transport._wrapped_methods[self._transport.remove_resource_policies]
# Send the request.
response = rpc(
@@ -1222,37 +1866,53 @@ def list(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
# Done; return the response.
return response
- def remove_resource_policies_unary(
+ def resize_unary(
self,
- request: Union[compute.RemoveResourcePoliciesDiskRequest, dict] = None,
+ request: Union[compute.ResizeDiskRequest, dict] = None,
*,
project: str = None,
zone: str = None,
disk: str = None,
- disks_remove_resource_policies_request_resource: compute.DisksRemoveResourcePoliciesRequest = None,
+ disks_resize_request_resource: compute.DisksResizeRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Removes resource policies from a disk.
+ r"""Resizes the specified persistent disk. You can only
+ increase the size of the disk.
Args:
- request (Union[google.cloud.compute_v1.types.RemoveResourcePoliciesDiskRequest, dict]):
- The request object. A request message for
- Disks.RemoveResourcePolicies. See the method description
- for details.
+ request (Union[google.cloud.compute_v1.types.ResizeDiskRequest, dict]):
+ The request object. A request message for Disks.Resize.
+ See the method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1266,13 +1926,13 @@ def remove_resource_policies_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
disk (str):
- The disk name for this request.
+ The name of the persistent disk.
This corresponds to the ``disk`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- disks_remove_resource_policies_request_resource (google.cloud.compute_v1.types.DisksRemoveResourcePoliciesRequest):
+ disks_resize_request_resource (google.cloud.compute_v1.types.DisksResizeRequest):
The body resource for this request
- This corresponds to the ``disks_remove_resource_policies_request_resource`` field
+ This corresponds to the ``disks_resize_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1282,30 +1942,15 @@ def remove_resource_policies_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, zone, disk, disks_remove_resource_policies_request_resource]
- )
+ has_flattened_params = any([project, zone, disk, disks_resize_request_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1313,11 +1958,11 @@ def remove_resource_policies_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.RemoveResourcePoliciesDiskRequest.
+ # in a compute.ResizeDiskRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.RemoveResourcePoliciesDiskRequest):
- request = compute.RemoveResourcePoliciesDiskRequest(request)
+ if not isinstance(request, compute.ResizeDiskRequest):
+ request = compute.ResizeDiskRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1326,14 +1971,12 @@ def remove_resource_policies_unary(
request.zone = zone
if disk is not None:
request.disk = disk
- if disks_remove_resource_policies_request_resource is not None:
- request.disks_remove_resource_policies_request_resource = (
- disks_remove_resource_policies_request_resource
- )
+ if disks_resize_request_resource is not None:
+ request.disks_resize_request_resource = disks_resize_request_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.remove_resource_policies]
+ rpc = self._transport._wrapped_methods[self._transport.resize]
# Send the request.
response = rpc(
@@ -1346,7 +1989,7 @@ def remove_resource_policies_unary(
# Done; return the response.
return response
- def resize_unary(
+ def resize(
self,
request: Union[compute.ResizeDiskRequest, dict] = None,
*,
@@ -1357,7 +2000,7 @@ def resize_unary(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
+ ) -> extended_operation.ExtendedOperation:
r"""Resizes the specified persistent disk. You can only
increase the size of the disk.
@@ -1394,22 +2037,9 @@ def resize_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1451,6 +2081,31 @@ def resize_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -1644,22 +2299,110 @@ def set_labels_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, resource, zone_set_labels_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetLabelsDiskRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetLabelsDiskRequest):
+ request = compute.SetLabelsDiskRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if resource is not None:
+ request.resource = resource
+ if zone_set_labels_request_resource is not None:
+ request.zone_set_labels_request_resource = (
+ zone_set_labels_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_labels]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_labels(
+ self,
+ request: Union[compute.SetLabelsDiskRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ resource: str = None,
+ zone_set_labels_request_resource: compute.ZoneSetLabelsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the labels on a disk. To learn more about
+ labels, read the Labeling Resources documentation.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetLabelsDiskRequest, dict]):
+ The request object. A request message for
+ Disks.SetLabels. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone_set_labels_request_resource (google.cloud.compute_v1.types.ZoneSetLabelsRequest):
+ The body resource for this request
+ This corresponds to the ``zone_set_labels_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1705,6 +2448,31 @@ def set_labels_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/disks/transports/base.py b/google/cloud/compute_v1/services/disks/transports/base.py
index 1b8efd44a..0ceedc279 100644
--- a/google/cloud/compute_v1/services/disks/transports/base.py
+++ b/google/cloud/compute_v1/services/disks/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import zone_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -316,5 +319,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _zone_operations_client(self) -> zone_operations.ZoneOperationsClient:
+ ex_op_service = self._extended_operations_services.get("zone_operations")
+ if not ex_op_service:
+ ex_op_service = zone_operations.ZoneOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["zone_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("DisksTransport",)
diff --git a/google/cloud/compute_v1/services/disks/transports/rest.py b/google/cloud/compute_v1/services/disks/transports/rest.py
index ff1ffb9a1..211690675 100644
--- a/google/cloud/compute_v1/services/disks/transports/rest.py
+++ b/google/cloud/compute_v1/services/disks/transports/rest.py
@@ -2104,6 +2104,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/external_vpn_gateways/client.py b/google/cloud/compute_v1/services/external_vpn_gateways/client.py
index 1846aafd0..0bab4691a 100644
--- a/google/cloud/compute_v1/services/external_vpn_gateways/client.py
+++ b/google/cloud/compute_v1/services/external_vpn_gateways/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.external_vpn_gateways import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import ExternalVpnGatewaysTransport, DEFAULT_CLIENT_INFO
@@ -438,22 +441,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -494,6 +484,109 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteExternalVpnGatewayRequest, dict] = None,
+ *,
+ project: str = None,
+ external_vpn_gateway: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified externalVpnGateway.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteExternalVpnGatewayRequest, dict]):
+ The request object. A request message for
+ ExternalVpnGateways.Delete. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ external_vpn_gateway (str):
+ Name of the externalVpnGateways to
+ delete.
+
+ This corresponds to the ``external_vpn_gateway`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, external_vpn_gateway])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteExternalVpnGatewayRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteExternalVpnGatewayRequest):
+ request = compute.DeleteExternalVpnGatewayRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if external_vpn_gateway is not None:
+ request.external_vpn_gateway = external_vpn_gateway
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetExternalVpnGatewayRequest, dict] = None,
@@ -622,22 +715,87 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, external_vpn_gateway_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertExternalVpnGatewayRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertExternalVpnGatewayRequest):
+ request = compute.InsertExternalVpnGatewayRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if external_vpn_gateway_resource is not None:
+ request.external_vpn_gateway_resource = external_vpn_gateway_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertExternalVpnGatewayRequest, dict] = None,
+ *,
+ project: str = None,
+ external_vpn_gateway_resource: compute.ExternalVpnGateway = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a ExternalVpnGateway in the specified project
+ using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertExternalVpnGatewayRequest, dict]):
+ The request object. A request message for
+ ExternalVpnGateways.Insert. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ external_vpn_gateway_resource (google.cloud.compute_v1.types.ExternalVpnGateway):
+ The body resource for this request
+ This corresponds to the ``external_vpn_gateway_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -675,6 +833,30 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -804,22 +986,9 @@ def set_labels_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -866,6 +1035,123 @@ def set_labels_unary(
# Done; return the response.
return response
+ def set_labels(
+ self,
+ request: Union[compute.SetLabelsExternalVpnGatewayRequest, dict] = None,
+ *,
+ project: str = None,
+ resource: str = None,
+ global_set_labels_request_resource: compute.GlobalSetLabelsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the labels on an ExternalVpnGateway. To learn
+ more about labels, read the Labeling Resources
+ documentation.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetLabelsExternalVpnGatewayRequest, dict]):
+ The request object. A request message for
+ ExternalVpnGateways.SetLabels. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest):
+ The body resource for this request
+ This corresponds to the ``global_set_labels_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, resource, global_set_labels_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetLabelsExternalVpnGatewayRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetLabelsExternalVpnGatewayRequest):
+ request = compute.SetLabelsExternalVpnGatewayRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if resource is not None:
+ request.resource = resource
+ if global_set_labels_request_resource is not None:
+ request.global_set_labels_request_resource = (
+ global_set_labels_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_labels]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def test_iam_permissions(
self,
request: Union[
diff --git a/google/cloud/compute_v1/services/external_vpn_gateways/transports/base.py b/google/cloud/compute_v1/services/external_vpn_gateways/transports/base.py
index 6a5b7459a..fb4b92c1c 100644
--- a/google/cloud/compute_v1/services/external_vpn_gateways/transports/base.py
+++ b/google/cloud/compute_v1/services/external_vpn_gateways/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -222,5 +225,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("ExternalVpnGatewaysTransport",)
diff --git a/google/cloud/compute_v1/services/external_vpn_gateways/transports/rest.py b/google/cloud/compute_v1/services/external_vpn_gateways/transports/rest.py
index f78fb2cdf..345cd2e08 100644
--- a/google/cloud/compute_v1/services/external_vpn_gateways/transports/rest.py
+++ b/google/cloud/compute_v1/services/external_vpn_gateways/transports/rest.py
@@ -1058,6 +1058,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/firewall_policies/client.py b/google/cloud/compute_v1/services/firewall_policies/client.py
index 0f1aa06d8..015b4899c 100644
--- a/google/cloud/compute_v1/services/firewall_policies/client.py
+++ b/google/cloud/compute_v1/services/firewall_policies/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.firewall_policies import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import FirewallPoliciesTransport, DEFAULT_CLIENT_INFO
@@ -439,22 +442,9 @@ def add_association_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -499,23 +489,24 @@ def add_association_unary(
# Done; return the response.
return response
- def add_rule_unary(
+ def add_association(
self,
- request: Union[compute.AddRuleFirewallPolicyRequest, dict] = None,
+ request: Union[compute.AddAssociationFirewallPolicyRequest, dict] = None,
*,
firewall_policy: str = None,
- firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
+ firewall_policy_association_resource: compute.FirewallPolicyAssociation = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Inserts a rule into a firewall policy.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Inserts an association for the specified firewall
+ policy.
Args:
- request (Union[google.cloud.compute_v1.types.AddRuleFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.AddAssociationFirewallPolicyRequest, dict]):
The request object. A request message for
- FirewallPolicies.AddRule. See the method description for
- details.
+ FirewallPolicies.AddAssociation. See the method
+ description for details.
firewall_policy (str):
Name of the firewall policy to
update.
@@ -523,9 +514,9 @@ def add_rule_unary(
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
+ firewall_policy_association_resource (google.cloud.compute_v1.types.FirewallPolicyAssociation):
The body resource for this request
- This corresponds to the ``firewall_policy_rule_resource`` field
+ This corresponds to the ``firewall_policy_association_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -535,28 +526,17 @@ def add_rule_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([firewall_policy, firewall_policy_rule_resource])
+ has_flattened_params = any(
+ [firewall_policy, firewall_policy_association_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -564,21 +544,23 @@ def add_rule_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.AddRuleFirewallPolicyRequest.
+ # in a compute.AddAssociationFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.AddRuleFirewallPolicyRequest):
- request = compute.AddRuleFirewallPolicyRequest(request)
+ if not isinstance(request, compute.AddAssociationFirewallPolicyRequest):
+ request = compute.AddAssociationFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if firewall_policy is not None:
request.firewall_policy = firewall_policy
- if firewall_policy_rule_resource is not None:
- request.firewall_policy_rule_resource = firewall_policy_rule_resource
+ if firewall_policy_association_resource is not None:
+ request.firewall_policy_association_resource = (
+ firewall_policy_association_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.add_rule]
+ rpc = self._transport._wrapped_methods[self._transport.add_association]
# Send the request.
response = rpc(
@@ -588,25 +570,49 @@ def add_rule_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_organization_operations_client
+ operation_request = compute.GetGlobalOrganizationOperationRequest()
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def clone_rules_unary(
+ def add_rule_unary(
self,
- request: Union[compute.CloneRulesFirewallPolicyRequest, dict] = None,
+ request: Union[compute.AddRuleFirewallPolicyRequest, dict] = None,
*,
firewall_policy: str = None,
+ firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Copies rules to the specified firewall policy.
+ r"""Inserts a rule into a firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.CloneRulesFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.AddRuleFirewallPolicyRequest, dict]):
The request object. A request message for
- FirewallPolicies.CloneRules. See the method description
- for details.
+ FirewallPolicies.AddRule. See the method description for
+ details.
firewall_policy (str):
Name of the firewall policy to
update.
@@ -614,6 +620,11 @@ def clone_rules_unary(
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -621,28 +632,15 @@ def clone_rules_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([firewall_policy])
+ has_flattened_params = any([firewall_policy, firewall_policy_rule_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -650,19 +648,21 @@ def clone_rules_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.CloneRulesFirewallPolicyRequest.
+ # in a compute.AddRuleFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.CloneRulesFirewallPolicyRequest):
- request = compute.CloneRulesFirewallPolicyRequest(request)
+ if not isinstance(request, compute.AddRuleFirewallPolicyRequest):
+ request = compute.AddRuleFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if firewall_policy is not None:
request.firewall_policy = firewall_policy
+ if firewall_policy_rule_resource is not None:
+ request.firewall_policy_rule_resource = firewall_policy_rule_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.clone_rules]
+ rpc = self._transport._wrapped_methods[self._transport.add_rule]
# Send the request.
response = rpc(
@@ -675,29 +675,35 @@ def clone_rules_unary(
# Done; return the response.
return response
- def delete_unary(
+ def add_rule(
self,
- request: Union[compute.DeleteFirewallPolicyRequest, dict] = None,
+ request: Union[compute.AddRuleFirewallPolicyRequest, dict] = None,
*,
firewall_policy: str = None,
+ firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Deletes the specified policy.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Inserts a rule into a firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.DeleteFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.AddRuleFirewallPolicyRequest, dict]):
The request object. A request message for
- FirewallPolicies.Delete. See the method description for
+ FirewallPolicies.AddRule. See the method description for
details.
firewall_policy (str):
Name of the firewall policy to
- delete.
+ update.
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -705,28 +711,15 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([firewall_policy])
+ has_flattened_params = any([firewall_policy, firewall_policy_rule_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -734,19 +727,21 @@ def delete_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.DeleteFirewallPolicyRequest.
+ # in a compute.AddRuleFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.DeleteFirewallPolicyRequest):
- request = compute.DeleteFirewallPolicyRequest(request)
+ if not isinstance(request, compute.AddRuleFirewallPolicyRequest):
+ request = compute.AddRuleFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if firewall_policy is not None:
request.firewall_policy = firewall_policy
+ if firewall_policy_rule_resource is not None:
+ request.firewall_policy_rule_resource = firewall_policy_rule_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.delete]
+ rpc = self._transport._wrapped_methods[self._transport.add_rule]
# Send the request.
response = rpc(
@@ -756,27 +751,52 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_organization_operations_client
+ operation_request = compute.GetGlobalOrganizationOperationRequest()
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def get(
+ def clone_rules_unary(
self,
- request: Union[compute.GetFirewallPolicyRequest, dict] = None,
+ request: Union[compute.CloneRulesFirewallPolicyRequest, dict] = None,
*,
firewall_policy: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.FirewallPolicy:
- r"""Returns the specified firewall policy.
+ ) -> compute.Operation:
+ r"""Copies rules to the specified firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.GetFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.CloneRulesFirewallPolicyRequest, dict]):
The request object. A request message for
- FirewallPolicies.Get. See the method description for
- details.
+ FirewallPolicies.CloneRules. See the method description
+ for details.
firewall_policy (str):
- Name of the firewall policy to get.
+ Name of the firewall policy to
+ update.
+
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
@@ -787,9 +807,9 @@ def get(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.FirewallPolicy:
- Represents a Firewall Policy
- resource.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -803,11 +823,11 @@ def get(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetFirewallPolicyRequest.
+ # in a compute.CloneRulesFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetFirewallPolicyRequest):
- request = compute.GetFirewallPolicyRequest(request)
+ if not isinstance(request, compute.CloneRulesFirewallPolicyRequest):
+ request = compute.CloneRulesFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if firewall_policy is not None:
@@ -815,7 +835,7 @@ def get(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get]
+ rpc = self._transport._wrapped_methods[self._transport.clone_rules]
# Send the request.
response = rpc(
@@ -828,25 +848,25 @@ def get(
# Done; return the response.
return response
- def get_association(
+ def clone_rules(
self,
- request: Union[compute.GetAssociationFirewallPolicyRequest, dict] = None,
+ request: Union[compute.CloneRulesFirewallPolicyRequest, dict] = None,
*,
firewall_policy: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.FirewallPolicyAssociation:
- r"""Gets an association with the specified name.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Copies rules to the specified firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.GetAssociationFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.CloneRulesFirewallPolicyRequest, dict]):
The request object. A request message for
- FirewallPolicies.GetAssociation. See the method
- description for details.
+ FirewallPolicies.CloneRules. See the method description
+ for details.
firewall_policy (str):
- Name of the firewall policy to which
- the queried rule belongs.
+ Name of the firewall policy to
+ update.
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
@@ -858,7 +878,9 @@ def get_association(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.FirewallPolicyAssociation:
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -872,11 +894,11 @@ def get_association(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetAssociationFirewallPolicyRequest.
+ # in a compute.CloneRulesFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetAssociationFirewallPolicyRequest):
- request = compute.GetAssociationFirewallPolicyRequest(request)
+ if not isinstance(request, compute.CloneRulesFirewallPolicyRequest):
+ request = compute.CloneRulesFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if firewall_policy is not None:
@@ -884,7 +906,7 @@ def get_association(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_association]
+ rpc = self._transport._wrapped_methods[self._transport.clone_rules]
# Send the request.
response = rpc(
@@ -894,31 +916,53 @@ def get_association(
metadata=metadata,
)
+ operation_service = self._transport._global_organization_operations_client
+ operation_request = compute.GetGlobalOrganizationOperationRequest()
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def get_iam_policy(
+ def delete_unary(
self,
- request: Union[compute.GetIamPolicyFirewallPolicyRequest, dict] = None,
+ request: Union[compute.DeleteFirewallPolicyRequest, dict] = None,
*,
- resource: str = None,
+ firewall_policy: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Policy:
- r"""Gets the access control policy for a resource. May be
- empty if no such policy or resource exists.
+ ) -> compute.Operation:
+ r"""Deletes the specified policy.
Args:
- request (Union[google.cloud.compute_v1.types.GetIamPolicyFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteFirewallPolicyRequest, dict]):
The request object. A request message for
- FirewallPolicies.GetIamPolicy. See the method
- description for details.
- resource (str):
- Name or id of the resource for this
- request.
+ FirewallPolicies.Delete. See the method description for
+ details.
+ firewall_policy (str):
+ Name of the firewall policy to
+ delete.
- This corresponds to the ``resource`` field
+ This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -928,53 +972,15 @@ def get_iam_policy(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Policy:
- An Identity and Access Management (IAM) policy, which
- specifies access controls for Google Cloud resources. A
- Policy is a collection of bindings. A binding binds one
- or more members, or principals, to a single role.
- Principals can be user accounts, service accounts,
- Google groups, and domains (such as G Suite). A role is
- a named list of permissions; each role can be an IAM
- predefined role or a user-created custom role. For some
- types of Google Cloud resources, a binding can also
- specify a condition, which is a logical expression that
- allows access to a resource only if the expression
- evaluates to true. A condition can add constraints based
- on attributes of the request, the resource, or both. To
- learn which resources support conditions in their IAM
- policies, see the [IAM
- documentation](\ https://cloud.google.com/iam/help/conditions/resource-policies).
- **JSON example:** { "bindings": [ { "role":
- "roles/resourcemanager.organizationAdmin", "members": [
- "user:mike@example.com", "group:admins@example.com",
- "domain:google.com",
- "serviceAccount:my-project-id@appspot.gserviceaccount.com"
- ] }, { "role":
- "roles/resourcemanager.organizationViewer", "members": [
- "user:eve@example.com" ], "condition": { "title":
- "expirable access", "description": "Does not grant
- access after Sep 2020", "expression": "request.time <
- timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
- "BwWWja0YfJA=", "version": 3 } **YAML example:**
- bindings: - members: - user:\ mike@example.com -
- group:\ admins@example.com - domain:google.com -
- serviceAccount:\ my-project-id@appspot.gserviceaccount.com
- role: roles/resourcemanager.organizationAdmin - members:
- - user:\ eve@example.com role:
- roles/resourcemanager.organizationViewer condition:
- title: expirable access description: Does not grant
- access after Sep 2020 expression: request.time <
- timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
- version: 3 For a description of IAM and its features,
- see the [IAM
- documentation](\ https://cloud.google.com/iam/docs/).
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([resource])
+ has_flattened_params = any([firewall_policy])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -982,19 +988,19 @@ def get_iam_policy(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetIamPolicyFirewallPolicyRequest.
+ # in a compute.DeleteFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetIamPolicyFirewallPolicyRequest):
- request = compute.GetIamPolicyFirewallPolicyRequest(request)
+ if not isinstance(request, compute.DeleteFirewallPolicyRequest):
+ request = compute.DeleteFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
- if resource is not None:
- request.resource = resource
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_iam_policy]
+ rpc = self._transport._wrapped_methods[self._transport.delete]
# Send the request.
response = rpc(
@@ -1007,21 +1013,363 @@ def get_iam_policy(
# Done; return the response.
return response
- def get_rule(
+ def delete(
self,
- request: Union[compute.GetRuleFirewallPolicyRequest, dict] = None,
+ request: Union[compute.DeleteFirewallPolicyRequest, dict] = None,
*,
firewall_policy: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.FirewallPolicyRule:
- r"""Gets a rule of the specified priority.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified policy.
Args:
- request (Union[google.cloud.compute_v1.types.GetRuleFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteFirewallPolicyRequest, dict]):
The request object. A request message for
- FirewallPolicies.GetRule. See the method description for
+ FirewallPolicies.Delete. See the method description for
+ details.
+ firewall_policy (str):
+ Name of the firewall policy to
+ delete.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([firewall_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteFirewallPolicyRequest):
+ request = compute.DeleteFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_organization_operations_client
+ operation_request = compute.GetGlobalOrganizationOperationRequest()
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def get(
+ self,
+ request: Union[compute.GetFirewallPolicyRequest, dict] = None,
+ *,
+ firewall_policy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.FirewallPolicy:
+ r"""Returns the specified firewall policy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ FirewallPolicies.Get. See the method description for
+ details.
+ firewall_policy (str):
+ Name of the firewall policy to get.
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.FirewallPolicy:
+ Represents a Firewall Policy
+ resource.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([firewall_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetFirewallPolicyRequest):
+ request = compute.GetFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_association(
+ self,
+ request: Union[compute.GetAssociationFirewallPolicyRequest, dict] = None,
+ *,
+ firewall_policy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.FirewallPolicyAssociation:
+ r"""Gets an association with the specified name.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetAssociationFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ FirewallPolicies.GetAssociation. See the method
+ description for details.
+ firewall_policy (str):
+ Name of the firewall policy to which
+ the queried rule belongs.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.FirewallPolicyAssociation:
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([firewall_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetAssociationFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetAssociationFirewallPolicyRequest):
+ request = compute.GetAssociationFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_association]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_iam_policy(
+ self,
+ request: Union[compute.GetIamPolicyFirewallPolicyRequest, dict] = None,
+ *,
+ resource: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Policy:
+ r"""Gets the access control policy for a resource. May be
+ empty if no such policy or resource exists.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetIamPolicyFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ FirewallPolicies.GetIamPolicy. See the method
+ description for details.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.Policy:
+ An Identity and Access Management (IAM) policy, which
+ specifies access controls for Google Cloud resources. A
+ Policy is a collection of bindings. A binding binds one
+ or more members, or principals, to a single role.
+ Principals can be user accounts, service accounts,
+ Google groups, and domains (such as G Suite). A role is
+ a named list of permissions; each role can be an IAM
+ predefined role or a user-created custom role. For some
+ types of Google Cloud resources, a binding can also
+ specify a condition, which is a logical expression that
+ allows access to a resource only if the expression
+ evaluates to true. A condition can add constraints based
+ on attributes of the request, the resource, or both. To
+ learn which resources support conditions in their IAM
+ policies, see the [IAM
+ documentation](\ https://cloud.google.com/iam/help/conditions/resource-policies).
+ **JSON example:** { "bindings": [ { "role":
+ "roles/resourcemanager.organizationAdmin", "members": [
+ "user:mike@example.com", "group:admins@example.com",
+ "domain:google.com",
+ "serviceAccount:my-project-id@appspot.gserviceaccount.com"
+ ] }, { "role":
+ "roles/resourcemanager.organizationViewer", "members": [
+ "user:eve@example.com" ], "condition": { "title":
+ "expirable access", "description": "Does not grant
+ access after Sep 2020", "expression": "request.time <
+ timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
+ "BwWWja0YfJA=", "version": 3 } **YAML example:**
+ bindings: - members: - user:\ mike@example.com -
+ group:\ admins@example.com - domain:google.com -
+ serviceAccount:\ my-project-id@appspot.gserviceaccount.com
+ role: roles/resourcemanager.organizationAdmin - members:
+ - user:\ eve@example.com role:
+ roles/resourcemanager.organizationViewer condition:
+ title: expirable access description: Does not grant
+ access after Sep 2020 expression: request.time <
+ timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
+ version: 3 For a description of IAM and its features,
+ see the [IAM
+ documentation](\ https://cloud.google.com/iam/docs/).
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetIamPolicyFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetIamPolicyFirewallPolicyRequest):
+ request = compute.GetIamPolicyFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if resource is not None:
+ request.resource = resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_iam_policy]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_rule(
+ self,
+ request: Union[compute.GetRuleFirewallPolicyRequest, dict] = None,
+ *,
+ firewall_policy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.FirewallPolicyRule:
+ r"""Gets a rule of the specified priority.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetRuleFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ FirewallPolicies.GetRule. See the method description for
details.
firewall_policy (str):
Name of the firewall policy to which
@@ -1037,17 +1385,394 @@ def get_rule(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.FirewallPolicyRule:
- Represents a rule that describes one
- or more match conditions along with the
- action to be taken when traffic matches
- this condition (allow or deny).
+ google.cloud.compute_v1.types.FirewallPolicyRule:
+ Represents a rule that describes one
+ or more match conditions along with the
+ action to be taken when traffic matches
+ this condition (allow or deny).
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([firewall_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetRuleFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetRuleFirewallPolicyRequest):
+ request = compute.GetRuleFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_rule]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert_unary(
+ self,
+ request: Union[compute.InsertFirewallPolicyRequest, dict] = None,
+ *,
+ parent_id: str = None,
+ firewall_policy_resource: compute.FirewallPolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Creates a new policy in the specified project using
+ the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ FirewallPolicies.Insert. See the method description for
+ details.
+ parent_id (str):
+ Parent ID for this request. The ID can be either be
+ "folders/[FOLDER_ID]" if the parent is a folder or
+ "organizations/[ORGANIZATION_ID]" if the parent is an
+ organization.
+
+ This corresponds to the ``parent_id`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([parent_id, firewall_policy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertFirewallPolicyRequest):
+ request = compute.InsertFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if parent_id is not None:
+ request.parent_id = parent_id
+ if firewall_policy_resource is not None:
+ request.firewall_policy_resource = firewall_policy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertFirewallPolicyRequest, dict] = None,
+ *,
+ parent_id: str = None,
+ firewall_policy_resource: compute.FirewallPolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a new policy in the specified project using
+ the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ FirewallPolicies.Insert. See the method description for
+ details.
+ parent_id (str):
+ Parent ID for this request. The ID can be either be
+ "folders/[FOLDER_ID]" if the parent is a folder or
+ "organizations/[ORGANIZATION_ID]" if the parent is an
+ organization.
+
+ This corresponds to the ``parent_id`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([parent_id, firewall_policy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertFirewallPolicyRequest):
+ request = compute.InsertFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if parent_id is not None:
+ request.parent_id = parent_id
+ if firewall_policy_resource is not None:
+ request.firewall_policy_resource = firewall_policy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_organization_operations_client
+ operation_request = compute.GetGlobalOrganizationOperationRequest()
+ operation_request.parent_id = request.parent_id
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def list(
+ self,
+ request: Union[compute.ListFirewallPoliciesRequest, dict] = None,
+ *,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListPager:
+ r"""Lists all the policies that have been configured for
+ the specified folder or organization.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListFirewallPoliciesRequest, dict]):
+ The request object. A request message for
+ FirewallPolicies.List. See the method description for
+ details.
+ 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.cloud.compute_v1.services.firewall_policies.pagers.ListPager:
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListFirewallPoliciesRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ListFirewallPoliciesRequest):
+ request = compute.ListFirewallPoliciesRequest(request)
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def list_associations(
+ self,
+ request: Union[compute.ListAssociationsFirewallPolicyRequest, dict] = None,
+ *,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.FirewallPoliciesListAssociationsResponse:
+ r"""Lists associations of a specified target, i.e.,
+ organization or folder.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListAssociationsFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ FirewallPolicies.ListAssociations. See the method
+ description for details.
+ 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.cloud.compute_v1.types.FirewallPoliciesListAssociationsResponse:
+
+ """
+ # Create or coerce a protobuf request object.
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListAssociationsFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ListAssociationsFirewallPolicyRequest):
+ request = compute.ListAssociationsFirewallPolicyRequest(request)
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list_associations]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def move_unary(
+ self,
+ request: Union[compute.MoveFirewallPolicyRequest, dict] = None,
+ *,
+ firewall_policy: str = None,
+ parent_id: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Moves the specified firewall policy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.MoveFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ FirewallPolicies.Move. See the method description for
+ details.
+ firewall_policy (str):
+ Name of the firewall policy to
+ update.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ parent_id (str):
+ The new parent of the firewall
+ policy.
+
+ This corresponds to the ``parent_id`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([firewall_policy])
+ has_flattened_params = any([firewall_policy, parent_id])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1055,19 +1780,21 @@ def get_rule(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetRuleFirewallPolicyRequest.
+ # in a compute.MoveFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetRuleFirewallPolicyRequest):
- request = compute.GetRuleFirewallPolicyRequest(request)
+ if not isinstance(request, compute.MoveFirewallPolicyRequest):
+ request = compute.MoveFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if firewall_policy is not None:
request.firewall_policy = firewall_policy
+ if parent_id is not None:
+ request.parent_id = parent_id
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_rule]
+ rpc = self._transport._wrapped_methods[self._transport.move]
# Send the request.
response = rpc(
@@ -1080,33 +1807,136 @@ def get_rule(
# Done; return the response.
return response
- def insert_unary(
+ def move(
self,
- request: Union[compute.InsertFirewallPolicyRequest, dict] = None,
+ request: Union[compute.MoveFirewallPolicyRequest, dict] = None,
*,
+ firewall_policy: str = None,
parent_id: str = None,
- firewall_policy_resource: compute.FirewallPolicy = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Creates a new policy in the specified project using
- the data included in the request.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Moves the specified firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.InsertFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.MoveFirewallPolicyRequest, dict]):
The request object. A request message for
- FirewallPolicies.Insert. See the method description for
+ FirewallPolicies.Move. See the method description for
details.
+ firewall_policy (str):
+ Name of the firewall policy to
+ update.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
parent_id (str):
- Parent ID for this request. The ID can be either be
- "folders/[FOLDER_ID]" if the parent is a folder or
- "organizations/[ORGANIZATION_ID]" if the parent is an
- organization.
+ The new parent of the firewall
+ policy.
This corresponds to the ``parent_id`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([firewall_policy, parent_id])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.MoveFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.MoveFirewallPolicyRequest):
+ request = compute.MoveFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+ if parent_id is not None:
+ request.parent_id = parent_id
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.move]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_organization_operations_client
+ operation_request = compute.GetGlobalOrganizationOperationRequest()
+ operation_request.parent_id = request.parent_id
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def patch_unary(
+ self,
+ request: Union[compute.PatchFirewallPolicyRequest, dict] = None,
+ *,
+ firewall_policy: str = None,
+ firewall_policy_resource: compute.FirewallPolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Patches the specified policy with the data included
+ in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ FirewallPolicies.Patch. See the method description for
+ details.
+ firewall_policy (str):
+ Name of the firewall policy to
+ update.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
The body resource for this request
This corresponds to the ``firewall_policy_resource`` field
@@ -1119,28 +1949,15 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([parent_id, firewall_policy_resource])
+ has_flattened_params = any([firewall_policy, firewall_policy_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1148,21 +1965,21 @@ def insert_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.InsertFirewallPolicyRequest.
+ # in a compute.PatchFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.InsertFirewallPolicyRequest):
- request = compute.InsertFirewallPolicyRequest(request)
+ if not isinstance(request, compute.PatchFirewallPolicyRequest):
+ request = compute.PatchFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
- if parent_id is not None:
- request.parent_id = parent_id
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
if firewall_policy_resource is not None:
request.firewall_policy_resource = firewall_policy_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.insert]
+ rpc = self._transport._wrapped_methods[self._transport.patch]
# Send the request.
response = rpc(
@@ -1175,22 +1992,36 @@ def insert_unary(
# Done; return the response.
return response
- def list(
+ def patch(
self,
- request: Union[compute.ListFirewallPoliciesRequest, dict] = None,
+ request: Union[compute.PatchFirewallPolicyRequest, dict] = None,
*,
+ firewall_policy: str = None,
+ firewall_policy_resource: compute.FirewallPolicy = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListPager:
- r"""Lists all the policies that have been configured for
- the specified folder or organization.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified policy with the data included
+ in the request.
Args:
- request (Union[google.cloud.compute_v1.types.ListFirewallPoliciesRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.PatchFirewallPolicyRequest, dict]):
The request object. A request message for
- FirewallPolicies.List. See the method description for
+ FirewallPolicies.Patch. See the method description for
details.
+ firewall_policy (str):
+ Name of the firewall policy to
+ update.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1198,23 +2029,37 @@ def list(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.firewall_policies.pagers.ListPager:
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([firewall_policy, firewall_policy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListFirewallPoliciesRequest.
+ # in a compute.PatchFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ListFirewallPoliciesRequest):
- request = compute.ListFirewallPoliciesRequest(request)
+ if not isinstance(request, compute.PatchFirewallPolicyRequest):
+ request = compute.PatchFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+ if firewall_policy_resource is not None:
+ request.firewall_policy_resource = firewall_policy_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list]
+ rpc = self._transport._wrapped_methods[self._transport.patch]
# Send the request.
response = rpc(
@@ -1224,34 +2069,61 @@ def list(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
+ operation_service = self._transport._global_organization_operations_client
+ operation_request = compute.GetGlobalOrganizationOperationRequest()
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
# Done; return the response.
return response
- def list_associations(
+ def patch_rule_unary(
self,
- request: Union[compute.ListAssociationsFirewallPolicyRequest, dict] = None,
+ request: Union[compute.PatchRuleFirewallPolicyRequest, dict] = None,
*,
+ firewall_policy: str = None,
+ firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.FirewallPoliciesListAssociationsResponse:
- r"""Lists associations of a specified target, i.e.,
- organization or folder.
+ ) -> compute.Operation:
+ r"""Patches a rule of the specified priority.
Args:
- request (Union[google.cloud.compute_v1.types.ListAssociationsFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.PatchRuleFirewallPolicyRequest, dict]):
The request object. A request message for
- FirewallPolicies.ListAssociations. See the method
- description for details.
+ FirewallPolicies.PatchRule. See the method description
+ for details.
+ firewall_policy (str):
+ Name of the firewall policy to
+ update.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1259,20 +2131,37 @@ def list_associations(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.FirewallPoliciesListAssociationsResponse:
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([firewall_policy, firewall_policy_rule_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListAssociationsFirewallPolicyRequest.
+ # in a compute.PatchRuleFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ListAssociationsFirewallPolicyRequest):
- request = compute.ListAssociationsFirewallPolicyRequest(request)
+ if not isinstance(request, compute.PatchRuleFirewallPolicyRequest):
+ request = compute.PatchRuleFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+ if firewall_policy_rule_resource is not None:
+ request.firewall_policy_rule_resource = firewall_policy_rule_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list_associations]
+ rpc = self._transport._wrapped_methods[self._transport.patch_rule]
# Send the request.
response = rpc(
@@ -1285,23 +2174,23 @@ def list_associations(
# Done; return the response.
return response
- def move_unary(
+ def patch_rule(
self,
- request: Union[compute.MoveFirewallPolicyRequest, dict] = None,
+ request: Union[compute.PatchRuleFirewallPolicyRequest, dict] = None,
*,
firewall_policy: str = None,
- parent_id: str = None,
+ firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Moves the specified firewall policy.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches a rule of the specified priority.
Args:
- request (Union[google.cloud.compute_v1.types.MoveFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.PatchRuleFirewallPolicyRequest, dict]):
The request object. A request message for
- FirewallPolicies.Move. See the method description for
- details.
+ FirewallPolicies.PatchRule. See the method description
+ for details.
firewall_policy (str):
Name of the firewall policy to
update.
@@ -1309,11 +2198,9 @@ def move_unary(
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- parent_id (str):
- The new parent of the firewall
- policy.
-
- This corresponds to the ``parent_id`` field
+ firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_rule_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1323,28 +2210,15 @@ def move_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([firewall_policy, parent_id])
+ has_flattened_params = any([firewall_policy, firewall_policy_rule_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1352,21 +2226,21 @@ def move_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.MoveFirewallPolicyRequest.
+ # in a compute.PatchRuleFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.MoveFirewallPolicyRequest):
- request = compute.MoveFirewallPolicyRequest(request)
+ if not isinstance(request, compute.PatchRuleFirewallPolicyRequest):
+ request = compute.PatchRuleFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if firewall_policy is not None:
request.firewall_policy = firewall_policy
- if parent_id is not None:
- request.parent_id = parent_id
+ if firewall_policy_rule_resource is not None:
+ request.firewall_policy_rule_resource = firewall_policy_rule_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.move]
+ rpc = self._transport._wrapped_methods[self._transport.patch_rule]
# Send the request.
response = rpc(
@@ -1376,27 +2250,49 @@ def move_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_organization_operations_client
+ operation_request = compute.GetGlobalOrganizationOperationRequest()
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def patch_unary(
+ def remove_association_unary(
self,
- request: Union[compute.PatchFirewallPolicyRequest, dict] = None,
+ request: Union[compute.RemoveAssociationFirewallPolicyRequest, dict] = None,
*,
firewall_policy: str = None,
- firewall_policy_resource: compute.FirewallPolicy = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Patches the specified policy with the data included
- in the request.
+ r"""Removes an association for the specified firewall
+ policy.
Args:
- request (Union[google.cloud.compute_v1.types.PatchFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.RemoveAssociationFirewallPolicyRequest, dict]):
The request object. A request message for
- FirewallPolicies.Patch. See the method description for
- details.
+ FirewallPolicies.RemoveAssociation. See the method
+ description for details.
firewall_policy (str):
Name of the firewall policy to
update.
@@ -1404,11 +2300,6 @@ def patch_unary(
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
- The body resource for this request
- This corresponds to the ``firewall_policy_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1416,28 +2307,15 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([firewall_policy, firewall_policy_resource])
+ has_flattened_params = any([firewall_policy])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1445,21 +2323,19 @@ def patch_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.PatchFirewallPolicyRequest.
+ # in a compute.RemoveAssociationFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.PatchFirewallPolicyRequest):
- request = compute.PatchFirewallPolicyRequest(request)
+ if not isinstance(request, compute.RemoveAssociationFirewallPolicyRequest):
+ request = compute.RemoveAssociationFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if firewall_policy is not None:
request.firewall_policy = firewall_policy
- if firewall_policy_resource is not None:
- request.firewall_policy_resource = firewall_policy_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.patch]
+ rpc = self._transport._wrapped_methods[self._transport.remove_association]
# Send the request.
response = rpc(
@@ -1472,23 +2348,23 @@ def patch_unary(
# Done; return the response.
return response
- def patch_rule_unary(
+ def remove_association(
self,
- request: Union[compute.PatchRuleFirewallPolicyRequest, dict] = None,
+ request: Union[compute.RemoveAssociationFirewallPolicyRequest, dict] = None,
*,
firewall_policy: str = None,
- firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Patches a rule of the specified priority.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Removes an association for the specified firewall
+ policy.
Args:
- request (Union[google.cloud.compute_v1.types.PatchRuleFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.RemoveAssociationFirewallPolicyRequest, dict]):
The request object. A request message for
- FirewallPolicies.PatchRule. See the method description
- for details.
+ FirewallPolicies.RemoveAssociation. See the method
+ description for details.
firewall_policy (str):
Name of the firewall policy to
update.
@@ -1496,11 +2372,6 @@ def patch_rule_unary(
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
- The body resource for this request
- This corresponds to the ``firewall_policy_rule_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1508,28 +2379,15 @@ def patch_rule_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([firewall_policy, firewall_policy_rule_resource])
+ has_flattened_params = any([firewall_policy])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1537,21 +2395,19 @@ def patch_rule_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.PatchRuleFirewallPolicyRequest.
+ # in a compute.RemoveAssociationFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.PatchRuleFirewallPolicyRequest):
- request = compute.PatchRuleFirewallPolicyRequest(request)
+ if not isinstance(request, compute.RemoveAssociationFirewallPolicyRequest):
+ request = compute.RemoveAssociationFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if firewall_policy is not None:
request.firewall_policy = firewall_policy
- if firewall_policy_rule_resource is not None:
- request.firewall_policy_rule_resource = firewall_policy_rule_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.patch_rule]
+ rpc = self._transport._wrapped_methods[self._transport.remove_association]
# Send the request.
response = rpc(
@@ -1561,26 +2417,48 @@ def patch_rule_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_organization_operations_client
+ operation_request = compute.GetGlobalOrganizationOperationRequest()
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def remove_association_unary(
+ def remove_rule_unary(
self,
- request: Union[compute.RemoveAssociationFirewallPolicyRequest, dict] = None,
+ request: Union[compute.RemoveRuleFirewallPolicyRequest, dict] = None,
*,
firewall_policy: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Removes an association for the specified firewall
- policy.
+ r"""Deletes a rule of the specified priority.
Args:
- request (Union[google.cloud.compute_v1.types.RemoveAssociationFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.RemoveRuleFirewallPolicyRequest, dict]):
The request object. A request message for
- FirewallPolicies.RemoveAssociation. See the method
- description for details.
+ FirewallPolicies.RemoveRule. See the method description
+ for details.
firewall_policy (str):
Name of the firewall policy to
update.
@@ -1595,22 +2473,9 @@ def remove_association_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1624,11 +2489,11 @@ def remove_association_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.RemoveAssociationFirewallPolicyRequest.
+ # in a compute.RemoveRuleFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.RemoveAssociationFirewallPolicyRequest):
- request = compute.RemoveAssociationFirewallPolicyRequest(request)
+ if not isinstance(request, compute.RemoveRuleFirewallPolicyRequest):
+ request = compute.RemoveRuleFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if firewall_policy is not None:
@@ -1636,7 +2501,7 @@ def remove_association_unary(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.remove_association]
+ rpc = self._transport._wrapped_methods[self._transport.remove_rule]
# Send the request.
response = rpc(
@@ -1649,7 +2514,7 @@ def remove_association_unary(
# Done; return the response.
return response
- def remove_rule_unary(
+ def remove_rule(
self,
request: Union[compute.RemoveRuleFirewallPolicyRequest, dict] = None,
*,
@@ -1657,7 +2522,7 @@ def remove_rule_unary(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
+ ) -> extended_operation.ExtendedOperation:
r"""Deletes a rule of the specified priority.
Args:
@@ -1679,22 +2544,9 @@ def remove_rule_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1730,6 +2582,29 @@ def remove_rule_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_organization_operations_client
+ operation_request = compute.GetGlobalOrganizationOperationRequest()
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/firewall_policies/transports/base.py b/google/cloud/compute_v1/services/firewall_policies/transports/base.py
index 10c48b4a9..4957b8a2d 100644
--- a/google/cloud/compute_v1/services/firewall_policies/transports/base.py
+++ b/google/cloud/compute_v1/services/firewall_policies/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_organization_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -394,5 +397,29 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_organization_operations_client(
+ self,
+ ) -> global_organization_operations.GlobalOrganizationOperationsClient:
+ ex_op_service = self._extended_operations_services.get(
+ "global_organization_operations"
+ )
+ if not ex_op_service:
+ ex_op_service = (
+ global_organization_operations.GlobalOrganizationOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ )
+ self._extended_operations_services[
+ "global_organization_operations"
+ ] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("FirewallPoliciesTransport",)
diff --git a/google/cloud/compute_v1/services/firewall_policies/transports/rest.py b/google/cloud/compute_v1/services/firewall_policies/transports/rest.py
index f422d980a..b95a6cade 100644
--- a/google/cloud/compute_v1/services/firewall_policies/transports/rest.py
+++ b/google/cloud/compute_v1/services/firewall_policies/transports/rest.py
@@ -1533,7 +1533,9 @@ class _Insert(FirewallPoliciesRestStub):
def __hash__(self):
return hash("Insert")
- __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, str] = {}
+ __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, str] = {
+ "parentId": "",
+ }
@classmethod
def _get_unset_required_fields(cls, message_dict):
@@ -1803,7 +1805,9 @@ class _Move(FirewallPoliciesRestStub):
def __hash__(self):
return hash("Move")
- __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, str] = {}
+ __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, str] = {
+ "parentId": "",
+ }
@classmethod
def _get_unset_required_fields(cls, message_dict):
@@ -2836,6 +2840,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/firewalls/client.py b/google/cloud/compute_v1/services/firewalls/client.py
index d2bbc3a64..f85426707 100644
--- a/google/cloud/compute_v1/services/firewalls/client.py
+++ b/google/cloud/compute_v1/services/firewalls/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.firewalls import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import FirewallsTransport, DEFAULT_CLIENT_INFO
@@ -434,22 +437,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -490,6 +480,107 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteFirewallRequest, dict] = None,
+ *,
+ project: str = None,
+ firewall: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified firewall.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteFirewallRequest, dict]):
+ The request object. A request message for
+ Firewalls.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall (str):
+ Name of the firewall rule to delete.
+ This corresponds to the ``firewall`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, firewall])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteFirewallRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteFirewallRequest):
+ request = compute.DeleteFirewallRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if firewall is not None:
+ request.firewall = firewall
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetFirewallRequest, dict] = None,
@@ -604,22 +695,87 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, firewall_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertFirewallRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertFirewallRequest):
+ request = compute.InsertFirewallRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if firewall_resource is not None:
+ request.firewall_resource = firewall_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertFirewallRequest, dict] = None,
+ *,
+ project: str = None,
+ firewall_resource: compute.Firewall = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a firewall rule in the specified project
+ using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertFirewallRequest, dict]):
+ The request object. A request message for
+ Firewalls.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_resource (google.cloud.compute_v1.types.Firewall):
+ The body resource for this request
+ This corresponds to the ``firewall_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -657,6 +813,30 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -782,22 +962,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -840,6 +1007,117 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchFirewallRequest, dict] = None,
+ *,
+ project: str = None,
+ firewall: str = None,
+ firewall_resource: compute.Firewall = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified firewall rule with the data
+ included in the request. This method supports PATCH
+ semantics and uses the JSON merge patch format and
+ processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchFirewallRequest, dict]):
+ The request object. A request message for
+ Firewalls.Patch. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall (str):
+ Name of the firewall rule to patch.
+ This corresponds to the ``firewall`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_resource (google.cloud.compute_v1.types.Firewall):
+ The body resource for this request
+ This corresponds to the ``firewall_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, firewall, firewall_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchFirewallRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchFirewallRequest):
+ request = compute.PatchFirewallRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if firewall is not None:
+ request.firewall = firewall
+ if firewall_resource is not None:
+ request.firewall_resource = firewall_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def update_unary(
self,
request: Union[compute.UpdateFirewallRequest, dict] = None,
@@ -884,22 +1162,9 @@ def update_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -942,6 +1207,119 @@ def update_unary(
# Done; return the response.
return response
+ def update(
+ self,
+ request: Union[compute.UpdateFirewallRequest, dict] = None,
+ *,
+ project: str = None,
+ firewall: str = None,
+ firewall_resource: compute.Firewall = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified firewall rule with the data
+ included in the request. Note that all fields will be
+ updated if using PUT, even fields that are not
+ specified. To update individual fields, please use PATCH
+ instead.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.UpdateFirewallRequest, dict]):
+ The request object. A request message for
+ Firewalls.Update. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall (str):
+ Name of the firewall rule to update.
+ This corresponds to the ``firewall`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_resource (google.cloud.compute_v1.types.Firewall):
+ The body resource for this request
+ This corresponds to the ``firewall_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, firewall, firewall_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.UpdateFirewallRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.UpdateFirewallRequest):
+ request = compute.UpdateFirewallRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if firewall is not None:
+ request.firewall = firewall
+ if firewall_resource is not None:
+ request.firewall_resource = firewall_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.update]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/firewalls/transports/base.py b/google/cloud/compute_v1/services/firewalls/transports/base.py
index 4f9ecc4d9..a9efcaf3e 100644
--- a/google/cloud/compute_v1/services/firewalls/transports/base.py
+++ b/google/cloud/compute_v1/services/firewalls/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -218,5 +221,21 @@ def update(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("FirewallsTransport",)
diff --git a/google/cloud/compute_v1/services/firewalls/transports/rest.py b/google/cloud/compute_v1/services/firewalls/transports/rest.py
index 9f7fa455e..e5f560ada 100644
--- a/google/cloud/compute_v1/services/firewalls/transports/rest.py
+++ b/google/cloud/compute_v1/services/firewalls/transports/rest.py
@@ -1010,6 +1010,10 @@ def update(self) -> Callable[[compute.UpdateFirewallRequest], compute.Operation]
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/forwarding_rules/client.py b/google/cloud/compute_v1/services/forwarding_rules/client.py
index a7c0aaa73..2c56d062c 100644
--- a/google/cloud/compute_v1/services/forwarding_rules/client.py
+++ b/google/cloud/compute_v1/services/forwarding_rules/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.forwarding_rules import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import ForwardingRulesTransport, DEFAULT_CLIENT_INFO
@@ -525,22 +528,98 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, forwarding_rule])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteForwardingRuleRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteForwardingRuleRequest):
+ request = compute.DeleteForwardingRuleRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if forwarding_rule is not None:
+ request.forwarding_rule = forwarding_rule
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def delete(
+ self,
+ request: Union[compute.DeleteForwardingRuleRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ forwarding_rule: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified ForwardingRule resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteForwardingRuleRequest, dict]):
+ The request object. A request message for
+ ForwardingRules.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ forwarding_rule (str):
+ Name of the ForwardingRule resource
+ to delete.
+
+ This corresponds to the ``forwarding_rule`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -580,6 +659,31 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -726,22 +830,98 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, forwarding_rule_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertForwardingRuleRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertForwardingRuleRequest):
+ request = compute.InsertForwardingRuleRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if forwarding_rule_resource is not None:
+ request.forwarding_rule_resource = forwarding_rule_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertForwardingRuleRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ forwarding_rule_resource: compute.ForwardingRule = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a ForwardingRule resource in the specified
+ project and region using the data included in the
+ request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertForwardingRuleRequest, dict]):
+ The request object. A request message for
+ ForwardingRules.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ forwarding_rule_resource (google.cloud.compute_v1.types.ForwardingRule):
+ The body resource for this request
+ This corresponds to the ``forwarding_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -781,6 +961,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -929,22 +1134,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -991,6 +1183,133 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchForwardingRuleRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ forwarding_rule: str = None,
+ forwarding_rule_resource: compute.ForwardingRule = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified forwarding rule with the data included in
+ the request. This method supports PATCH semantics and uses the
+ JSON merge patch format and processing rules. Currently, you can
+ only patch the network_tier field.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchForwardingRuleRequest, dict]):
+ The request object. A request message for
+ ForwardingRules.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ forwarding_rule (str):
+ Name of the ForwardingRule resource
+ to patch.
+
+ This corresponds to the ``forwarding_rule`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ forwarding_rule_resource (google.cloud.compute_v1.types.ForwardingRule):
+ The body resource for this request
+ This corresponds to the ``forwarding_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, forwarding_rule, forwarding_rule_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchForwardingRuleRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchForwardingRuleRequest):
+ request = compute.PatchForwardingRuleRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if forwarding_rule is not None:
+ request.forwarding_rule = forwarding_rule
+ if forwarding_rule_resource is not None:
+ request.forwarding_rule_resource = forwarding_rule_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def set_labels_unary(
self,
request: Union[compute.SetLabelsForwardingRuleRequest, dict] = None,
@@ -1041,22 +1360,9 @@ def set_labels_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1105,6 +1411,132 @@ def set_labels_unary(
# Done; return the response.
return response
+ def set_labels(
+ self,
+ request: Union[compute.SetLabelsForwardingRuleRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ resource: str = None,
+ region_set_labels_request_resource: compute.RegionSetLabelsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the labels on the specified resource. To learn
+ more about labels, read the Labeling Resources
+ documentation.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetLabelsForwardingRuleRequest, dict]):
+ The request object. A request message for
+ ForwardingRules.SetLabels. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ The region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest):
+ The body resource for this request
+ This corresponds to the ``region_set_labels_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, resource, region_set_labels_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetLabelsForwardingRuleRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetLabelsForwardingRuleRequest):
+ request = compute.SetLabelsForwardingRuleRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if resource is not None:
+ request.resource = resource
+ if region_set_labels_request_resource is not None:
+ request.region_set_labels_request_resource = (
+ region_set_labels_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_labels]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def set_target_unary(
self,
request: Union[compute.SetTargetForwardingRuleRequest, dict] = None,
@@ -1156,22 +1588,9 @@ def set_target_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1218,6 +1637,131 @@ def set_target_unary(
# Done; return the response.
return response
+ def set_target(
+ self,
+ request: Union[compute.SetTargetForwardingRuleRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ forwarding_rule: str = None,
+ target_reference_resource: compute.TargetReference = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Changes target URL for forwarding rule. The new
+ target should be of the same type as the old target.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetTargetForwardingRuleRequest, dict]):
+ The request object. A request message for
+ ForwardingRules.SetTarget. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ forwarding_rule (str):
+ Name of the ForwardingRule resource
+ in which target is to be set.
+
+ This corresponds to the ``forwarding_rule`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_reference_resource (google.cloud.compute_v1.types.TargetReference):
+ The body resource for this request
+ This corresponds to the ``target_reference_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, forwarding_rule, target_reference_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetTargetForwardingRuleRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetTargetForwardingRuleRequest):
+ request = compute.SetTargetForwardingRuleRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if forwarding_rule is not None:
+ request.forwarding_rule = forwarding_rule
+ if target_reference_resource is not None:
+ request.target_reference_resource = target_reference_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_target]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/forwarding_rules/transports/base.py b/google/cloud/compute_v1/services/forwarding_rules/transports/base.py
index d0beee2c8..884e2b0ae 100644
--- a/google/cloud/compute_v1/services/forwarding_rules/transports/base.py
+++ b/google/cloud/compute_v1/services/forwarding_rules/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -249,5 +252,21 @@ def set_target(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("ForwardingRulesTransport",)
diff --git a/google/cloud/compute_v1/services/forwarding_rules/transports/rest.py b/google/cloud/compute_v1/services/forwarding_rules/transports/rest.py
index 6fb679f98..e26a04c7f 100644
--- a/google/cloud/compute_v1/services/forwarding_rules/transports/rest.py
+++ b/google/cloud/compute_v1/services/forwarding_rules/transports/rest.py
@@ -1348,6 +1348,10 @@ def set_target(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/global_addresses/client.py b/google/cloud/compute_v1/services/global_addresses/client.py
index 326e398d1..04a8a669f 100644
--- a/google/cloud/compute_v1/services/global_addresses/client.py
+++ b/google/cloud/compute_v1/services/global_addresses/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.global_addresses import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import GlobalAddressesTransport, DEFAULT_CLIENT_INFO
@@ -438,22 +441,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -494,6 +484,109 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteGlobalAddressRequest, dict] = None,
+ *,
+ project: str = None,
+ address: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified address resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteGlobalAddressRequest, dict]):
+ The request object. A request message for
+ GlobalAddresses.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ address (str):
+ Name of the address resource to
+ delete.
+
+ This corresponds to the ``address`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, address])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteGlobalAddressRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteGlobalAddressRequest):
+ request = compute.DeleteGlobalAddressRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if address is not None:
+ request.address = address
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetGlobalAddressRequest, dict] = None,
@@ -614,22 +707,87 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, address_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertGlobalAddressRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertGlobalAddressRequest):
+ request = compute.InsertGlobalAddressRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if address_resource is not None:
+ request.address_resource = address_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertGlobalAddressRequest, dict] = None,
+ *,
+ project: str = None,
+ address_resource: compute.Address = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates an address resource in the specified project
+ by using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertGlobalAddressRequest, dict]):
+ The request object. A request message for
+ GlobalAddresses.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ address_resource (google.cloud.compute_v1.types.Address):
+ The body resource for this request
+ This corresponds to the ``address_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -667,6 +825,30 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/global_addresses/transports/base.py b/google/cloud/compute_v1/services/global_addresses/transports/base.py
index c2224499b..6f741c1f3 100644
--- a/google/cloud/compute_v1/services/global_addresses/transports/base.py
+++ b/google/cloud/compute_v1/services/global_addresses/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -190,5 +193,21 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("GlobalAddressesTransport",)
diff --git a/google/cloud/compute_v1/services/global_addresses/transports/rest.py b/google/cloud/compute_v1/services/global_addresses/transports/rest.py
index 613226d75..3f11c99f5 100644
--- a/google/cloud/compute_v1/services/global_addresses/transports/rest.py
+++ b/google/cloud/compute_v1/services/global_addresses/transports/rest.py
@@ -735,6 +735,10 @@ def list(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/global_forwarding_rules/client.py b/google/cloud/compute_v1/services/global_forwarding_rules/client.py
index 8edb12412..59ad112ec 100644
--- a/google/cloud/compute_v1/services/global_forwarding_rules/client.py
+++ b/google/cloud/compute_v1/services/global_forwarding_rules/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.global_forwarding_rules import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import GlobalForwardingRulesTransport, DEFAULT_CLIENT_INFO
@@ -438,22 +441,88 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, forwarding_rule])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteGlobalForwardingRuleRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteGlobalForwardingRuleRequest):
+ request = compute.DeleteGlobalForwardingRuleRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if forwarding_rule is not None:
+ request.forwarding_rule = forwarding_rule
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def delete(
+ self,
+ request: Union[compute.DeleteGlobalForwardingRuleRequest, dict] = None,
+ *,
+ project: str = None,
+ forwarding_rule: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified GlobalForwardingRule resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteGlobalForwardingRuleRequest, dict]):
+ The request object. A request message for
+ GlobalForwardingRules.Delete. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ forwarding_rule (str):
+ Name of the ForwardingRule resource
+ to delete.
+
+ This corresponds to the ``forwarding_rule`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -491,6 +560,30 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -621,22 +714,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -677,6 +757,109 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertGlobalForwardingRuleRequest, dict] = None,
+ *,
+ project: str = None,
+ forwarding_rule_resource: compute.ForwardingRule = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a GlobalForwardingRule resource in the
+ specified project using the data included in the
+ request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertGlobalForwardingRuleRequest, dict]):
+ The request object. A request message for
+ GlobalForwardingRules.Insert. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ forwarding_rule_resource (google.cloud.compute_v1.types.ForwardingRule):
+ The body resource for this request
+ This corresponds to the ``forwarding_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, forwarding_rule_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertGlobalForwardingRuleRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertGlobalForwardingRuleRequest):
+ request = compute.InsertGlobalForwardingRuleRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if forwarding_rule_resource is not None:
+ request.forwarding_rule_resource = forwarding_rule_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListGlobalForwardingRulesRequest, dict] = None,
@@ -804,22 +987,99 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, forwarding_rule, forwarding_rule_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchGlobalForwardingRuleRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchGlobalForwardingRuleRequest):
+ request = compute.PatchGlobalForwardingRuleRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if forwarding_rule is not None:
+ request.forwarding_rule = forwarding_rule
+ if forwarding_rule_resource is not None:
+ request.forwarding_rule_resource = forwarding_rule_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch(
+ self,
+ request: Union[compute.PatchGlobalForwardingRuleRequest, dict] = None,
+ *,
+ project: str = None,
+ forwarding_rule: str = None,
+ forwarding_rule_resource: compute.ForwardingRule = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified forwarding rule with the data included in
+ the request. This method supports PATCH semantics and uses the
+ JSON merge patch format and processing rules. Currently, you can
+ only patch the network_tier field.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchGlobalForwardingRuleRequest, dict]):
+ The request object. A request message for
+ GlobalForwardingRules.Patch. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ forwarding_rule (str):
+ Name of the ForwardingRule resource
+ to patch.
+
+ This corresponds to the ``forwarding_rule`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ forwarding_rule_resource (google.cloud.compute_v1.types.ForwardingRule):
+ The body resource for this request
+ This corresponds to the ``forwarding_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -859,6 +1119,30 @@ def patch_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -906,22 +1190,9 @@ def set_labels_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -968,6 +1239,123 @@ def set_labels_unary(
# Done; return the response.
return response
+ def set_labels(
+ self,
+ request: Union[compute.SetLabelsGlobalForwardingRuleRequest, dict] = None,
+ *,
+ project: str = None,
+ resource: str = None,
+ global_set_labels_request_resource: compute.GlobalSetLabelsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the labels on the specified resource. To learn
+ more about labels, read the Labeling resources
+ documentation.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetLabelsGlobalForwardingRuleRequest, dict]):
+ The request object. A request message for
+ GlobalForwardingRules.SetLabels. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest):
+ The body resource for this request
+ This corresponds to the ``global_set_labels_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, resource, global_set_labels_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetLabelsGlobalForwardingRuleRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetLabelsGlobalForwardingRuleRequest):
+ request = compute.SetLabelsGlobalForwardingRuleRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if resource is not None:
+ request.resource = resource
+ if global_set_labels_request_resource is not None:
+ request.global_set_labels_request_resource = (
+ global_set_labels_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_labels]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def set_target_unary(
self,
request: Union[compute.SetTargetGlobalForwardingRuleRequest, dict] = None,
@@ -1012,22 +1400,9 @@ def set_target_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1072,6 +1447,121 @@ def set_target_unary(
# Done; return the response.
return response
+ def set_target(
+ self,
+ request: Union[compute.SetTargetGlobalForwardingRuleRequest, dict] = None,
+ *,
+ project: str = None,
+ forwarding_rule: str = None,
+ target_reference_resource: compute.TargetReference = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Changes target URL for the GlobalForwardingRule
+ resource. The new target should be of the same type as
+ the old target.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetTargetGlobalForwardingRuleRequest, dict]):
+ The request object. A request message for
+ GlobalForwardingRules.SetTarget. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ forwarding_rule (str):
+ Name of the ForwardingRule resource
+ in which target is to be set.
+
+ This corresponds to the ``forwarding_rule`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_reference_resource (google.cloud.compute_v1.types.TargetReference):
+ The body resource for this request
+ This corresponds to the ``target_reference_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, forwarding_rule, target_reference_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetTargetGlobalForwardingRuleRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetTargetGlobalForwardingRuleRequest):
+ request = compute.SetTargetGlobalForwardingRuleRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if forwarding_rule is not None:
+ request.forwarding_rule = forwarding_rule
+ if target_reference_resource is not None:
+ request.target_reference_resource = target_reference_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_target]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/global_forwarding_rules/transports/base.py b/google/cloud/compute_v1/services/global_forwarding_rules/transports/base.py
index 1249dbd2f..6375f059a 100644
--- a/google/cloud/compute_v1/services/global_forwarding_rules/transports/base.py
+++ b/google/cloud/compute_v1/services/global_forwarding_rules/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -232,5 +235,21 @@ def set_target(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("GlobalForwardingRulesTransport",)
diff --git a/google/cloud/compute_v1/services/global_forwarding_rules/transports/rest.py b/google/cloud/compute_v1/services/global_forwarding_rules/transports/rest.py
index c3857b861..1ab3a48d1 100644
--- a/google/cloud/compute_v1/services/global_forwarding_rules/transports/rest.py
+++ b/google/cloud/compute_v1/services/global_forwarding_rules/transports/rest.py
@@ -1216,6 +1216,10 @@ def set_target(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/global_network_endpoint_groups/client.py b/google/cloud/compute_v1/services/global_network_endpoint_groups/client.py
index a4227738e..fc653ad06 100644
--- a/google/cloud/compute_v1/services/global_network_endpoint_groups/client.py
+++ b/google/cloud/compute_v1/services/global_network_endpoint_groups/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.global_network_endpoint_groups import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import GlobalNetworkEndpointGroupsTransport, DEFAULT_CLIENT_INFO
@@ -451,22 +454,9 @@ def attach_network_endpoints_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -524,6 +514,137 @@ def attach_network_endpoints_unary(
# Done; return the response.
return response
+ def attach_network_endpoints(
+ self,
+ request: Union[
+ compute.AttachNetworkEndpointsGlobalNetworkEndpointGroupRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ network_endpoint_group: str = None,
+ global_network_endpoint_groups_attach_endpoints_request_resource: compute.GlobalNetworkEndpointGroupsAttachEndpointsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Attach a network endpoint to the specified network
+ endpoint group.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.AttachNetworkEndpointsGlobalNetworkEndpointGroupRequest, dict]):
+ The request object. A request message for
+ GlobalNetworkEndpointGroups.AttachNetworkEndpoints. See
+ the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_endpoint_group (str):
+ The name of the network endpoint
+ group where you are attaching network
+ endpoints to. It should comply with
+ RFC1035.
+
+ This corresponds to the ``network_endpoint_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ global_network_endpoint_groups_attach_endpoints_request_resource (google.cloud.compute_v1.types.GlobalNetworkEndpointGroupsAttachEndpointsRequest):
+ The body resource for this request
+ This corresponds to the ``global_network_endpoint_groups_attach_endpoints_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ network_endpoint_group,
+ global_network_endpoint_groups_attach_endpoints_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.AttachNetworkEndpointsGlobalNetworkEndpointGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.AttachNetworkEndpointsGlobalNetworkEndpointGroupRequest
+ ):
+ request = compute.AttachNetworkEndpointsGlobalNetworkEndpointGroupRequest(
+ request
+ )
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if network_endpoint_group is not None:
+ request.network_endpoint_group = network_endpoint_group
+ if (
+ global_network_endpoint_groups_attach_endpoints_request_resource
+ is not None
+ ):
+ request.global_network_endpoint_groups_attach_endpoints_request_resource = (
+ global_network_endpoint_groups_attach_endpoints_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.attach_network_endpoints]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def delete_unary(
self,
request: Union[compute.DeleteGlobalNetworkEndpointGroupRequest, dict] = None,
@@ -563,22 +684,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -619,6 +727,112 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteGlobalNetworkEndpointGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ network_endpoint_group: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified network endpoint group.Note
+ that the NEG cannot be deleted if there are backend
+ services referencing it.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteGlobalNetworkEndpointGroupRequest, dict]):
+ The request object. A request message for
+ GlobalNetworkEndpointGroups.Delete. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_endpoint_group (str):
+ The name of the network endpoint
+ group to delete. It should comply with
+ RFC1035.
+
+ This corresponds to the ``network_endpoint_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, network_endpoint_group])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteGlobalNetworkEndpointGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteGlobalNetworkEndpointGroupRequest):
+ request = compute.DeleteGlobalNetworkEndpointGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if network_endpoint_group is not None:
+ request.network_endpoint_group = network_endpoint_group
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def detach_network_endpoints_unary(
self,
request: Union[
@@ -666,22 +880,116 @@ def detach_network_endpoints_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ network_endpoint_group,
+ global_network_endpoint_groups_detach_endpoints_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest
+ ):
+ request = compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest(
+ request
+ )
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if network_endpoint_group is not None:
+ request.network_endpoint_group = network_endpoint_group
+ if (
+ global_network_endpoint_groups_detach_endpoints_request_resource
+ is not None
+ ):
+ request.global_network_endpoint_groups_detach_endpoints_request_resource = (
+ global_network_endpoint_groups_detach_endpoints_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.detach_network_endpoints]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def detach_network_endpoints(
+ self,
+ request: Union[
+ compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ network_endpoint_group: str = None,
+ global_network_endpoint_groups_detach_endpoints_request_resource: compute.GlobalNetworkEndpointGroupsDetachEndpointsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Detach the network endpoint from the specified
+ network endpoint group.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest, dict]):
+ The request object. A request message for
+ GlobalNetworkEndpointGroups.DetachNetworkEndpoints. See
+ the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_endpoint_group (str):
+ The name of the network endpoint
+ group where you are removing network
+ endpoints. It should comply with
+ RFC1035.
+
+ This corresponds to the ``network_endpoint_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ global_network_endpoint_groups_detach_endpoints_request_resource (google.cloud.compute_v1.types.GlobalNetworkEndpointGroupsDetachEndpointsRequest):
+ The body resource for this request
+ This corresponds to the ``global_network_endpoint_groups_detach_endpoints_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -736,6 +1044,30 @@ def detach_network_endpoints_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -865,22 +1197,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -923,6 +1242,111 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertGlobalNetworkEndpointGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ network_endpoint_group_resource: compute.NetworkEndpointGroup = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a network endpoint group in the specified
+ project using the parameters that are included in the
+ request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertGlobalNetworkEndpointGroupRequest, dict]):
+ The request object. A request message for
+ GlobalNetworkEndpointGroups.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_endpoint_group_resource (google.cloud.compute_v1.types.NetworkEndpointGroup):
+ The body resource for this request
+ This corresponds to the ``network_endpoint_group_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, network_endpoint_group_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertGlobalNetworkEndpointGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertGlobalNetworkEndpointGroupRequest):
+ request = compute.InsertGlobalNetworkEndpointGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if network_endpoint_group_resource is not None:
+ request.network_endpoint_group_resource = (
+ network_endpoint_group_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListGlobalNetworkEndpointGroupsRequest, dict] = None,
diff --git a/google/cloud/compute_v1/services/global_network_endpoint_groups/transports/base.py b/google/cloud/compute_v1/services/global_network_endpoint_groups/transports/base.py
index b289b0e4f..5c85ac823 100644
--- a/google/cloud/compute_v1/services/global_network_endpoint_groups/transports/base.py
+++ b/google/cloud/compute_v1/services/global_network_endpoint_groups/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -238,5 +241,21 @@ def list_network_endpoints(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("GlobalNetworkEndpointGroupsTransport",)
diff --git a/google/cloud/compute_v1/services/global_network_endpoint_groups/transports/rest.py b/google/cloud/compute_v1/services/global_network_endpoint_groups/transports/rest.py
index 21f8c6166..568d8ad49 100644
--- a/google/cloud/compute_v1/services/global_network_endpoint_groups/transports/rest.py
+++ b/google/cloud/compute_v1/services/global_network_endpoint_groups/transports/rest.py
@@ -1255,6 +1255,10 @@ def list_network_endpoints(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/global_operations/client.py b/google/cloud/compute_v1/services/global_operations/client.py
index 211302584..d6f785cbc 100644
--- a/google/cloud/compute_v1/services/global_operations/client.py
+++ b/google/cloud/compute_v1/services/global_operations/client.py
@@ -16,7 +16,7 @@
from collections import OrderedDict
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
diff --git a/google/cloud/compute_v1/services/global_operations/transports/base.py b/google/cloud/compute_v1/services/global_operations/transports/base.py
index cc66e8598..2be12872f 100644
--- a/google/cloud/compute_v1/services/global_operations/transports/base.py
+++ b/google/cloud/compute_v1/services/global_operations/transports/base.py
@@ -83,6 +83,7 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -209,5 +210,9 @@ def wait(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
__all__ = ("GlobalOperationsTransport",)
diff --git a/google/cloud/compute_v1/services/global_operations/transports/rest.py b/google/cloud/compute_v1/services/global_operations/transports/rest.py
index 019fa3f32..b4b1394ab 100644
--- a/google/cloud/compute_v1/services/global_operations/transports/rest.py
+++ b/google/cloud/compute_v1/services/global_operations/transports/rest.py
@@ -868,6 +868,10 @@ def wait(self) -> Callable[[compute.WaitGlobalOperationRequest], compute.Operati
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/global_organization_operations/client.py b/google/cloud/compute_v1/services/global_organization_operations/client.py
index 9d9e2f127..251735241 100644
--- a/google/cloud/compute_v1/services/global_organization_operations/client.py
+++ b/google/cloud/compute_v1/services/global_organization_operations/client.py
@@ -16,7 +16,7 @@
from collections import OrderedDict
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
diff --git a/google/cloud/compute_v1/services/global_organization_operations/transports/base.py b/google/cloud/compute_v1/services/global_organization_operations/transports/base.py
index 3e7d4caaa..3d3f10a54 100644
--- a/google/cloud/compute_v1/services/global_organization_operations/transports/base.py
+++ b/google/cloud/compute_v1/services/global_organization_operations/transports/base.py
@@ -83,6 +83,7 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -179,5 +180,9 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
__all__ = ("GlobalOrganizationOperationsTransport",)
diff --git a/google/cloud/compute_v1/services/global_organization_operations/transports/rest.py b/google/cloud/compute_v1/services/global_organization_operations/transports/rest.py
index 375ffbb6e..d4a151478 100644
--- a/google/cloud/compute_v1/services/global_organization_operations/transports/rest.py
+++ b/google/cloud/compute_v1/services/global_organization_operations/transports/rest.py
@@ -590,6 +590,10 @@ def list(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/global_public_delegated_prefixes/client.py b/google/cloud/compute_v1/services/global_public_delegated_prefixes/client.py
index df06e43c7..c24251759 100644
--- a/google/cloud/compute_v1/services/global_public_delegated_prefixes/client.py
+++ b/google/cloud/compute_v1/services/global_public_delegated_prefixes/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.global_public_delegated_prefixes import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import GlobalPublicDelegatedPrefixesTransport, DEFAULT_CLIENT_INFO
@@ -440,22 +443,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -496,6 +486,109 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteGlobalPublicDelegatedPrefixeRequest, dict] = None,
+ *,
+ project: str = None,
+ public_delegated_prefix: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified global PublicDelegatedPrefix.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteGlobalPublicDelegatedPrefixeRequest, dict]):
+ The request object. A request message for
+ GlobalPublicDelegatedPrefixes.Delete. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ public_delegated_prefix (str):
+ Name of the PublicDelegatedPrefix
+ resource to delete.
+
+ This corresponds to the ``public_delegated_prefix`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, public_delegated_prefix])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteGlobalPublicDelegatedPrefixeRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteGlobalPublicDelegatedPrefixeRequest):
+ request = compute.DeleteGlobalPublicDelegatedPrefixeRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if public_delegated_prefix is not None:
+ request.public_delegated_prefix = public_delegated_prefix
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetGlobalPublicDelegatedPrefixeRequest, dict] = None,
@@ -619,22 +712,90 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, public_delegated_prefix_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertGlobalPublicDelegatedPrefixeRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertGlobalPublicDelegatedPrefixeRequest):
+ request = compute.InsertGlobalPublicDelegatedPrefixeRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if public_delegated_prefix_resource is not None:
+ request.public_delegated_prefix_resource = (
+ public_delegated_prefix_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertGlobalPublicDelegatedPrefixeRequest, dict] = None,
+ *,
+ project: str = None,
+ public_delegated_prefix_resource: compute.PublicDelegatedPrefix = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a global PublicDelegatedPrefix in the
+ specified project using the parameters that are included
+ in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertGlobalPublicDelegatedPrefixeRequest, dict]):
+ The request object. A request message for
+ GlobalPublicDelegatedPrefixes.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ public_delegated_prefix_resource (google.cloud.compute_v1.types.PublicDelegatedPrefix):
+ The body resource for this request
+ This corresponds to the ``public_delegated_prefix_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -674,6 +835,30 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -802,22 +987,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -864,6 +1036,124 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchGlobalPublicDelegatedPrefixeRequest, dict] = None,
+ *,
+ project: str = None,
+ public_delegated_prefix: str = None,
+ public_delegated_prefix_resource: compute.PublicDelegatedPrefix = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified global PublicDelegatedPrefix
+ resource with the data included in the request. This
+ method supports PATCH semantics and uses JSON merge
+ patch format and processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchGlobalPublicDelegatedPrefixeRequest, dict]):
+ The request object. A request message for
+ GlobalPublicDelegatedPrefixes.Patch. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ public_delegated_prefix (str):
+ Name of the PublicDelegatedPrefix
+ resource to patch.
+
+ This corresponds to the ``public_delegated_prefix`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ public_delegated_prefix_resource (google.cloud.compute_v1.types.PublicDelegatedPrefix):
+ The body resource for this request
+ This corresponds to the ``public_delegated_prefix_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, public_delegated_prefix, public_delegated_prefix_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchGlobalPublicDelegatedPrefixeRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchGlobalPublicDelegatedPrefixeRequest):
+ request = compute.PatchGlobalPublicDelegatedPrefixeRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if public_delegated_prefix is not None:
+ request.public_delegated_prefix = public_delegated_prefix
+ if public_delegated_prefix_resource is not None:
+ request.public_delegated_prefix_resource = (
+ public_delegated_prefix_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/global_public_delegated_prefixes/transports/base.py b/google/cloud/compute_v1/services/global_public_delegated_prefixes/transports/base.py
index e2f7aa7f1..c162ad580 100644
--- a/google/cloud/compute_v1/services/global_public_delegated_prefixes/transports/base.py
+++ b/google/cloud/compute_v1/services/global_public_delegated_prefixes/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -207,5 +210,21 @@ def patch(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("GlobalPublicDelegatedPrefixesTransport",)
diff --git a/google/cloud/compute_v1/services/global_public_delegated_prefixes/transports/rest.py b/google/cloud/compute_v1/services/global_public_delegated_prefixes/transports/rest.py
index 5823d53f6..ef3717f51 100644
--- a/google/cloud/compute_v1/services/global_public_delegated_prefixes/transports/rest.py
+++ b/google/cloud/compute_v1/services/global_public_delegated_prefixes/transports/rest.py
@@ -934,6 +934,10 @@ def patch(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/health_checks/client.py b/google/cloud/compute_v1/services/health_checks/client.py
index ade7a237e..971b6b32a 100644
--- a/google/cloud/compute_v1/services/health_checks/client.py
+++ b/google/cloud/compute_v1/services/health_checks/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.health_checks import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import HealthChecksTransport, DEFAULT_CLIENT_INFO
@@ -518,22 +521,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -574,6 +564,109 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteHealthCheckRequest, dict] = None,
+ *,
+ project: str = None,
+ health_check: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified HealthCheck resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteHealthCheckRequest, dict]):
+ The request object. A request message for
+ HealthChecks.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check (str):
+ Name of the HealthCheck resource to
+ delete.
+
+ This corresponds to the ``health_check`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, health_check])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteHealthCheckRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteHealthCheckRequest):
+ request = compute.DeleteHealthCheckRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if health_check is not None:
+ request.health_check = health_check
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetHealthCheckRequest, dict] = None,
@@ -707,22 +800,87 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, health_check_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertHealthCheckRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertHealthCheckRequest):
+ request = compute.InsertHealthCheckRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if health_check_resource is not None:
+ request.health_check_resource = health_check_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertHealthCheckRequest, dict] = None,
+ *,
+ project: str = None,
+ health_check_resource: compute.HealthCheck = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a HealthCheck resource in the specified
+ project using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertHealthCheckRequest, dict]):
+ The request object. A request message for
+ HealthChecks.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check_resource (google.cloud.compute_v1.types.HealthCheck):
+ The body resource for this request
+ This corresponds to the ``health_check_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -760,6 +918,30 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -890,22 +1072,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -948,6 +1117,120 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchHealthCheckRequest, dict] = None,
+ *,
+ project: str = None,
+ health_check: str = None,
+ health_check_resource: compute.HealthCheck = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates a HealthCheck resource in the specified
+ project using the data included in the request. This
+ method supports PATCH semantics and uses the JSON merge
+ patch format and processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchHealthCheckRequest, dict]):
+ The request object. A request message for
+ HealthChecks.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check (str):
+ Name of the HealthCheck resource to
+ patch.
+
+ This corresponds to the ``health_check`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check_resource (google.cloud.compute_v1.types.HealthCheck):
+ The body resource for this request
+ This corresponds to the ``health_check_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, health_check, health_check_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchHealthCheckRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchHealthCheckRequest):
+ request = compute.PatchHealthCheckRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if health_check is not None:
+ request.health_check = health_check
+ if health_check_resource is not None:
+ request.health_check_resource = health_check_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def update_unary(
self,
request: Union[compute.UpdateHealthCheckRequest, dict] = None,
@@ -991,22 +1274,9 @@ def update_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1049,6 +1319,118 @@ def update_unary(
# Done; return the response.
return response
+ def update(
+ self,
+ request: Union[compute.UpdateHealthCheckRequest, dict] = None,
+ *,
+ project: str = None,
+ health_check: str = None,
+ health_check_resource: compute.HealthCheck = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates a HealthCheck resource in the specified
+ project using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.UpdateHealthCheckRequest, dict]):
+ The request object. A request message for
+ HealthChecks.Update. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check (str):
+ Name of the HealthCheck resource to
+ update.
+
+ This corresponds to the ``health_check`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check_resource (google.cloud.compute_v1.types.HealthCheck):
+ The body resource for this request
+ This corresponds to the ``health_check_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, health_check, health_check_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.UpdateHealthCheckRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.UpdateHealthCheckRequest):
+ request = compute.UpdateHealthCheckRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if health_check is not None:
+ request.health_check = health_check
+ if health_check_resource is not None:
+ request.health_check_resource = health_check_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.update]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/health_checks/transports/base.py b/google/cloud/compute_v1/services/health_checks/transports/base.py
index feb1eb7ff..8b12f4624 100644
--- a/google/cloud/compute_v1/services/health_checks/transports/base.py
+++ b/google/cloud/compute_v1/services/health_checks/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -235,5 +238,21 @@ def update(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("HealthChecksTransport",)
diff --git a/google/cloud/compute_v1/services/health_checks/transports/rest.py b/google/cloud/compute_v1/services/health_checks/transports/rest.py
index 7002159b4..1adef03b5 100644
--- a/google/cloud/compute_v1/services/health_checks/transports/rest.py
+++ b/google/cloud/compute_v1/services/health_checks/transports/rest.py
@@ -1178,6 +1178,10 @@ def update(self) -> Callable[[compute.UpdateHealthCheckRequest], compute.Operati
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/image_family_views/client.py b/google/cloud/compute_v1/services/image_family_views/client.py
index b0c3897c4..a7e902510 100644
--- a/google/cloud/compute_v1/services/image_family_views/client.py
+++ b/google/cloud/compute_v1/services/image_family_views/client.py
@@ -16,7 +16,7 @@
from collections import OrderedDict
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
diff --git a/google/cloud/compute_v1/services/image_family_views/transports/base.py b/google/cloud/compute_v1/services/image_family_views/transports/base.py
index 96875805a..7b465f87d 100644
--- a/google/cloud/compute_v1/services/image_family_views/transports/base.py
+++ b/google/cloud/compute_v1/services/image_family_views/transports/base.py
@@ -84,6 +84,7 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -149,5 +150,9 @@ def get(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
__all__ = ("ImageFamilyViewsTransport",)
diff --git a/google/cloud/compute_v1/services/image_family_views/transports/rest.py b/google/cloud/compute_v1/services/image_family_views/transports/rest.py
index eaaf0bdcb..f449a0756 100644
--- a/google/cloud/compute_v1/services/image_family_views/transports/rest.py
+++ b/google/cloud/compute_v1/services/image_family_views/transports/rest.py
@@ -301,6 +301,10 @@ def get(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/images/client.py b/google/cloud/compute_v1/services/images/client.py
index 1b39ec338..2f0cfda73 100644
--- a/google/cloud/compute_v1/services/images/client.py
+++ b/google/cloud/compute_v1/services/images/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.images import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import ImagesTransport, DEFAULT_CLIENT_INFO
@@ -433,22 +436,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -489,6 +479,106 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteImageRequest, dict] = None,
+ *,
+ project: str = None,
+ image: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified image.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteImageRequest, dict]):
+ The request object. A request message for Images.Delete.
+ See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ image (str):
+ Name of the image resource to delete.
+ This corresponds to the ``image`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, image])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteImageRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteImageRequest):
+ request = compute.DeleteImageRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if image is not None:
+ request.image = image
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def deprecate_unary(
self,
request: Union[compute.DeprecateImageRequest, dict] = None,
@@ -531,22 +621,9 @@ def deprecate_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -589,6 +666,117 @@ def deprecate_unary(
# Done; return the response.
return response
+ def deprecate(
+ self,
+ request: Union[compute.DeprecateImageRequest, dict] = None,
+ *,
+ project: str = None,
+ image: str = None,
+ deprecation_status_resource: compute.DeprecationStatus = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the deprecation status of an image. If an empty
+ request body is given, clears the deprecation status
+ instead.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeprecateImageRequest, dict]):
+ The request object. A request message for
+ Images.Deprecate. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ image (str):
+ Image name.
+ This corresponds to the ``image`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ deprecation_status_resource (google.cloud.compute_v1.types.DeprecationStatus):
+ The body resource for this request
+ This corresponds to the ``deprecation_status_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, image, deprecation_status_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeprecateImageRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeprecateImageRequest):
+ request = compute.DeprecateImageRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if image is not None:
+ request.image = image
+ if deprecation_status_resource is not None:
+ request.deprecation_status_resource = deprecation_status_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.deprecate]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetImageRequest, dict] = None,
@@ -902,22 +1090,86 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, image_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertImageRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertImageRequest):
+ request = compute.InsertImageRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if image_resource is not None:
+ request.image_resource = image_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertImageRequest, dict] = None,
+ *,
+ project: str = None,
+ image_resource: compute.Image = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates an image in the specified project using the
+ data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertImageRequest, dict]):
+ The request object. A request message for Images.Insert.
+ See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ image_resource (google.cloud.compute_v1.types.Image):
+ The body resource for this request
+ This corresponds to the ``image_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -955,6 +1207,30 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -1085,22 +1361,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1143,6 +1406,116 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchImageRequest, dict] = None,
+ *,
+ project: str = None,
+ image: str = None,
+ image_resource: compute.Image = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified image with the data included in
+ the request. Only the following fields can be modified:
+ family, description, deprecation status.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchImageRequest, dict]):
+ The request object. A request message for Images.Patch.
+ See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ image (str):
+ Name of the image resource to patch.
+ This corresponds to the ``image`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ image_resource (google.cloud.compute_v1.types.Image):
+ The body resource for this request
+ This corresponds to the ``image_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, image, image_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchImageRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchImageRequest):
+ request = compute.PatchImageRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if image is not None:
+ request.image = image
+ if image_resource is not None:
+ request.image_resource = image_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def set_iam_policy(
self,
request: Union[compute.SetIamPolicyImageRequest, dict] = None,
@@ -1316,22 +1689,9 @@ def set_labels_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1378,6 +1738,122 @@ def set_labels_unary(
# Done; return the response.
return response
+ def set_labels(
+ self,
+ request: Union[compute.SetLabelsImageRequest, dict] = None,
+ *,
+ project: str = None,
+ resource: str = None,
+ global_set_labels_request_resource: compute.GlobalSetLabelsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the labels on an image. To learn more about
+ labels, read the Labeling Resources documentation.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetLabelsImageRequest, dict]):
+ The request object. A request message for
+ Images.SetLabels. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest):
+ The body resource for this request
+ This corresponds to the ``global_set_labels_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, resource, global_set_labels_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetLabelsImageRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetLabelsImageRequest):
+ request = compute.SetLabelsImageRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if resource is not None:
+ request.resource = resource
+ if global_set_labels_request_resource is not None:
+ request.global_set_labels_request_resource = (
+ global_set_labels_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_labels]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def test_iam_permissions(
self,
request: Union[compute.TestIamPermissionsImageRequest, dict] = None,
diff --git a/google/cloud/compute_v1/services/images/transports/base.py b/google/cloud/compute_v1/services/images/transports/base.py
index 5b8f5cce7..14c84882b 100644
--- a/google/cloud/compute_v1/services/images/transports/base.py
+++ b/google/cloud/compute_v1/services/images/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -289,5 +292,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("ImagesTransport",)
diff --git a/google/cloud/compute_v1/services/images/transports/rest.py b/google/cloud/compute_v1/services/images/transports/rest.py
index 76be15223..f9791f29b 100644
--- a/google/cloud/compute_v1/services/images/transports/rest.py
+++ b/google/cloud/compute_v1/services/images/transports/rest.py
@@ -1782,6 +1782,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/instance_group_managers/client.py b/google/cloud/compute_v1/services/instance_group_managers/client.py
index 921236396..d83bc3893 100644
--- a/google/cloud/compute_v1/services/instance_group_managers/client.py
+++ b/google/cloud/compute_v1/services/instance_group_managers/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.instance_group_managers import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import InstanceGroupManagersTransport, DEFAULT_CLIENT_INFO
@@ -470,22 +473,9 @@ def abandon_instances_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -539,6 +529,155 @@ def abandon_instances_unary(
# Done; return the response.
return response
+ def abandon_instances(
+ self,
+ request: Union[
+ compute.AbandonInstancesInstanceGroupManagerRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group_manager: str = None,
+ instance_group_managers_abandon_instances_request_resource: compute.InstanceGroupManagersAbandonInstancesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Flags the specified instances to be removed from the
+ managed instance group. Abandoning an instance does not
+ delete the instance, but it does remove the instance
+ from any target pools that are applied by the managed
+ instance group. This method reduces the targetSize of
+ the managed instance group by the number of instances
+ that you abandon. This operation is marked as DONE when
+ the action is scheduled even if the instances have not
+ yet been removed from the group. You must separately
+ verify the status of the abandoning action with the
+ listmanagedinstances method. If the group is part of a
+ backend service that has enabled connection draining, it
+ can take up to 60 seconds after the connection draining
+ duration has elapsed before the VM instance is removed
+ or deleted. You can specify a maximum of 1000 instances
+ with this method per request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.AbandonInstancesInstanceGroupManagerRequest, dict]):
+ The request object. Messages
+ A request message for
+ InstanceGroupManagers.AbandonInstances. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ managed instance group is located.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the managed instance
+ group.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_managers_abandon_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersAbandonInstancesRequest):
+ The body resource for this request
+ This corresponds to the ``instance_group_managers_abandon_instances_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance_group_manager,
+ instance_group_managers_abandon_instances_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.AbandonInstancesInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.AbandonInstancesInstanceGroupManagerRequest):
+ request = compute.AbandonInstancesInstanceGroupManagerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if instance_group_managers_abandon_instances_request_resource is not None:
+ request.instance_group_managers_abandon_instances_request_resource = (
+ instance_group_managers_abandon_instances_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.abandon_instances]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def aggregated_list(
self,
request: Union[compute.AggregatedListInstanceGroupManagersRequest, dict] = None,
@@ -674,22 +813,9 @@ def apply_updates_to_instances_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -749,32 +875,29 @@ def apply_updates_to_instances_unary(
# Done; return the response.
return response
- def create_instances_unary(
+ def apply_updates_to_instances(
self,
- request: Union[compute.CreateInstancesInstanceGroupManagerRequest, dict] = None,
+ request: Union[
+ compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest, dict
+ ] = None,
*,
project: str = None,
zone: str = None,
instance_group_manager: str = None,
- instance_group_managers_create_instances_request_resource: compute.InstanceGroupManagersCreateInstancesRequest = None,
+ instance_group_managers_apply_updates_request_resource: compute.InstanceGroupManagersApplyUpdatesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Creates instances with per-instance configs in this
- managed instance group. Instances are created using the
- current instance template. The create instances
- operation is marked DONE if the createInstances request
- is successful. The underlying actions take additional
- time. You must separately verify the status of the
- creating or actions with the listmanagedinstances
- method.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Applies changes to selected instances on the managed
+ instance group. This method can be used to apply new
+ overrides and/or new versions.
Args:
- request (Union[google.cloud.compute_v1.types.CreateInstancesInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.ApplyUpdatesToInstancesInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.CreateInstances. See the method
- description for details.
+ InstanceGroupManagers.ApplyUpdatesToInstances. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -782,22 +905,22 @@ def create_instances_unary(
should not be set.
zone (str):
The name of the zone where the
- managed instance group is located. It
- should conform to RFC1035.
+ managed instance group is located.
+ Should conform to RFC1035.
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
The name of the managed instance
- group. It should conform to RFC1035.
+ group, should conform to RFC1035.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance_group_managers_create_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersCreateInstancesRequest):
+ instance_group_managers_apply_updates_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersApplyUpdatesRequest):
The body resource for this request
- This corresponds to the ``instance_group_managers_create_instances_request_resource`` field
+ This corresponds to the ``instance_group_managers_apply_updates_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -807,22 +930,9 @@ def create_instances_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -833,7 +943,7 @@ def create_instances_unary(
project,
zone,
instance_group_manager,
- instance_group_managers_create_instances_request_resource,
+ instance_group_managers_apply_updates_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -843,11 +953,15 @@ def create_instances_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.CreateInstancesInstanceGroupManagerRequest.
+ # in a compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.CreateInstancesInstanceGroupManagerRequest):
- request = compute.CreateInstancesInstanceGroupManagerRequest(request)
+ if not isinstance(
+ request, compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest
+ ):
+ request = compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest(
+ request
+ )
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -856,14 +970,16 @@ def create_instances_unary(
request.zone = zone
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
- if instance_group_managers_create_instances_request_resource is not None:
- request.instance_group_managers_create_instances_request_resource = (
- instance_group_managers_create_instances_request_resource
+ if instance_group_managers_apply_updates_request_resource is not None:
+ request.instance_group_managers_apply_updates_request_resource = (
+ instance_group_managers_apply_updates_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.create_instances]
+ rpc = self._transport._wrapped_methods[
+ self._transport.apply_updates_to_instances
+ ]
# Send the request.
response = rpc(
@@ -873,30 +989,60 @@ def create_instances_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def delete_unary(
+ def create_instances_unary(
self,
- request: Union[compute.DeleteInstanceGroupManagerRequest, dict] = None,
+ request: Union[compute.CreateInstancesInstanceGroupManagerRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance_group_manager: str = None,
+ instance_group_managers_create_instances_request_resource: compute.InstanceGroupManagersCreateInstancesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Deletes the specified managed instance group and all
- of the instances in that group. Note that the instance
- group must not belong to a backend service. Read
- Deleting an instance group for more information.
+ r"""Creates instances with per-instance configs in this
+ managed instance group. Instances are created using the
+ current instance template. The create instances
+ operation is marked DONE if the createInstances request
+ is successful. The underlying actions take additional
+ time. You must separately verify the status of the
+ creating or actions with the listmanagedinstances
+ method.
Args:
- request (Union[google.cloud.compute_v1.types.DeleteInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.CreateInstancesInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.Delete. See the method description
- for details.
+ InstanceGroupManagers.CreateInstances. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -904,18 +1050,24 @@ def delete_unary(
should not be set.
zone (str):
The name of the zone where the
- managed instance group is located.
+ managed instance group is located. It
+ should conform to RFC1035.
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
The name of the managed instance
- group to delete.
+ group. It should conform to RFC1035.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ instance_group_managers_create_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersCreateInstancesRequest):
+ The body resource for this request
+ This corresponds to the ``instance_group_managers_create_instances_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -923,28 +1075,22 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance_group_manager])
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance_group_manager,
+ instance_group_managers_create_instances_request_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -952,11 +1098,11 @@ def delete_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.DeleteInstanceGroupManagerRequest.
+ # in a compute.CreateInstancesInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.DeleteInstanceGroupManagerRequest):
- request = compute.DeleteInstanceGroupManagerRequest(request)
+ if not isinstance(request, compute.CreateInstancesInstanceGroupManagerRequest):
+ request = compute.CreateInstancesInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -965,10 +1111,14 @@ def delete_unary(
request.zone = zone
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
+ if instance_group_managers_create_instances_request_resource is not None:
+ request.instance_group_managers_create_instances_request_resource = (
+ instance_group_managers_create_instances_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.delete]
+ rpc = self._transport._wrapped_methods[self._transport.create_instances]
# Send the request.
response = rpc(
@@ -981,38 +1131,31 @@ def delete_unary(
# Done; return the response.
return response
- def delete_instances_unary(
+ def create_instances(
self,
- request: Union[compute.DeleteInstancesInstanceGroupManagerRequest, dict] = None,
+ request: Union[compute.CreateInstancesInstanceGroupManagerRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance_group_manager: str = None,
- instance_group_managers_delete_instances_request_resource: compute.InstanceGroupManagersDeleteInstancesRequest = None,
+ instance_group_managers_create_instances_request_resource: compute.InstanceGroupManagersCreateInstancesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Flags the specified instances in the managed instance
- group for immediate deletion. The instances are also
- removed from any target pools of which they were a
- member. This method reduces the targetSize of the
- managed instance group by the number of instances that
- you delete. This operation is marked as DONE when the
- action is scheduled even if the instances are still
- being deleted. You must separately verify the status of
- the deleting action with the listmanagedinstances
- method. If the group is part of a backend service that
- has enabled connection draining, it can take up to 60
- seconds after the connection draining duration has
- elapsed before the VM instance is removed or deleted.
- You can specify a maximum of 1000 instances with this
- method per request.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates instances with per-instance configs in this
+ managed instance group. Instances are created using the
+ current instance template. The create instances
+ operation is marked DONE if the createInstances request
+ is successful. The underlying actions take additional
+ time. You must separately verify the status of the
+ creating or actions with the listmanagedinstances
+ method.
Args:
- request (Union[google.cloud.compute_v1.types.DeleteInstancesInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.CreateInstancesInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.DeleteInstances. See the method
+ InstanceGroupManagers.CreateInstances. See the method
description for details.
project (str):
Project ID for this request.
@@ -1021,21 +1164,22 @@ def delete_instances_unary(
should not be set.
zone (str):
The name of the zone where the
- managed instance group is located.
+ managed instance group is located. It
+ should conform to RFC1035.
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
The name of the managed instance
- group.
+ group. It should conform to RFC1035.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance_group_managers_delete_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersDeleteInstancesRequest):
+ instance_group_managers_create_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersCreateInstancesRequest):
The body resource for this request
- This corresponds to the ``instance_group_managers_delete_instances_request_resource`` field
+ This corresponds to the ``instance_group_managers_create_instances_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1045,22 +1189,9 @@ def delete_instances_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1071,7 +1202,7 @@ def delete_instances_unary(
project,
zone,
instance_group_manager,
- instance_group_managers_delete_instances_request_resource,
+ instance_group_managers_create_instances_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -1081,11 +1212,11 @@ def delete_instances_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.DeleteInstancesInstanceGroupManagerRequest.
+ # in a compute.CreateInstancesInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.DeleteInstancesInstanceGroupManagerRequest):
- request = compute.DeleteInstancesInstanceGroupManagerRequest(request)
+ if not isinstance(request, compute.CreateInstancesInstanceGroupManagerRequest):
+ request = compute.CreateInstancesInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1094,14 +1225,14 @@ def delete_instances_unary(
request.zone = zone
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
- if instance_group_managers_delete_instances_request_resource is not None:
- request.instance_group_managers_delete_instances_request_resource = (
- instance_group_managers_delete_instances_request_resource
+ if instance_group_managers_create_instances_request_resource is not None:
+ request.instance_group_managers_create_instances_request_resource = (
+ instance_group_managers_create_instances_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.delete_instances]
+ rpc = self._transport._wrapped_methods[self._transport.create_instances]
# Send the request.
response = rpc(
@@ -1111,31 +1242,55 @@ def delete_instances_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def delete_per_instance_configs_unary(
+ def delete_unary(
self,
- request: Union[
- compute.DeletePerInstanceConfigsInstanceGroupManagerRequest, dict
- ] = None,
+ request: Union[compute.DeleteInstanceGroupManagerRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance_group_manager: str = None,
- instance_group_managers_delete_per_instance_configs_req_resource: compute.InstanceGroupManagersDeletePerInstanceConfigsReq = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Deletes selected per-instance configs for the managed
- instance group.
+ r"""Deletes the specified managed instance group and all
+ of the instances in that group. Note that the instance
+ group must not belong to a backend service. Read
+ Deleting an instance group for more information.
Args:
- request (Union[google.cloud.compute_v1.types.DeletePerInstanceConfigsInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.DeletePerInstanceConfigs. See the
- method description for details.
+ InstanceGroupManagers.Delete. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1143,24 +1298,18 @@ def delete_per_instance_configs_unary(
should not be set.
zone (str):
The name of the zone where the
- managed instance group is located. It
- should conform to RFC1035.
+ managed instance group is located.
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
The name of the managed instance
- group. It should conform to RFC1035.
+ group to delete.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance_group_managers_delete_per_instance_configs_req_resource (google.cloud.compute_v1.types.InstanceGroupManagersDeletePerInstanceConfigsReq):
- The body resource for this request
- This corresponds to the ``instance_group_managers_delete_per_instance_configs_req_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1168,35 +1317,15 @@ def delete_per_instance_configs_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [
- project,
- zone,
- instance_group_manager,
- instance_group_managers_delete_per_instance_configs_req_resource,
- ]
- )
+ has_flattened_params = any([project, zone, instance_group_manager])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1204,15 +1333,11 @@ def delete_per_instance_configs_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.DeletePerInstanceConfigsInstanceGroupManagerRequest.
+ # in a compute.DeleteInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(
- request, compute.DeletePerInstanceConfigsInstanceGroupManagerRequest
- ):
- request = compute.DeletePerInstanceConfigsInstanceGroupManagerRequest(
- request
- )
+ if not isinstance(request, compute.DeleteInstanceGroupManagerRequest):
+ request = compute.DeleteInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1221,19 +1346,10 @@ def delete_per_instance_configs_unary(
request.zone = zone
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
- if (
- instance_group_managers_delete_per_instance_configs_req_resource
- is not None
- ):
- request.instance_group_managers_delete_per_instance_configs_req_resource = (
- instance_group_managers_delete_per_instance_configs_req_resource
- )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[
- self._transport.delete_per_instance_configs
- ]
+ rpc = self._transport._wrapped_methods[self._transport.delete]
# Send the request.
response = rpc(
@@ -1246,9 +1362,9 @@ def delete_per_instance_configs_unary(
# Done; return the response.
return response
- def get(
+ def delete(
self,
- request: Union[compute.GetInstanceGroupManagerRequest, dict] = None,
+ request: Union[compute.DeleteInstanceGroupManagerRequest, dict] = None,
*,
project: str = None,
zone: str = None,
@@ -1256,15 +1372,16 @@ def get(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.InstanceGroupManager:
- r"""Returns all of the details about the specified
- managed instance group. Gets a list of available managed
- instance groups by making a list() request.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified managed instance group and all
+ of the instances in that group. Note that the instance
+ group must not belong to a backend service. Read
+ Deleting an instance group for more information.
Args:
- request (Union[google.cloud.compute_v1.types.GetInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.Get. See the method description
+ InstanceGroupManagers.Delete. See the method description
for details.
project (str):
Project ID for this request.
@@ -1280,7 +1397,7 @@ def get(
should not be set.
instance_group_manager (str):
The name of the managed instance
- group.
+ group to delete.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
@@ -1292,16 +1409,9 @@ def get(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.InstanceGroupManager:
- Represents a Managed Instance Group
- resource. An instance group is a
- collection of VM instances that you can
- manage as a single entity. For more
- information, read Instance groups. For
- zonal Managed Instance Group, use the
- instanceGroupManagers resource. For
- regional Managed Instance Group, use the
- regionInstanceGroupManagers resource.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1315,11 +1425,11 @@ def get(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetInstanceGroupManagerRequest.
+ # in a compute.DeleteInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetInstanceGroupManagerRequest):
- request = compute.GetInstanceGroupManagerRequest(request)
+ if not isinstance(request, compute.DeleteInstanceGroupManagerRequest):
+ request = compute.DeleteInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1331,7 +1441,7 @@ def get(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get]
+ rpc = self._transport._wrapped_methods[self._transport.delete]
# Send the request.
response = rpc(
@@ -1341,52 +1451,89 @@ def get(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def insert_unary(
+ def delete_instances_unary(
self,
- request: Union[compute.InsertInstanceGroupManagerRequest, dict] = None,
+ request: Union[compute.DeleteInstancesInstanceGroupManagerRequest, dict] = None,
*,
project: str = None,
zone: str = None,
- instance_group_manager_resource: compute.InstanceGroupManager = None,
+ instance_group_manager: str = None,
+ instance_group_managers_delete_instances_request_resource: compute.InstanceGroupManagersDeleteInstancesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Creates a managed instance group using the
- information that you specify in the request. After the
- group is created, instances in the group are created
- using the specified instance template. This operation is
- marked as DONE when the group is created even if the
- instances in the group have not yet been created. You
- must separately verify the status of the individual
- instances with the listmanagedinstances method. A
- managed instance group can have up to 1000 VM instances
- per group. Please contact Cloud Support if you need an
- increase in this limit.
+ r"""Flags the specified instances in the managed instance
+ group for immediate deletion. The instances are also
+ removed from any target pools of which they were a
+ member. This method reduces the targetSize of the
+ managed instance group by the number of instances that
+ you delete. This operation is marked as DONE when the
+ action is scheduled even if the instances are still
+ being deleted. You must separately verify the status of
+ the deleting action with the listmanagedinstances
+ method. If the group is part of a backend service that
+ has enabled connection draining, it can take up to 60
+ seconds after the connection draining duration has
+ elapsed before the VM instance is removed or deleted.
+ You can specify a maximum of 1000 instances with this
+ method per request.
Args:
- request (Union[google.cloud.compute_v1.types.InsertInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteInstancesInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.Insert. See the method description
- for details.
+ InstanceGroupManagers.DeleteInstances. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
zone (str):
- The name of the zone where you want
- to create the managed instance group.
+ The name of the zone where the
+ managed instance group is located.
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
+ instance_group_manager (str):
+ The name of the managed instance
+ group.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_managers_delete_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersDeleteInstancesRequest):
The body resource for this request
- This corresponds to the ``instance_group_manager_resource`` field
+ This corresponds to the ``instance_group_managers_delete_instances_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1396,28 +1543,22 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance_group_manager_resource])
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance_group_manager,
+ instance_group_managers_delete_instances_request_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1425,25 +1566,27 @@ def insert_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.InsertInstanceGroupManagerRequest.
+ # in a compute.DeleteInstancesInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.InsertInstanceGroupManagerRequest):
- request = compute.InsertInstanceGroupManagerRequest(request)
+ if not isinstance(request, compute.DeleteInstancesInstanceGroupManagerRequest):
+ request = compute.DeleteInstancesInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if zone is not None:
request.zone = zone
- if instance_group_manager_resource is not None:
- request.instance_group_manager_resource = (
- instance_group_manager_resource
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if instance_group_managers_delete_instances_request_resource is not None:
+ request.instance_group_managers_delete_instances_request_resource = (
+ instance_group_managers_delete_instances_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.insert]
+ rpc = self._transport._wrapped_methods[self._transport.delete_instances]
# Send the request.
response = rpc(
@@ -1456,24 +1599,39 @@ def insert_unary(
# Done; return the response.
return response
- def list(
+ def delete_instances(
self,
- request: Union[compute.ListInstanceGroupManagersRequest, dict] = None,
+ request: Union[compute.DeleteInstancesInstanceGroupManagerRequest, dict] = None,
*,
project: str = None,
zone: str = None,
+ instance_group_manager: str = None,
+ instance_group_managers_delete_instances_request_resource: compute.InstanceGroupManagersDeleteInstancesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListPager:
- r"""Retrieves a list of managed instance groups that are
- contained within the specified project and zone.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Flags the specified instances in the managed instance
+ group for immediate deletion. The instances are also
+ removed from any target pools of which they were a
+ member. This method reduces the targetSize of the
+ managed instance group by the number of instances that
+ you delete. This operation is marked as DONE when the
+ action is scheduled even if the instances are still
+ being deleted. You must separately verify the status of
+ the deleting action with the listmanagedinstances
+ method. If the group is part of a backend service that
+ has enabled connection draining, it can take up to 60
+ seconds after the connection draining duration has
+ elapsed before the VM instance is removed or deleted.
+ You can specify a maximum of 1000 instances with this
+ method per request.
Args:
- request (Union[google.cloud.compute_v1.types.ListInstanceGroupManagersRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteInstancesInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.List. See the method description
- for details.
+ InstanceGroupManagers.DeleteInstances. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1486,24 +1644,41 @@ def list(
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- retry (google.api_core.retry.Retry): Designation of what errors, if any,
- should be retried.
+ instance_group_manager (str):
+ The name of the managed instance
+ group.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_managers_delete_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersDeleteInstancesRequest):
+ The body resource for this request
+ This corresponds to the ``instance_group_managers_delete_instances_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.instance_group_managers.pagers.ListPager:
- [Output Only] A list of managed instance groups.
-
- Iterating over this object will yield results and
- resolve additional pages automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone])
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance_group_manager,
+ instance_group_managers_delete_instances_request_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1511,21 +1686,27 @@ def list(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListInstanceGroupManagersRequest.
+ # in a compute.DeleteInstancesInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ListInstanceGroupManagersRequest):
- request = compute.ListInstanceGroupManagersRequest(request)
+ if not isinstance(request, compute.DeleteInstancesInstanceGroupManagerRequest):
+ request = compute.DeleteInstancesInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if zone is not None:
request.zone = zone
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if instance_group_managers_delete_instances_request_resource is not None:
+ request.instance_group_managers_delete_instances_request_resource = (
+ instance_group_managers_delete_instances_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list]
+ rpc = self._transport._wrapped_methods[self._transport.delete_instances]
# Send the request.
response = rpc(
@@ -1535,38 +1716,56 @@ def list(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
# Done; return the response.
return response
- def list_errors(
+ def delete_per_instance_configs_unary(
self,
- request: Union[compute.ListErrorsInstanceGroupManagersRequest, dict] = None,
+ request: Union[
+ compute.DeletePerInstanceConfigsInstanceGroupManagerRequest, dict
+ ] = None,
*,
project: str = None,
zone: str = None,
instance_group_manager: str = None,
+ instance_group_managers_delete_per_instance_configs_req_resource: compute.InstanceGroupManagersDeletePerInstanceConfigsReq = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListErrorsPager:
- r"""Lists all errors thrown by actions on instances for a
- given managed instance group. The filter and orderBy
- query parameters are not supported.
+ ) -> compute.Operation:
+ r"""Deletes selected per-instance configs for the managed
+ instance group.
Args:
- request (Union[google.cloud.compute_v1.types.ListErrorsInstanceGroupManagersRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeletePerInstanceConfigsInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.ListErrors. See the method
- description for details.
+ InstanceGroupManagers.DeletePerInstanceConfigs. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1581,14 +1780,17 @@ def list_errors(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
- The name of the managed instance group. It must be a
- string that meets the requirements in RFC1035, or an
- unsigned long integer: must match regexp pattern:
- (?:`a-z `__?)|1-9{0,19}.
+ The name of the managed instance
+ group. It should conform to RFC1035.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ instance_group_managers_delete_per_instance_configs_req_resource (google.cloud.compute_v1.types.InstanceGroupManagersDeletePerInstanceConfigsReq):
+ The body resource for this request
+ This corresponds to the ``instance_group_managers_delete_per_instance_configs_req_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1596,16 +1798,22 @@ def list_errors(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.instance_group_managers.pagers.ListErrorsPager:
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance_group_manager])
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance_group_manager,
+ instance_group_managers_delete_per_instance_configs_req_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1613,11 +1821,15 @@ def list_errors(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListErrorsInstanceGroupManagersRequest.
+ # in a compute.DeletePerInstanceConfigsInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ListErrorsInstanceGroupManagersRequest):
- request = compute.ListErrorsInstanceGroupManagersRequest(request)
+ if not isinstance(
+ request, compute.DeletePerInstanceConfigsInstanceGroupManagerRequest
+ ):
+ request = compute.DeletePerInstanceConfigsInstanceGroupManagerRequest(
+ request
+ )
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1626,10 +1838,19 @@ def list_errors(
request.zone = zone
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
+ if (
+ instance_group_managers_delete_per_instance_configs_req_resource
+ is not None
+ ):
+ request.instance_group_managers_delete_per_instance_configs_req_resource = (
+ instance_group_managers_delete_per_instance_configs_req_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list_errors]
+ rpc = self._transport._wrapped_methods[
+ self._transport.delete_per_instance_configs
+ ]
# Send the request.
response = rpc(
@@ -1639,44 +1860,30 @@ def list_errors(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListErrorsPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
-
# Done; return the response.
return response
- def list_managed_instances(
+ def delete_per_instance_configs(
self,
request: Union[
- compute.ListManagedInstancesInstanceGroupManagersRequest, dict
+ compute.DeletePerInstanceConfigsInstanceGroupManagerRequest, dict
] = None,
*,
project: str = None,
zone: str = None,
instance_group_manager: str = None,
+ instance_group_managers_delete_per_instance_configs_req_resource: compute.InstanceGroupManagersDeletePerInstanceConfigsReq = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListManagedInstancesPager:
- r"""Lists all of the instances in the managed instance
- group. Each instance in the list has a currentAction,
- which indicates the action that the managed instance
- group is performing on the instance. For example, if the
- group is still creating an instance, the currentAction
- is CREATING. If a previous action failed, the list
- displays the errors for that failed action. The orderBy
- query parameter is not supported.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes selected per-instance configs for the managed
+ instance group.
Args:
- request (Union[google.cloud.compute_v1.types.ListManagedInstancesInstanceGroupManagersRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeletePerInstanceConfigsInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.ListManagedInstances. See the
+ InstanceGroupManagers.DeletePerInstanceConfigs. See the
method description for details.
project (str):
Project ID for this request.
@@ -1685,18 +1892,24 @@ def list_managed_instances(
should not be set.
zone (str):
The name of the zone where the
- managed instance group is located.
+ managed instance group is located. It
+ should conform to RFC1035.
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
The name of the managed instance
- group.
+ group. It should conform to RFC1035.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ instance_group_managers_delete_per_instance_configs_req_resource (google.cloud.compute_v1.types.InstanceGroupManagersDeletePerInstanceConfigsReq):
+ The body resource for this request
+ This corresponds to the ``instance_group_managers_delete_per_instance_configs_req_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1704,16 +1917,1556 @@ def list_managed_instances(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.instance_group_managers.pagers.ListManagedInstancesPager:
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance_group_manager,
+ instance_group_managers_delete_per_instance_configs_req_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeletePerInstanceConfigsInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.DeletePerInstanceConfigsInstanceGroupManagerRequest
+ ):
+ request = compute.DeletePerInstanceConfigsInstanceGroupManagerRequest(
+ request
+ )
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if (
+ instance_group_managers_delete_per_instance_configs_req_resource
+ is not None
+ ):
+ request.instance_group_managers_delete_per_instance_configs_req_resource = (
+ instance_group_managers_delete_per_instance_configs_req_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[
+ self._transport.delete_per_instance_configs
+ ]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def get(
+ self,
+ request: Union[compute.GetInstanceGroupManagerRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group_manager: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.InstanceGroupManager:
+ r"""Returns all of the details about the specified
+ managed instance group. Gets a list of available managed
+ instance groups by making a list() request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ InstanceGroupManagers.Get. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ managed instance group is located.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the managed instance
+ group.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.InstanceGroupManager:
+ Represents a Managed Instance Group
+ resource. An instance group is a
+ collection of VM instances that you can
+ manage as a single entity. For more
+ information, read Instance groups. For
+ zonal Managed Instance Group, use the
+ instanceGroupManagers resource. For
+ regional Managed Instance Group, use the
+ regionInstanceGroupManagers resource.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance_group_manager])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetInstanceGroupManagerRequest):
+ request = compute.GetInstanceGroupManagerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert_unary(
+ self,
+ request: Union[compute.InsertInstanceGroupManagerRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group_manager_resource: compute.InstanceGroupManager = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Creates a managed instance group using the
+ information that you specify in the request. After the
+ group is created, instances in the group are created
+ using the specified instance template. This operation is
+ marked as DONE when the group is created even if the
+ instances in the group have not yet been created. You
+ must separately verify the status of the individual
+ instances with the listmanagedinstances method. A
+ managed instance group can have up to 1000 VM instances
+ per group. Please contact Cloud Support if you need an
+ increase in this limit.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ InstanceGroupManagers.Insert. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where you want
+ to create the managed instance group.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
+ The body resource for this request
+ This corresponds to the ``instance_group_manager_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance_group_manager_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertInstanceGroupManagerRequest):
+ request = compute.InsertInstanceGroupManagerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group_manager_resource is not None:
+ request.instance_group_manager_resource = (
+ instance_group_manager_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertInstanceGroupManagerRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group_manager_resource: compute.InstanceGroupManager = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a managed instance group using the
+ information that you specify in the request. After the
+ group is created, instances in the group are created
+ using the specified instance template. This operation is
+ marked as DONE when the group is created even if the
+ instances in the group have not yet been created. You
+ must separately verify the status of the individual
+ instances with the listmanagedinstances method. A
+ managed instance group can have up to 1000 VM instances
+ per group. Please contact Cloud Support if you need an
+ increase in this limit.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ InstanceGroupManagers.Insert. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where you want
+ to create the managed instance group.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
+ The body resource for this request
+ This corresponds to the ``instance_group_manager_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance_group_manager_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertInstanceGroupManagerRequest):
+ request = compute.InsertInstanceGroupManagerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group_manager_resource is not None:
+ request.instance_group_manager_resource = (
+ instance_group_manager_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def list(
+ self,
+ request: Union[compute.ListInstanceGroupManagersRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListPager:
+ r"""Retrieves a list of managed instance groups that are
+ contained within the specified project and zone.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListInstanceGroupManagersRequest, dict]):
+ The request object. A request message for
+ InstanceGroupManagers.List. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ managed instance group is located.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.instance_group_managers.pagers.ListPager:
+ [Output Only] A list of managed instance groups.
+
+ Iterating over this object will yield results and
+ resolve additional pages automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListInstanceGroupManagersRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ListInstanceGroupManagersRequest):
+ request = compute.ListInstanceGroupManagersRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def list_errors(
+ self,
+ request: Union[compute.ListErrorsInstanceGroupManagersRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group_manager: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListErrorsPager:
+ r"""Lists all errors thrown by actions on instances for a
+ given managed instance group. The filter and orderBy
+ query parameters are not supported.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListErrorsInstanceGroupManagersRequest, dict]):
+ The request object. A request message for
+ InstanceGroupManagers.ListErrors. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ managed instance group is located. It
+ should conform to RFC1035.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the managed instance group. It must be a
+ string that meets the requirements in RFC1035, or an
+ unsigned long integer: must match regexp pattern:
+ (?:`a-z `__?)|1-9{0,19}.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.instance_group_managers.pagers.ListErrorsPager:
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance_group_manager])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListErrorsInstanceGroupManagersRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ListErrorsInstanceGroupManagersRequest):
+ request = compute.ListErrorsInstanceGroupManagersRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list_errors]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListErrorsPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def list_managed_instances(
+ self,
+ request: Union[
+ compute.ListManagedInstancesInstanceGroupManagersRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group_manager: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListManagedInstancesPager:
+ r"""Lists all of the instances in the managed instance
+ group. Each instance in the list has a currentAction,
+ which indicates the action that the managed instance
+ group is performing on the instance. For example, if the
+ group is still creating an instance, the currentAction
+ is CREATING. If a previous action failed, the list
+ displays the errors for that failed action. The orderBy
+ query parameter is not supported.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListManagedInstancesInstanceGroupManagersRequest, dict]):
+ The request object. A request message for
+ InstanceGroupManagers.ListManagedInstances. See the
+ method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ managed instance group is located.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the managed instance
+ group.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.instance_group_managers.pagers.ListManagedInstancesPager:
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance_group_manager])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListManagedInstancesInstanceGroupManagersRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.ListManagedInstancesInstanceGroupManagersRequest
+ ):
+ request = compute.ListManagedInstancesInstanceGroupManagersRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list_managed_instances]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListManagedInstancesPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def list_per_instance_configs(
+ self,
+ request: Union[
+ compute.ListPerInstanceConfigsInstanceGroupManagersRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group_manager: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListPerInstanceConfigsPager:
+ r"""Lists all of the per-instance configs defined for the
+ managed instance group. The orderBy query parameter is
+ not supported.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListPerInstanceConfigsInstanceGroupManagersRequest, dict]):
+ The request object. A request message for
+ InstanceGroupManagers.ListPerInstanceConfigs. See the
+ method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ managed instance group is located. It
+ should conform to RFC1035.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the managed instance
+ group. It should conform to RFC1035.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.instance_group_managers.pagers.ListPerInstanceConfigsPager:
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance_group_manager])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListPerInstanceConfigsInstanceGroupManagersRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.ListPerInstanceConfigsInstanceGroupManagersRequest
+ ):
+ request = compute.ListPerInstanceConfigsInstanceGroupManagersRequest(
+ request
+ )
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[
+ self._transport.list_per_instance_configs
+ ]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListPerInstanceConfigsPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch_unary(
+ self,
+ request: Union[compute.PatchInstanceGroupManagerRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group_manager: str = None,
+ instance_group_manager_resource: compute.InstanceGroupManager = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Updates a managed instance group using the
+ information that you specify in the request. This
+ operation is marked as DONE when the group is patched
+ even if the instances in the group are still in the
+ process of being patched. You must separately verify the
+ status of the individual instances with the
+ listManagedInstances method. This method supports PATCH
+ semantics and uses the JSON merge patch format and
+ processing rules. If you update your group to specify a
+ new template or instance configuration, it's possible
+ that your intended specification for each VM in the
+ group is different from the current state of that VM. To
+ learn how to apply an updated configuration to the VMs
+ in a MIG, see Updating instances in a MIG.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ InstanceGroupManagers.Patch. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where you want
+ to create the managed instance group.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the instance group
+ manager.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
+ The body resource for this request
+ This corresponds to the ``instance_group_manager_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, instance_group_manager, instance_group_manager_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchInstanceGroupManagerRequest):
+ request = compute.PatchInstanceGroupManagerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if instance_group_manager_resource is not None:
+ request.instance_group_manager_resource = (
+ instance_group_manager_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch(
+ self,
+ request: Union[compute.PatchInstanceGroupManagerRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group_manager: str = None,
+ instance_group_manager_resource: compute.InstanceGroupManager = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates a managed instance group using the
+ information that you specify in the request. This
+ operation is marked as DONE when the group is patched
+ even if the instances in the group are still in the
+ process of being patched. You must separately verify the
+ status of the individual instances with the
+ listManagedInstances method. This method supports PATCH
+ semantics and uses the JSON merge patch format and
+ processing rules. If you update your group to specify a
+ new template or instance configuration, it's possible
+ that your intended specification for each VM in the
+ group is different from the current state of that VM. To
+ learn how to apply an updated configuration to the VMs
+ in a MIG, see Updating instances in a MIG.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ InstanceGroupManagers.Patch. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where you want
+ to create the managed instance group.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the instance group
+ manager.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
+ The body resource for this request
+ This corresponds to the ``instance_group_manager_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, instance_group_manager, instance_group_manager_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchInstanceGroupManagerRequest):
+ request = compute.PatchInstanceGroupManagerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if instance_group_manager_resource is not None:
+ request.instance_group_manager_resource = (
+ instance_group_manager_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def patch_per_instance_configs_unary(
+ self,
+ request: Union[
+ compute.PatchPerInstanceConfigsInstanceGroupManagerRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group_manager: str = None,
+ instance_group_managers_patch_per_instance_configs_req_resource: compute.InstanceGroupManagersPatchPerInstanceConfigsReq = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Inserts or patches per-instance configs for the
+ managed instance group. perInstanceConfig.name serves as
+ a key used to distinguish whether to perform insert or
+ patch.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchPerInstanceConfigsInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ InstanceGroupManagers.PatchPerInstanceConfigs. See the
+ method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ managed instance group is located. It
+ should conform to RFC1035.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the managed instance
+ group. It should conform to RFC1035.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_managers_patch_per_instance_configs_req_resource (google.cloud.compute_v1.types.InstanceGroupManagersPatchPerInstanceConfigsReq):
+ The body resource for this request
+ This corresponds to the ``instance_group_managers_patch_per_instance_configs_req_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance_group_manager,
+ instance_group_managers_patch_per_instance_configs_req_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchPerInstanceConfigsInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.PatchPerInstanceConfigsInstanceGroupManagerRequest
+ ):
+ request = compute.PatchPerInstanceConfigsInstanceGroupManagerRequest(
+ request
+ )
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if (
+ instance_group_managers_patch_per_instance_configs_req_resource
+ is not None
+ ):
+ request.instance_group_managers_patch_per_instance_configs_req_resource = (
+ instance_group_managers_patch_per_instance_configs_req_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[
+ self._transport.patch_per_instance_configs
+ ]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch_per_instance_configs(
+ self,
+ request: Union[
+ compute.PatchPerInstanceConfigsInstanceGroupManagerRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group_manager: str = None,
+ instance_group_managers_patch_per_instance_configs_req_resource: compute.InstanceGroupManagersPatchPerInstanceConfigsReq = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Inserts or patches per-instance configs for the
+ managed instance group. perInstanceConfig.name serves as
+ a key used to distinguish whether to perform insert or
+ patch.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchPerInstanceConfigsInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ InstanceGroupManagers.PatchPerInstanceConfigs. See the
+ method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ managed instance group is located. It
+ should conform to RFC1035.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the managed instance
+ group. It should conform to RFC1035.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_managers_patch_per_instance_configs_req_resource (google.cloud.compute_v1.types.InstanceGroupManagersPatchPerInstanceConfigsReq):
+ The body resource for this request
+ This corresponds to the ``instance_group_managers_patch_per_instance_configs_req_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance_group_manager,
+ instance_group_managers_patch_per_instance_configs_req_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchPerInstanceConfigsInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.PatchPerInstanceConfigsInstanceGroupManagerRequest
+ ):
+ request = compute.PatchPerInstanceConfigsInstanceGroupManagerRequest(
+ request
+ )
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if (
+ instance_group_managers_patch_per_instance_configs_req_resource
+ is not None
+ ):
+ request.instance_group_managers_patch_per_instance_configs_req_resource = (
+ instance_group_managers_patch_per_instance_configs_req_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[
+ self._transport.patch_per_instance_configs
+ ]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def recreate_instances_unary(
+ self,
+ request: Union[
+ compute.RecreateInstancesInstanceGroupManagerRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group_manager: str = None,
+ instance_group_managers_recreate_instances_request_resource: compute.InstanceGroupManagersRecreateInstancesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Flags the specified VM instances in the managed
+ instance group to be immediately recreated. Each
+ instance is recreated using the group's current
+ configuration. This operation is marked as DONE when the
+ flag is set even if the instances have not yet been
+ recreated. You must separately verify the status of each
+ instance by checking its currentAction field; for more
+ information, see Checking the status of managed
+ instances. If the group is part of a backend service
+ that has enabled connection draining, it can take up to
+ 60 seconds after the connection draining duration has
+ elapsed before the VM instance is removed or deleted.
+ You can specify a maximum of 1000 instances with this
+ method per request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.RecreateInstancesInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ InstanceGroupManagers.RecreateInstances. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ managed instance group is located.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the managed instance
+ group.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_managers_recreate_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersRecreateInstancesRequest):
+ The body resource for this request
+ This corresponds to the ``instance_group_managers_recreate_instances_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance_group_manager,
+ instance_group_managers_recreate_instances_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.RecreateInstancesInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.RecreateInstancesInstanceGroupManagerRequest
+ ):
+ request = compute.RecreateInstancesInstanceGroupManagerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if instance_group_managers_recreate_instances_request_resource is not None:
+ request.instance_group_managers_recreate_instances_request_resource = (
+ instance_group_managers_recreate_instances_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.recreate_instances]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def recreate_instances(
+ self,
+ request: Union[
+ compute.RecreateInstancesInstanceGroupManagerRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group_manager: str = None,
+ instance_group_managers_recreate_instances_request_resource: compute.InstanceGroupManagersRecreateInstancesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Flags the specified VM instances in the managed
+ instance group to be immediately recreated. Each
+ instance is recreated using the group's current
+ configuration. This operation is marked as DONE when the
+ flag is set even if the instances have not yet been
+ recreated. You must separately verify the status of each
+ instance by checking its currentAction field; for more
+ information, see Checking the status of managed
+ instances. If the group is part of a backend service
+ that has enabled connection draining, it can take up to
+ 60 seconds after the connection draining duration has
+ elapsed before the VM instance is removed or deleted.
+ You can specify a maximum of 1000 instances with this
+ method per request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.RecreateInstancesInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ InstanceGroupManagers.RecreateInstances. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ managed instance group is located.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the managed instance
+ group.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_managers_recreate_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersRecreateInstancesRequest):
+ The body resource for this request
+ This corresponds to the ``instance_group_managers_recreate_instances_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance_group_manager])
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance_group_manager,
+ instance_group_managers_recreate_instances_request_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1721,13 +3474,13 @@ def list_managed_instances(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListManagedInstancesInstanceGroupManagersRequest.
+ # in a compute.RecreateInstancesInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.ListManagedInstancesInstanceGroupManagersRequest
+ request, compute.RecreateInstancesInstanceGroupManagerRequest
):
- request = compute.ListManagedInstancesInstanceGroupManagersRequest(request)
+ request = compute.RecreateInstancesInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1736,10 +3489,14 @@ def list_managed_instances(
request.zone = zone
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
+ if instance_group_managers_recreate_instances_request_resource is not None:
+ request.instance_group_managers_recreate_instances_request_resource = (
+ instance_group_managers_recreate_instances_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list_managed_instances]
+ rpc = self._transport._wrapped_methods[self._transport.recreate_instances]
# Send the request.
response = rpc(
@@ -1749,40 +3506,72 @@ def list_managed_instances(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListManagedInstancesPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
# Done; return the response.
return response
- def list_per_instance_configs(
+ def resize_unary(
self,
- request: Union[
- compute.ListPerInstanceConfigsInstanceGroupManagersRequest, dict
- ] = None,
+ request: Union[compute.ResizeInstanceGroupManagerRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance_group_manager: str = None,
+ size: int = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListPerInstanceConfigsPager:
- r"""Lists all of the per-instance configs defined for the
- managed instance group. The orderBy query parameter is
- not supported.
+ ) -> compute.Operation:
+ r"""Resizes the managed instance group. If you increase
+ the size, the group creates new instances using the
+ current instance template. If you decrease the size, the
+ group deletes instances. The resize operation is marked
+ DONE when the resize actions are scheduled even if the
+ group has not yet added or deleted any instances. You
+ must separately verify the status of the creating or
+ deleting actions with the listmanagedinstances method.
+ When resizing down, the instance group arbitrarily
+ chooses the order in which VMs are deleted. The group
+ takes into account some VM attributes when making the
+ selection including: + The status of the VM instance. +
+ The health of the VM instance. + The instance template
+ version the VM is based on. + For regional managed
+ instance groups, the location of the VM instance. This
+ list is subject to change. If the group is part of a
+ backend service that has enabled connection draining, it
+ can take up to 60 seconds after the connection draining
+ duration has elapsed before the VM instance is removed
+ or deleted.
Args:
- request (Union[google.cloud.compute_v1.types.ListPerInstanceConfigsInstanceGroupManagersRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.ResizeInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.ListPerInstanceConfigs. See the
- method description for details.
+ InstanceGroupManagers.Resize. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1790,19 +3579,29 @@ def list_per_instance_configs(
should not be set.
zone (str):
The name of the zone where the
- managed instance group is located. It
- should conform to RFC1035.
+ managed instance group is located.
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
The name of the managed instance
- group. It should conform to RFC1035.
+ group.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ size (int):
+ The number of running instances that
+ the managed instance group should
+ maintain at any given time. The group
+ automatically adds or removes instances
+ to maintain the number of instances
+ specified by this parameter.
+
+ This corresponds to the ``size`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1810,16 +3609,15 @@ def list_per_instance_configs(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.instance_group_managers.pagers.ListPerInstanceConfigsPager:
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance_group_manager])
+ has_flattened_params = any([project, zone, instance_group_manager, size])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1827,15 +3625,11 @@ def list_per_instance_configs(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListPerInstanceConfigsInstanceGroupManagersRequest.
+ # in a compute.ResizeInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(
- request, compute.ListPerInstanceConfigsInstanceGroupManagersRequest
- ):
- request = compute.ListPerInstanceConfigsInstanceGroupManagersRequest(
- request
- )
+ if not isinstance(request, compute.ResizeInstanceGroupManagerRequest):
+ request = compute.ResizeInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1844,12 +3638,12 @@ def list_per_instance_configs(
request.zone = zone
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
+ if size is not None:
+ request.size = size
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[
- self._transport.list_per_instance_configs
- ]
+ rpc = self._transport._wrapped_methods[self._transport.resize]
# Send the request.
response = rpc(
@@ -1859,49 +3653,46 @@ def list_per_instance_configs(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListPerInstanceConfigsPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
-
# Done; return the response.
return response
- def patch_unary(
+ def resize(
self,
- request: Union[compute.PatchInstanceGroupManagerRequest, dict] = None,
+ request: Union[compute.ResizeInstanceGroupManagerRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance_group_manager: str = None,
- instance_group_manager_resource: compute.InstanceGroupManager = None,
+ size: int = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Updates a managed instance group using the
- information that you specify in the request. This
- operation is marked as DONE when the group is patched
- even if the instances in the group are still in the
- process of being patched. You must separately verify the
- status of the individual instances with the
- listManagedInstances method. This method supports PATCH
- semantics and uses the JSON merge patch format and
- processing rules. If you update your group to specify a
- new template or instance configuration, it's possible
- that your intended specification for each VM in the
- group is different from the current state of that VM. To
- learn how to apply an updated configuration to the VMs
- in a MIG, see Updating instances in a MIG.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Resizes the managed instance group. If you increase
+ the size, the group creates new instances using the
+ current instance template. If you decrease the size, the
+ group deletes instances. The resize operation is marked
+ DONE when the resize actions are scheduled even if the
+ group has not yet added or deleted any instances. You
+ must separately verify the status of the creating or
+ deleting actions with the listmanagedinstances method.
+ When resizing down, the instance group arbitrarily
+ chooses the order in which VMs are deleted. The group
+ takes into account some VM attributes when making the
+ selection including: + The status of the VM instance. +
+ The health of the VM instance. + The instance template
+ version the VM is based on. + For regional managed
+ instance groups, the location of the VM instance. This
+ list is subject to change. If the group is part of a
+ backend service that has enabled connection draining, it
+ can take up to 60 seconds after the connection draining
+ duration has elapsed before the VM instance is removed
+ or deleted.
Args:
- request (Union[google.cloud.compute_v1.types.PatchInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.ResizeInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.Patch. See the method description
+ InstanceGroupManagers.Resize. See the method description
for details.
project (str):
Project ID for this request.
@@ -1909,22 +3700,28 @@ def patch_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
zone (str):
- The name of the zone where you want
- to create the managed instance group.
+ The name of the zone where the
+ managed instance group is located.
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
- The name of the instance group
- manager.
+ The name of the managed instance
+ group.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
- The body resource for this request
- This corresponds to the ``instance_group_manager_resource`` field
+ size (int):
+ The number of running instances that
+ the managed instance group should
+ maintain at any given time. The group
+ automatically adds or removes instances
+ to maintain the number of instances
+ specified by this parameter.
+
+ This corresponds to the ``size`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1934,30 +3731,15 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, zone, instance_group_manager, instance_group_manager_resource]
- )
+ has_flattened_params = any([project, zone, instance_group_manager, size])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1965,11 +3747,11 @@ def patch_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.PatchInstanceGroupManagerRequest.
+ # in a compute.ResizeInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.PatchInstanceGroupManagerRequest):
- request = compute.PatchInstanceGroupManagerRequest(request)
+ if not isinstance(request, compute.ResizeInstanceGroupManagerRequest):
+ request = compute.ResizeInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1978,14 +3760,12 @@ def patch_unary(
request.zone = zone
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
- if instance_group_manager_resource is not None:
- request.instance_group_manager_resource = (
- instance_group_manager_resource
- )
+ if size is not None:
+ request.size = size
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.patch]
+ rpc = self._transport._wrapped_methods[self._transport.resize]
# Send the request.
response = rpc(
@@ -1995,32 +3775,58 @@ def patch_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def patch_per_instance_configs_unary(
+ def set_instance_template_unary(
self,
request: Union[
- compute.PatchPerInstanceConfigsInstanceGroupManagerRequest, dict
+ compute.SetInstanceTemplateInstanceGroupManagerRequest, dict
] = None,
*,
project: str = None,
zone: str = None,
instance_group_manager: str = None,
- instance_group_managers_patch_per_instance_configs_req_resource: compute.InstanceGroupManagersPatchPerInstanceConfigsReq = None,
+ instance_group_managers_set_instance_template_request_resource: compute.InstanceGroupManagersSetInstanceTemplateRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Inserts or patches per-instance configs for the
- managed instance group. perInstanceConfig.name serves as
- a key used to distinguish whether to perform insert or
- patch.
+ r"""Specifies the instance template to use when creating
+ new instances in this group. The templates for existing
+ instances in the group do not change unless you run
+ recreateInstances, run applyUpdatesToInstances, or set
+ the group's updatePolicy.type to PROACTIVE.
Args:
- request (Union[google.cloud.compute_v1.types.PatchPerInstanceConfigsInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetInstanceTemplateInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.PatchPerInstanceConfigs. See the
+ InstanceGroupManagers.SetInstanceTemplate. See the
method description for details.
project (str):
Project ID for this request.
@@ -2029,22 +3835,21 @@ def patch_per_instance_configs_unary(
should not be set.
zone (str):
The name of the zone where the
- managed instance group is located. It
- should conform to RFC1035.
+ managed instance group is located.
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
The name of the managed instance
- group. It should conform to RFC1035.
+ group.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance_group_managers_patch_per_instance_configs_req_resource (google.cloud.compute_v1.types.InstanceGroupManagersPatchPerInstanceConfigsReq):
+ instance_group_managers_set_instance_template_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersSetInstanceTemplateRequest):
The body resource for this request
- This corresponds to the ``instance_group_managers_patch_per_instance_configs_req_resource`` field
+ This corresponds to the ``instance_group_managers_set_instance_template_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -2054,22 +3859,9 @@ def patch_per_instance_configs_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -2080,7 +3872,7 @@ def patch_per_instance_configs_unary(
project,
zone,
instance_group_manager,
- instance_group_managers_patch_per_instance_configs_req_resource,
+ instance_group_managers_set_instance_template_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -2090,15 +3882,13 @@ def patch_per_instance_configs_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.PatchPerInstanceConfigsInstanceGroupManagerRequest.
+ # in a compute.SetInstanceTemplateInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.PatchPerInstanceConfigsInstanceGroupManagerRequest
+ request, compute.SetInstanceTemplateInstanceGroupManagerRequest
):
- request = compute.PatchPerInstanceConfigsInstanceGroupManagerRequest(
- request
- )
+ request = compute.SetInstanceTemplateInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -2108,18 +3898,16 @@ def patch_per_instance_configs_unary(
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
if (
- instance_group_managers_patch_per_instance_configs_req_resource
+ instance_group_managers_set_instance_template_request_resource
is not None
):
- request.instance_group_managers_patch_per_instance_configs_req_resource = (
- instance_group_managers_patch_per_instance_configs_req_resource
+ request.instance_group_managers_set_instance_template_request_resource = (
+ instance_group_managers_set_instance_template_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
- # and friendly error handling.
- rpc = self._transport._wrapped_methods[
- self._transport.patch_per_instance_configs
- ]
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_instance_template]
# Send the request.
response = rpc(
@@ -2132,40 +3920,31 @@ def patch_per_instance_configs_unary(
# Done; return the response.
return response
- def recreate_instances_unary(
+ def set_instance_template(
self,
request: Union[
- compute.RecreateInstancesInstanceGroupManagerRequest, dict
+ compute.SetInstanceTemplateInstanceGroupManagerRequest, dict
] = None,
*,
project: str = None,
zone: str = None,
instance_group_manager: str = None,
- instance_group_managers_recreate_instances_request_resource: compute.InstanceGroupManagersRecreateInstancesRequest = None,
+ instance_group_managers_set_instance_template_request_resource: compute.InstanceGroupManagersSetInstanceTemplateRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Flags the specified VM instances in the managed
- instance group to be immediately recreated. Each
- instance is recreated using the group's current
- configuration. This operation is marked as DONE when the
- flag is set even if the instances have not yet been
- recreated. You must separately verify the status of each
- instance by checking its currentAction field; for more
- information, see Checking the status of managed
- instances. If the group is part of a backend service
- that has enabled connection draining, it can take up to
- 60 seconds after the connection draining duration has
- elapsed before the VM instance is removed or deleted.
- You can specify a maximum of 1000 instances with this
- method per request.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Specifies the instance template to use when creating
+ new instances in this group. The templates for existing
+ instances in the group do not change unless you run
+ recreateInstances, run applyUpdatesToInstances, or set
+ the group's updatePolicy.type to PROACTIVE.
Args:
- request (Union[google.cloud.compute_v1.types.RecreateInstancesInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetInstanceTemplateInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.RecreateInstances. See the method
- description for details.
+ InstanceGroupManagers.SetInstanceTemplate. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -2185,9 +3964,9 @@ def recreate_instances_unary(
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance_group_managers_recreate_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersRecreateInstancesRequest):
+ instance_group_managers_set_instance_template_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersSetInstanceTemplateRequest):
The body resource for this request
- This corresponds to the ``instance_group_managers_recreate_instances_request_resource`` field
+ This corresponds to the ``instance_group_managers_set_instance_template_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -2197,22 +3976,9 @@ def recreate_instances_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -2223,7 +3989,7 @@ def recreate_instances_unary(
project,
zone,
instance_group_manager,
- instance_group_managers_recreate_instances_request_resource,
+ instance_group_managers_set_instance_template_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -2233,13 +3999,13 @@ def recreate_instances_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.RecreateInstancesInstanceGroupManagerRequest.
+ # in a compute.SetInstanceTemplateInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.RecreateInstancesInstanceGroupManagerRequest
+ request, compute.SetInstanceTemplateInstanceGroupManagerRequest
):
- request = compute.RecreateInstancesInstanceGroupManagerRequest(request)
+ request = compute.SetInstanceTemplateInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -2248,14 +4014,17 @@ def recreate_instances_unary(
request.zone = zone
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
- if instance_group_managers_recreate_instances_request_resource is not None:
- request.instance_group_managers_recreate_instances_request_resource = (
- instance_group_managers_recreate_instances_request_resource
+ if (
+ instance_group_managers_set_instance_template_request_resource
+ is not None
+ ):
+ request.instance_group_managers_set_instance_template_request_resource = (
+ instance_group_managers_set_instance_template_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.recreate_instances]
+ rpc = self._transport._wrapped_methods[self._transport.set_instance_template]
# Send the request.
response = rpc(
@@ -2265,47 +4034,60 @@ def recreate_instances_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def resize_unary(
+ def set_target_pools_unary(
self,
- request: Union[compute.ResizeInstanceGroupManagerRequest, dict] = None,
+ request: Union[compute.SetTargetPoolsInstanceGroupManagerRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance_group_manager: str = None,
- size: int = None,
+ instance_group_managers_set_target_pools_request_resource: compute.InstanceGroupManagersSetTargetPoolsRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Resizes the managed instance group. If you increase
- the size, the group creates new instances using the
- current instance template. If you decrease the size, the
- group deletes instances. The resize operation is marked
- DONE when the resize actions are scheduled even if the
- group has not yet added or deleted any instances. You
- must separately verify the status of the creating or
- deleting actions with the listmanagedinstances method.
- When resizing down, the instance group arbitrarily
- chooses the order in which VMs are deleted. The group
- takes into account some VM attributes when making the
- selection including: + The status of the VM instance. +
- The health of the VM instance. + The instance template
- version the VM is based on. + For regional managed
- instance groups, the location of the VM instance. This
- list is subject to change. If the group is part of a
- backend service that has enabled connection draining, it
- can take up to 60 seconds after the connection draining
- duration has elapsed before the VM instance is removed
- or deleted.
+ r"""Modifies the target pools to which all instances in
+ this managed instance group are assigned. The target
+ pools automatically apply to all of the instances in the
+ managed instance group. This operation is marked DONE
+ when you make the request even if the instances have not
+ yet been added to their target pools. The change might
+ take some time to apply to all of the instances in the
+ group depending on the size of the group.
Args:
- request (Union[google.cloud.compute_v1.types.ResizeInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetTargetPoolsInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.Resize. See the method description
- for details.
+ InstanceGroupManagers.SetTargetPools. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -2325,15 +4107,9 @@ def resize_unary(
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- size (int):
- The number of running instances that
- the managed instance group should
- maintain at any given time. The group
- automatically adds or removes instances
- to maintain the number of instances
- specified by this parameter.
-
- This corresponds to the ``size`` field
+ instance_group_managers_set_target_pools_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersSetTargetPoolsRequest):
+ The body resource for this request
+ This corresponds to the ``instance_group_managers_set_target_pools_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -2343,28 +4119,22 @@ def resize_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance_group_manager, size])
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance_group_manager,
+ instance_group_managers_set_target_pools_request_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -2372,11 +4142,11 @@ def resize_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ResizeInstanceGroupManagerRequest.
+ # in a compute.SetTargetPoolsInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ResizeInstanceGroupManagerRequest):
- request = compute.ResizeInstanceGroupManagerRequest(request)
+ if not isinstance(request, compute.SetTargetPoolsInstanceGroupManagerRequest):
+ request = compute.SetTargetPoolsInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -2385,12 +4155,14 @@ def resize_unary(
request.zone = zone
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
- if size is not None:
- request.size = size
+ if instance_group_managers_set_target_pools_request_resource is not None:
+ request.instance_group_managers_set_target_pools_request_resource = (
+ instance_group_managers_set_target_pools_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.resize]
+ rpc = self._transport._wrapped_methods[self._transport.set_target_pools]
# Send the request.
response = rpc(
@@ -2403,31 +4175,32 @@ def resize_unary(
# Done; return the response.
return response
- def set_instance_template_unary(
+ def set_target_pools(
self,
- request: Union[
- compute.SetInstanceTemplateInstanceGroupManagerRequest, dict
- ] = None,
+ request: Union[compute.SetTargetPoolsInstanceGroupManagerRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance_group_manager: str = None,
- instance_group_managers_set_instance_template_request_resource: compute.InstanceGroupManagersSetInstanceTemplateRequest = None,
+ instance_group_managers_set_target_pools_request_resource: compute.InstanceGroupManagersSetTargetPoolsRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Specifies the instance template to use when creating
- new instances in this group. The templates for existing
- instances in the group do not change unless you run
- recreateInstances, run applyUpdatesToInstances, or set
- the group's updatePolicy.type to PROACTIVE.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Modifies the target pools to which all instances in
+ this managed instance group are assigned. The target
+ pools automatically apply to all of the instances in the
+ managed instance group. This operation is marked DONE
+ when you make the request even if the instances have not
+ yet been added to their target pools. The change might
+ take some time to apply to all of the instances in the
+ group depending on the size of the group.
Args:
- request (Union[google.cloud.compute_v1.types.SetInstanceTemplateInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetTargetPoolsInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.SetInstanceTemplate. See the
- method description for details.
+ InstanceGroupManagers.SetTargetPools. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -2447,9 +4220,9 @@ def set_instance_template_unary(
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance_group_managers_set_instance_template_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersSetInstanceTemplateRequest):
+ instance_group_managers_set_target_pools_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersSetTargetPoolsRequest):
The body resource for this request
- This corresponds to the ``instance_group_managers_set_instance_template_request_resource`` field
+ This corresponds to the ``instance_group_managers_set_target_pools_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -2459,22 +4232,9 @@ def set_instance_template_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -2485,7 +4245,7 @@ def set_instance_template_unary(
project,
zone,
instance_group_manager,
- instance_group_managers_set_instance_template_request_resource,
+ instance_group_managers_set_target_pools_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -2495,13 +4255,11 @@ def set_instance_template_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetInstanceTemplateInstanceGroupManagerRequest.
+ # in a compute.SetTargetPoolsInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(
- request, compute.SetInstanceTemplateInstanceGroupManagerRequest
- ):
- request = compute.SetInstanceTemplateInstanceGroupManagerRequest(request)
+ if not isinstance(request, compute.SetTargetPoolsInstanceGroupManagerRequest):
+ request = compute.SetTargetPoolsInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -2510,17 +4268,14 @@ def set_instance_template_unary(
request.zone = zone
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
- if (
- instance_group_managers_set_instance_template_request_resource
- is not None
- ):
- request.instance_group_managers_set_instance_template_request_resource = (
- instance_group_managers_set_instance_template_request_resource
+ if instance_group_managers_set_target_pools_request_resource is not None:
+ request.instance_group_managers_set_target_pools_request_resource = (
+ instance_group_managers_set_target_pools_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_instance_template]
+ rpc = self._transport._wrapped_methods[self._transport.set_target_pools]
# Send the request.
response = rpc(
@@ -2530,35 +4285,58 @@ def set_instance_template_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def set_target_pools_unary(
+ def update_per_instance_configs_unary(
self,
- request: Union[compute.SetTargetPoolsInstanceGroupManagerRequest, dict] = None,
+ request: Union[
+ compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest, dict
+ ] = None,
*,
project: str = None,
zone: str = None,
instance_group_manager: str = None,
- instance_group_managers_set_target_pools_request_resource: compute.InstanceGroupManagersSetTargetPoolsRequest = None,
+ instance_group_managers_update_per_instance_configs_req_resource: compute.InstanceGroupManagersUpdatePerInstanceConfigsReq = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Modifies the target pools to which all instances in
- this managed instance group are assigned. The target
- pools automatically apply to all of the instances in the
- managed instance group. This operation is marked DONE
- when you make the request even if the instances have not
- yet been added to their target pools. The change might
- take some time to apply to all of the instances in the
- group depending on the size of the group.
+ r"""Inserts or updates per-instance configs for the
+ managed instance group. perInstanceConfig.name serves as
+ a key used to distinguish whether to perform insert or
+ patch.
Args:
- request (Union[google.cloud.compute_v1.types.SetTargetPoolsInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.UpdatePerInstanceConfigsInstanceGroupManagerRequest, dict]):
The request object. A request message for
- InstanceGroupManagers.SetTargetPools. See the method
- description for details.
+ InstanceGroupManagers.UpdatePerInstanceConfigs. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -2566,21 +4344,22 @@ def set_target_pools_unary(
should not be set.
zone (str):
The name of the zone where the
- managed instance group is located.
+ managed instance group is located. It
+ should conform to RFC1035.
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
The name of the managed instance
- group.
+ group. It should conform to RFC1035.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance_group_managers_set_target_pools_request_resource (google.cloud.compute_v1.types.InstanceGroupManagersSetTargetPoolsRequest):
+ instance_group_managers_update_per_instance_configs_req_resource (google.cloud.compute_v1.types.InstanceGroupManagersUpdatePerInstanceConfigsReq):
The body resource for this request
- This corresponds to the ``instance_group_managers_set_target_pools_request_resource`` field
+ This corresponds to the ``instance_group_managers_update_per_instance_configs_req_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -2590,22 +4369,9 @@ def set_target_pools_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -2616,7 +4382,7 @@ def set_target_pools_unary(
project,
zone,
instance_group_manager,
- instance_group_managers_set_target_pools_request_resource,
+ instance_group_managers_update_per_instance_configs_req_resource,
]
)
if request is not None and has_flattened_params:
@@ -2626,11 +4392,15 @@ def set_target_pools_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetTargetPoolsInstanceGroupManagerRequest.
+ # in a compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetTargetPoolsInstanceGroupManagerRequest):
- request = compute.SetTargetPoolsInstanceGroupManagerRequest(request)
+ if not isinstance(
+ request, compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest
+ ):
+ request = compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest(
+ request
+ )
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -2639,14 +4409,19 @@ def set_target_pools_unary(
request.zone = zone
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
- if instance_group_managers_set_target_pools_request_resource is not None:
- request.instance_group_managers_set_target_pools_request_resource = (
- instance_group_managers_set_target_pools_request_resource
+ if (
+ instance_group_managers_update_per_instance_configs_req_resource
+ is not None
+ ):
+ request.instance_group_managers_update_per_instance_configs_req_resource = (
+ instance_group_managers_update_per_instance_configs_req_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_target_pools]
+ rpc = self._transport._wrapped_methods[
+ self._transport.update_per_instance_configs
+ ]
# Send the request.
response = rpc(
@@ -2659,7 +4434,7 @@ def set_target_pools_unary(
# Done; return the response.
return response
- def update_per_instance_configs_unary(
+ def update_per_instance_configs(
self,
request: Union[
compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest, dict
@@ -2672,7 +4447,7 @@ def update_per_instance_configs_unary(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
+ ) -> extended_operation.ExtendedOperation:
r"""Inserts or updates per-instance configs for the
managed instance group. perInstanceConfig.name serves as
a key used to distinguish whether to perform insert or
@@ -2715,22 +4490,9 @@ def update_per_instance_configs_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -2790,6 +4552,31 @@ def update_per_instance_configs_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/instance_group_managers/transports/base.py b/google/cloud/compute_v1/services/instance_group_managers/transports/base.py
index 5875032a6..7022a3a58 100644
--- a/google/cloud/compute_v1/services/instance_group_managers/transports/base.py
+++ b/google/cloud/compute_v1/services/instance_group_managers/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import zone_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -429,5 +432,21 @@ def update_per_instance_configs(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _zone_operations_client(self) -> zone_operations.ZoneOperationsClient:
+ ex_op_service = self._extended_operations_services.get("zone_operations")
+ if not ex_op_service:
+ ex_op_service = zone_operations.ZoneOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["zone_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("InstanceGroupManagersTransport",)
diff --git a/google/cloud/compute_v1/services/instance_group_managers/transports/rest.py b/google/cloud/compute_v1/services/instance_group_managers/transports/rest.py
index b40cb5154..330871b28 100644
--- a/google/cloud/compute_v1/services/instance_group_managers/transports/rest.py
+++ b/google/cloud/compute_v1/services/instance_group_managers/transports/rest.py
@@ -3299,6 +3299,10 @@ def update_per_instance_configs(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/instance_groups/client.py b/google/cloud/compute_v1/services/instance_groups/client.py
index 12f29ab85..f329665c5 100644
--- a/google/cloud/compute_v1/services/instance_groups/client.py
+++ b/google/cloud/compute_v1/services/instance_groups/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.instance_groups import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import InstanceGroupsTransport, DEFAULT_CLIENT_INFO
@@ -455,22 +458,9 @@ def add_instances_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -524,6 +514,140 @@ def add_instances_unary(
# Done; return the response.
return response
+ def add_instances(
+ self,
+ request: Union[compute.AddInstancesInstanceGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group: str = None,
+ instance_groups_add_instances_request_resource: compute.InstanceGroupsAddInstancesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Adds a list of instances to the specified instance
+ group. All of the instances in the instance group must
+ be in the same network/subnetwork. Read Adding instances
+ for more information.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.AddInstancesInstanceGroupRequest, dict]):
+ The request object. A request message for
+ InstanceGroups.AddInstances. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ instance group is located.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group (str):
+ The name of the instance group where
+ you are adding instances.
+
+ This corresponds to the ``instance_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_groups_add_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupsAddInstancesRequest):
+ The body resource for this request
+ This corresponds to the ``instance_groups_add_instances_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance_group,
+ instance_groups_add_instances_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.AddInstancesInstanceGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.AddInstancesInstanceGroupRequest):
+ request = compute.AddInstancesInstanceGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group is not None:
+ request.instance_group = instance_group
+ if instance_groups_add_instances_request_resource is not None:
+ request.instance_groups_add_instances_request_resource = (
+ instance_groups_add_instances_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.add_instances]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def aggregated_list(
self,
request: Union[compute.AggregatedListInstanceGroupsRequest, dict] = None,
@@ -651,22 +775,101 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance_group])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteInstanceGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteInstanceGroupRequest):
+ request = compute.DeleteInstanceGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group is not None:
+ request.instance_group = instance_group
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def delete(
+ self,
+ request: Union[compute.DeleteInstanceGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified instance group. The instances
+ in the group are not deleted. Note that instance group
+ must not belong to a backend service. Read Deleting an
+ instance group for more information.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteInstanceGroupRequest, dict]):
+ The request object. A request message for
+ InstanceGroups.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ instance group is located.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group (str):
+ The name of the instance group to
+ delete.
+
+ This corresponds to the ``instance_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -706,6 +909,31 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -855,22 +1083,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -913,6 +1128,119 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertInstanceGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group_resource: compute.InstanceGroup = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates an instance group in the specified project
+ using the parameters that are included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertInstanceGroupRequest, dict]):
+ The request object. A request message for
+ InstanceGroups.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where you want
+ to create the instance group.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_resource (google.cloud.compute_v1.types.InstanceGroup):
+ The body resource for this request
+ This corresponds to the ``instance_group_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance_group_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertInstanceGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertInstanceGroupRequest):
+ request = compute.InsertInstanceGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group_resource is not None:
+ request.instance_group_resource = instance_group_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListInstanceGroupsRequest, dict] = None,
@@ -1179,22 +1507,9 @@ def remove_instances_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1248,6 +1563,142 @@ def remove_instances_unary(
# Done; return the response.
return response
+ def remove_instances(
+ self,
+ request: Union[compute.RemoveInstancesInstanceGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group: str = None,
+ instance_groups_remove_instances_request_resource: compute.InstanceGroupsRemoveInstancesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Removes one or more instances from the specified
+ instance group, but does not delete those instances. If
+ the group is part of a backend service that has enabled
+ connection draining, it can take up to 60 seconds after
+ the connection draining duration before the VM instance
+ is removed or deleted.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.RemoveInstancesInstanceGroupRequest, dict]):
+ The request object. A request message for
+ InstanceGroups.RemoveInstances. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ instance group is located.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group (str):
+ The name of the instance group where
+ the specified instances will be removed.
+
+ This corresponds to the ``instance_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_groups_remove_instances_request_resource (google.cloud.compute_v1.types.InstanceGroupsRemoveInstancesRequest):
+ The body resource for this request
+ This corresponds to the ``instance_groups_remove_instances_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance_group,
+ instance_groups_remove_instances_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.RemoveInstancesInstanceGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.RemoveInstancesInstanceGroupRequest):
+ request = compute.RemoveInstancesInstanceGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group is not None:
+ request.instance_group = instance_group
+ if instance_groups_remove_instances_request_resource is not None:
+ request.instance_groups_remove_instances_request_resource = (
+ instance_groups_remove_instances_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.remove_instances]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def set_named_ports_unary(
self,
request: Union[compute.SetNamedPortsInstanceGroupRequest, dict] = None,
@@ -1299,22 +1750,9 @@ def set_named_ports_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1368,6 +1806,138 @@ def set_named_ports_unary(
# Done; return the response.
return response
+ def set_named_ports(
+ self,
+ request: Union[compute.SetNamedPortsInstanceGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_group: str = None,
+ instance_groups_set_named_ports_request_resource: compute.InstanceGroupsSetNamedPortsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the named ports for the specified instance
+ group.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetNamedPortsInstanceGroupRequest, dict]):
+ The request object. A request message for
+ InstanceGroups.SetNamedPorts. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ instance group is located.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group (str):
+ The name of the instance group where
+ the named ports are updated.
+
+ This corresponds to the ``instance_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_groups_set_named_ports_request_resource (google.cloud.compute_v1.types.InstanceGroupsSetNamedPortsRequest):
+ The body resource for this request
+ This corresponds to the ``instance_groups_set_named_ports_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance_group,
+ instance_groups_set_named_ports_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetNamedPortsInstanceGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetNamedPortsInstanceGroupRequest):
+ request = compute.SetNamedPortsInstanceGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_group is not None:
+ request.instance_group = instance_group
+ if instance_groups_set_named_ports_request_resource is not None:
+ request.instance_groups_set_named_ports_request_resource = (
+ instance_groups_set_named_ports_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_named_ports]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/instance_groups/transports/base.py b/google/cloud/compute_v1/services/instance_groups/transports/base.py
index 7d87a9179..c9b937038 100644
--- a/google/cloud/compute_v1/services/instance_groups/transports/base.py
+++ b/google/cloud/compute_v1/services/instance_groups/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import zone_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -266,5 +269,21 @@ def set_named_ports(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _zone_operations_client(self) -> zone_operations.ZoneOperationsClient:
+ ex_op_service = self._extended_operations_services.get("zone_operations")
+ if not ex_op_service:
+ ex_op_service = zone_operations.ZoneOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["zone_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("InstanceGroupsTransport",)
diff --git a/google/cloud/compute_v1/services/instance_groups/transports/rest.py b/google/cloud/compute_v1/services/instance_groups/transports/rest.py
index 301aa9c06..79c1cd451 100644
--- a/google/cloud/compute_v1/services/instance_groups/transports/rest.py
+++ b/google/cloud/compute_v1/services/instance_groups/transports/rest.py
@@ -1494,6 +1494,10 @@ def set_named_ports(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/instance_templates/client.py b/google/cloud/compute_v1/services/instance_templates/client.py
index 521808fbe..362e6ac39 100644
--- a/google/cloud/compute_v1/services/instance_templates/client.py
+++ b/google/cloud/compute_v1/services/instance_templates/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.instance_templates import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import InstanceTemplatesTransport, DEFAULT_CLIENT_INFO
@@ -441,22 +444,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -497,6 +487,112 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteInstanceTemplateRequest, dict] = None,
+ *,
+ project: str = None,
+ instance_template: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified instance template. Deleting an
+ instance template is permanent and cannot be undone. It
+ is not possible to delete templates that are already in
+ use by a managed instance group.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteInstanceTemplateRequest, dict]):
+ The request object. A request message for
+ InstanceTemplates.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_template (str):
+ The name of the instance template to
+ delete.
+
+ This corresponds to the ``instance_template`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, instance_template])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteInstanceTemplateRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteInstanceTemplateRequest):
+ request = compute.DeleteInstanceTemplateRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if instance_template is not None:
+ request.instance_template = instance_template
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetInstanceTemplateRequest, dict] = None,
@@ -736,22 +832,91 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, instance_template_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertInstanceTemplateRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertInstanceTemplateRequest):
+ request = compute.InsertInstanceTemplateRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if instance_template_resource is not None:
+ request.instance_template_resource = instance_template_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertInstanceTemplateRequest, dict] = None,
+ *,
+ project: str = None,
+ instance_template_resource: compute.InstanceTemplate = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates an instance template in the specified project
+ using the data that is included in the request. If you
+ are creating a new template to update an existing
+ instance group, your new instance template must use the
+ same network or, if applicable, the same subnetwork as
+ the original template.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertInstanceTemplateRequest, dict]):
+ The request object. A request message for
+ InstanceTemplates.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_template_resource (google.cloud.compute_v1.types.InstanceTemplate):
+ The body resource for this request
+ This corresponds to the ``instance_template_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -789,6 +954,30 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/instance_templates/transports/base.py b/google/cloud/compute_v1/services/instance_templates/transports/base.py
index a90c3e2d4..a7cc83059 100644
--- a/google/cloud/compute_v1/services/instance_templates/transports/base.py
+++ b/google/cloud/compute_v1/services/instance_templates/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -234,5 +237,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("InstanceTemplatesTransport",)
diff --git a/google/cloud/compute_v1/services/instance_templates/transports/rest.py b/google/cloud/compute_v1/services/instance_templates/transports/rest.py
index d6255478b..e9406817b 100644
--- a/google/cloud/compute_v1/services/instance_templates/transports/rest.py
+++ b/google/cloud/compute_v1/services/instance_templates/transports/rest.py
@@ -1245,6 +1245,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/instances/client.py b/google/cloud/compute_v1/services/instances/client.py
index 7efeea920..a21eb7da2 100644
--- a/google/cloud/compute_v1/services/instances/client.py
+++ b/google/cloud/compute_v1/services/instances/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.instances import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import InstancesTransport, DEFAULT_CLIENT_INFO
@@ -457,22 +460,9 @@ def add_access_config_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -521,6 +511,139 @@ def add_access_config_unary(
# Done; return the response.
return response
+ def add_access_config(
+ self,
+ request: Union[compute.AddAccessConfigInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ network_interface: str = None,
+ access_config_resource: compute.AccessConfig = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Adds an access config to an instance's network
+ interface.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.AddAccessConfigInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.AddAccessConfig. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ The instance name for this request.
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_interface (str):
+ The name of the network interface to
+ add to this instance.
+
+ This corresponds to the ``network_interface`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ access_config_resource (google.cloud.compute_v1.types.AccessConfig):
+ The body resource for this request
+ This corresponds to the ``access_config_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, instance, network_interface, access_config_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.AddAccessConfigInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.AddAccessConfigInstanceRequest):
+ request = compute.AddAccessConfigInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if network_interface is not None:
+ request.network_interface = network_interface
+ if access_config_resource is not None:
+ request.access_config_resource = access_config_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.add_access_config]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def add_resource_policies_unary(
self,
request: Union[compute.AddResourcePoliciesInstanceRequest, dict] = None,
@@ -571,22 +694,110 @@ def add_resource_policies_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, instance, instances_add_resource_policies_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.AddResourcePoliciesInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.AddResourcePoliciesInstanceRequest):
+ request = compute.AddResourcePoliciesInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if instances_add_resource_policies_request_resource is not None:
+ request.instances_add_resource_policies_request_resource = (
+ instances_add_resource_policies_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.add_resource_policies]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def add_resource_policies(
+ self,
+ request: Union[compute.AddResourcePoliciesInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ instances_add_resource_policies_request_resource: compute.InstancesAddResourcePoliciesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Adds existing resource policies to an instance. You
+ can only add one policy right now which will be applied
+ to this instance for scheduling live migrations.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.AddResourcePoliciesInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.AddResourcePolicies. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ The instance name for this request.
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instances_add_resource_policies_request_resource (google.cloud.compute_v1.types.InstancesAddResourcePoliciesRequest):
+ The body resource for this request
+ This corresponds to the ``instances_add_resource_policies_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -632,6 +843,31 @@ def add_resource_policies_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -770,22 +1006,9 @@ def attach_disk_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -830,24 +1053,28 @@ def attach_disk_unary(
# Done; return the response.
return response
- def bulk_insert_unary(
+ def attach_disk(
self,
- request: Union[compute.BulkInsertInstanceRequest, dict] = None,
+ request: Union[compute.AttachDiskInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
- bulk_insert_instance_resource_resource: compute.BulkInsertInstanceResource = None,
+ instance: str = None,
+ attached_disk_resource: compute.AttachedDisk = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Creates multiple instances. Count specifies the
- number of instances to create.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Attaches an existing Disk resource to an instance.
+ You must first create the disk before you can attach it.
+ It is not possible to create and attach a disk at the
+ same time. For more information, read Adding a
+ persistent disk to your instance.
Args:
- request (Union[google.cloud.compute_v1.types.BulkInsertInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.AttachDiskInstanceRequest, dict]):
The request object. A request message for
- Instances.BulkInsert. See the method description for
+ Instances.AttachDisk. See the method description for
details.
project (str):
Project ID for this request.
@@ -861,9 +1088,14 @@ def bulk_insert_unary(
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- bulk_insert_instance_resource_resource (google.cloud.compute_v1.types.BulkInsertInstanceResource):
+ instance (str):
+ The instance name for this request.
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ attached_disk_resource (google.cloud.compute_v1.types.AttachedDisk):
The body resource for this request
- This corresponds to the ``bulk_insert_instance_resource_resource`` field
+ This corresponds to the ``attached_disk_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -873,30 +1105,15 @@ def bulk_insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, zone, bulk_insert_instance_resource_resource]
- )
+ has_flattened_params = any([project, zone, instance, attached_disk_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -904,25 +1121,25 @@ def bulk_insert_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.BulkInsertInstanceRequest.
+ # in a compute.AttachDiskInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.BulkInsertInstanceRequest):
- request = compute.BulkInsertInstanceRequest(request)
+ if not isinstance(request, compute.AttachDiskInstanceRequest):
+ request = compute.AttachDiskInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if zone is not None:
request.zone = zone
- if bulk_insert_instance_resource_resource is not None:
- request.bulk_insert_instance_resource_resource = (
- bulk_insert_instance_resource_resource
- )
+ if instance is not None:
+ request.instance = instance
+ if attached_disk_resource is not None:
+ request.attached_disk_resource = attached_disk_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.bulk_insert]
+ rpc = self._transport._wrapped_methods[self._transport.attach_disk]
# Send the request.
response = rpc(
@@ -932,27 +1149,52 @@ def bulk_insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def delete_unary(
+ def bulk_insert_unary(
self,
- request: Union[compute.DeleteInstanceRequest, dict] = None,
+ request: Union[compute.BulkInsertInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
- instance: str = None,
+ bulk_insert_instance_resource_resource: compute.BulkInsertInstanceResource = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Deletes the specified Instance resource. For more
- information, see Deleting an instance.
+ r"""Creates multiple instances. Count specifies the
+ number of instances to create.
Args:
- request (Union[google.cloud.compute_v1.types.DeleteInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.BulkInsertInstanceRequest, dict]):
The request object. A request message for
- Instances.Delete. See the method description for
+ Instances.BulkInsert. See the method description for
details.
project (str):
Project ID for this request.
@@ -966,11 +1208,9 @@ def delete_unary(
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance (str):
- Name of the instance resource to
- delete.
-
- This corresponds to the ``instance`` field
+ bulk_insert_instance_resource_resource (google.cloud.compute_v1.types.BulkInsertInstanceResource):
+ The body resource for this request
+ This corresponds to the ``bulk_insert_instance_resource_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -980,28 +1220,17 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance])
+ has_flattened_params = any(
+ [project, zone, bulk_insert_instance_resource_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1009,23 +1238,25 @@ def delete_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.DeleteInstanceRequest.
+ # in a compute.BulkInsertInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.DeleteInstanceRequest):
- request = compute.DeleteInstanceRequest(request)
+ if not isinstance(request, compute.BulkInsertInstanceRequest):
+ request = compute.BulkInsertInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if zone is not None:
request.zone = zone
- if instance is not None:
- request.instance = instance
+ if bulk_insert_instance_resource_resource is not None:
+ request.bulk_insert_instance_resource_resource = (
+ bulk_insert_instance_resource_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.delete]
+ rpc = self._transport._wrapped_methods[self._transport.bulk_insert]
# Send the request.
response = rpc(
@@ -1038,27 +1269,25 @@ def delete_unary(
# Done; return the response.
return response
- def delete_access_config_unary(
+ def bulk_insert(
self,
- request: Union[compute.DeleteAccessConfigInstanceRequest, dict] = None,
+ request: Union[compute.BulkInsertInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
- instance: str = None,
- access_config: str = None,
- network_interface: str = None,
+ bulk_insert_instance_resource_resource: compute.BulkInsertInstanceResource = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Deletes an access config from an instance's network
- interface.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates multiple instances. Count specifies the
+ number of instances to create.
Args:
- request (Union[google.cloud.compute_v1.types.DeleteAccessConfigInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.BulkInsertInstanceRequest, dict]):
The request object. A request message for
- Instances.DeleteAccessConfig. See the method description
- for details.
+ Instances.BulkInsert. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1071,21 +1300,9 @@ def delete_access_config_unary(
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance (str):
- The instance name for this request.
- This corresponds to the ``instance`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
- access_config (str):
- The name of the access config to
- delete.
-
- This corresponds to the ``access_config`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
- network_interface (str):
- The name of the network interface.
- This corresponds to the ``network_interface`` field
+ bulk_insert_instance_resource_resource (google.cloud.compute_v1.types.BulkInsertInstanceResource):
+ The body resource for this request
+ This corresponds to the ``bulk_insert_instance_resource_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1095,29 +1312,16 @@ def delete_access_config_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
has_flattened_params = any(
- [project, zone, instance, access_config, network_interface]
+ [project, zone, bulk_insert_instance_resource_resource]
)
if request is not None and has_flattened_params:
raise ValueError(
@@ -1126,27 +1330,25 @@ def delete_access_config_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.DeleteAccessConfigInstanceRequest.
+ # in a compute.BulkInsertInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.DeleteAccessConfigInstanceRequest):
- request = compute.DeleteAccessConfigInstanceRequest(request)
+ if not isinstance(request, compute.BulkInsertInstanceRequest):
+ request = compute.BulkInsertInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if zone is not None:
request.zone = zone
- if instance is not None:
- request.instance = instance
- if access_config is not None:
- request.access_config = access_config
- if network_interface is not None:
- request.network_interface = network_interface
+ if bulk_insert_instance_resource_resource is not None:
+ request.bulk_insert_instance_resource_resource = (
+ bulk_insert_instance_resource_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.delete_access_config]
+ rpc = self._transport._wrapped_methods[self._transport.bulk_insert]
# Send the request.
response = rpc(
@@ -1156,27 +1358,52 @@ def delete_access_config_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def detach_disk_unary(
+ def delete_unary(
self,
- request: Union[compute.DetachDiskInstanceRequest, dict] = None,
+ request: Union[compute.DeleteInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- device_name: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Detaches a disk from an instance.
+ r"""Deletes the specified Instance resource. For more
+ information, see Deleting an instance.
Args:
- request (Union[google.cloud.compute_v1.types.DetachDiskInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteInstanceRequest, dict]):
The request object. A request message for
- Instances.DetachDisk. See the method description for
+ Instances.Delete. See the method description for
details.
project (str):
Project ID for this request.
@@ -1191,17 +1418,10 @@ def detach_disk_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Instance name for this request.
- This corresponds to the ``instance`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
- device_name (str):
- The device name of the disk to
- detach. Make a get() request on the
- instance to view currently attached
- disks and device names.
+ Name of the instance resource to
+ delete.
- This corresponds to the ``device_name`` field
+ This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1211,28 +1431,15 @@ def detach_disk_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance, device_name])
+ has_flattened_params = any([project, zone, instance])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1240,11 +1447,11 @@ def detach_disk_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.DetachDiskInstanceRequest.
+ # in a compute.DeleteInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.DetachDiskInstanceRequest):
- request = compute.DetachDiskInstanceRequest(request)
+ if not isinstance(request, compute.DeleteInstanceRequest):
+ request = compute.DeleteInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1253,12 +1460,10 @@ def detach_disk_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if device_name is not None:
- request.device_name = device_name
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.detach_disk]
+ rpc = self._transport._wrapped_methods[self._transport.delete]
# Send the request.
response = rpc(
@@ -1271,9 +1476,9 @@ def detach_disk_unary(
# Done; return the response.
return response
- def get(
+ def delete(
self,
- request: Union[compute.GetInstanceRequest, dict] = None,
+ request: Union[compute.DeleteInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
@@ -1281,14 +1486,15 @@ def get(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Instance:
- r"""Returns the specified Instance resource. Gets a list
- of available instances by making a list() request.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified Instance resource. For more
+ information, see Deleting an instance.
Args:
- request (Union[google.cloud.compute_v1.types.GetInstanceRequest, dict]):
- The request object. A request message for Instances.Get.
- See the method description for details.
+ request (Union[google.cloud.compute_v1.types.DeleteInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.Delete. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1303,7 +1509,7 @@ def get(
should not be set.
instance (str):
Name of the instance resource to
- return.
+ delete.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
@@ -1315,12 +1521,9 @@ def get(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Instance:
- Represents an Instance resource. An
- instance is a virtual machine that is
- hosted on Google Cloud Platform. For
- more information, read Virtual Machine
- Instances.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1334,11 +1537,11 @@ def get(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetInstanceRequest.
+ # in a compute.DeleteInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetInstanceRequest):
- request = compute.GetInstanceRequest(request)
+ if not isinstance(request, compute.DeleteInstanceRequest):
+ request = compute.DeleteInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1350,7 +1553,7 @@ def get(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get]
+ rpc = self._transport._wrapped_methods[self._transport.delete]
# Send the request.
response = rpc(
@@ -1360,29 +1563,55 @@ def get(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def get_effective_firewalls(
+ def delete_access_config_unary(
self,
- request: Union[compute.GetEffectiveFirewallsInstanceRequest, dict] = None,
+ request: Union[compute.DeleteAccessConfigInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
+ access_config: str = None,
network_interface: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.InstancesGetEffectiveFirewallsResponse:
- r"""Returns effective firewalls applied to an interface
- of the instance.
+ ) -> compute.Operation:
+ r"""Deletes an access config from an instance's network
+ interface.
Args:
- request (Union[google.cloud.compute_v1.types.GetEffectiveFirewallsInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteAccessConfigInstanceRequest, dict]):
The request object. A request message for
- Instances.GetEffectiveFirewalls. See the method
- description for details.
+ Instances.DeleteAccessConfig. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1396,16 +1625,19 @@ def get_effective_firewalls(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance scoping this
- request.
-
+ The instance name for this request.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- network_interface (str):
- The name of the network interface to
- get the effective firewalls.
+ access_config (str):
+ The name of the access config to
+ delete.
+ This corresponds to the ``access_config`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_interface (str):
+ The name of the network interface.
This corresponds to the ``network_interface`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
@@ -1416,13 +1648,17 @@ def get_effective_firewalls(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.InstancesGetEffectiveFirewallsResponse:
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance, network_interface])
+ has_flattened_params = any(
+ [project, zone, instance, access_config, network_interface]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1430,11 +1666,11 @@ def get_effective_firewalls(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetEffectiveFirewallsInstanceRequest.
+ # in a compute.DeleteAccessConfigInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetEffectiveFirewallsInstanceRequest):
- request = compute.GetEffectiveFirewallsInstanceRequest(request)
+ if not isinstance(request, compute.DeleteAccessConfigInstanceRequest):
+ request = compute.DeleteAccessConfigInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1443,12 +1679,14 @@ def get_effective_firewalls(
request.zone = zone
if instance is not None:
request.instance = instance
+ if access_config is not None:
+ request.access_config = access_config
if network_interface is not None:
request.network_interface = network_interface
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_effective_firewalls]
+ rpc = self._transport._wrapped_methods[self._transport.delete_access_config]
# Send the request.
response = rpc(
@@ -1461,23 +1699,26 @@ def get_effective_firewalls(
# Done; return the response.
return response
- def get_guest_attributes(
+ def delete_access_config(
self,
- request: Union[compute.GetGuestAttributesInstanceRequest, dict] = None,
+ request: Union[compute.DeleteAccessConfigInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
+ access_config: str = None,
+ network_interface: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.GuestAttributes:
- r"""Returns the specified guest attributes entry.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes an access config from an instance's network
+ interface.
Args:
- request (Union[google.cloud.compute_v1.types.GetGuestAttributesInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteAccessConfigInstanceRequest, dict]):
The request object. A request message for
- Instances.GetGuestAttributes. See the method description
+ Instances.DeleteAccessConfig. See the method description
for details.
project (str):
Project ID for this request.
@@ -1492,12 +1733,22 @@ def get_guest_attributes(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance scoping this
- request.
-
+ The instance name for this request.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ access_config (str):
+ The name of the access config to
+ delete.
+
+ This corresponds to the ``access_config`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_interface (str):
+ The name of the network interface.
+ This corresponds to the ``network_interface`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1505,13 +1756,17 @@ def get_guest_attributes(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.GuestAttributes:
- A guest attributes entry.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance])
+ has_flattened_params = any(
+ [project, zone, instance, access_config, network_interface]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1519,11 +1774,11 @@ def get_guest_attributes(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetGuestAttributesInstanceRequest.
+ # in a compute.DeleteAccessConfigInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetGuestAttributesInstanceRequest):
- request = compute.GetGuestAttributesInstanceRequest(request)
+ if not isinstance(request, compute.DeleteAccessConfigInstanceRequest):
+ request = compute.DeleteAccessConfigInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1532,10 +1787,14 @@ def get_guest_attributes(
request.zone = zone
if instance is not None:
request.instance = instance
+ if access_config is not None:
+ request.access_config = access_config
+ if network_interface is not None:
+ request.network_interface = network_interface
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_guest_attributes]
+ rpc = self._transport._wrapped_methods[self._transport.delete_access_config]
# Send the request.
response = rpc(
@@ -1545,27 +1804,52 @@ def get_guest_attributes(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def get_iam_policy(
+ def detach_disk_unary(
self,
- request: Union[compute.GetIamPolicyInstanceRequest, dict] = None,
+ request: Union[compute.DetachDiskInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
- resource: str = None,
+ instance: str = None,
+ device_name: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Policy:
- r"""Gets the access control policy for a resource. May be
- empty if no such policy or resource exists.
+ ) -> compute.Operation:
+ r"""Detaches a disk from an instance.
Args:
- request (Union[google.cloud.compute_v1.types.GetIamPolicyInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DetachDiskInstanceRequest, dict]):
The request object. A request message for
- Instances.GetIamPolicy. See the method description for
+ Instances.DetachDisk. See the method description for
details.
project (str):
Project ID for this request.
@@ -1579,11 +1863,18 @@ def get_iam_policy(
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- resource (str):
- Name or id of the resource for this
- request.
+ instance (str):
+ Instance name for this request.
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ device_name (str):
+ The device name of the disk to
+ detach. Make a get() request on the
+ instance to view currently attached
+ disks and device names.
- This corresponds to the ``resource`` field
+ This corresponds to the ``device_name`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1593,53 +1884,15 @@ def get_iam_policy(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Policy:
- An Identity and Access Management (IAM) policy, which
- specifies access controls for Google Cloud resources. A
- Policy is a collection of bindings. A binding binds one
- or more members, or principals, to a single role.
- Principals can be user accounts, service accounts,
- Google groups, and domains (such as G Suite). A role is
- a named list of permissions; each role can be an IAM
- predefined role or a user-created custom role. For some
- types of Google Cloud resources, a binding can also
- specify a condition, which is a logical expression that
- allows access to a resource only if the expression
- evaluates to true. A condition can add constraints based
- on attributes of the request, the resource, or both. To
- learn which resources support conditions in their IAM
- policies, see the [IAM
- documentation](\ https://cloud.google.com/iam/help/conditions/resource-policies).
- **JSON example:** { "bindings": [ { "role":
- "roles/resourcemanager.organizationAdmin", "members": [
- "user:mike@example.com", "group:admins@example.com",
- "domain:google.com",
- "serviceAccount:my-project-id@appspot.gserviceaccount.com"
- ] }, { "role":
- "roles/resourcemanager.organizationViewer", "members": [
- "user:eve@example.com" ], "condition": { "title":
- "expirable access", "description": "Does not grant
- access after Sep 2020", "expression": "request.time <
- timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
- "BwWWja0YfJA=", "version": 3 } **YAML example:**
- bindings: - members: - user:\ mike@example.com -
- group:\ admins@example.com - domain:google.com -
- serviceAccount:\ my-project-id@appspot.gserviceaccount.com
- role: roles/resourcemanager.organizationAdmin - members:
- - user:\ eve@example.com role:
- roles/resourcemanager.organizationViewer condition:
- title: expirable access description: Does not grant
- access after Sep 2020 expression: request.time <
- timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
- version: 3 For a description of IAM and its features,
- see the [IAM
- documentation](\ https://cloud.google.com/iam/docs/).
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, resource])
+ has_flattened_params = any([project, zone, instance, device_name])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1647,23 +1900,25 @@ def get_iam_policy(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetIamPolicyInstanceRequest.
+ # in a compute.DetachDiskInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetIamPolicyInstanceRequest):
- request = compute.GetIamPolicyInstanceRequest(request)
+ if not isinstance(request, compute.DetachDiskInstanceRequest):
+ request = compute.DetachDiskInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if zone is not None:
request.zone = zone
- if resource is not None:
- request.resource = resource
+ if instance is not None:
+ request.instance = instance
+ if device_name is not None:
+ request.device_name = device_name
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_iam_policy]
+ rpc = self._transport._wrapped_methods[self._transport.detach_disk]
# Send the request.
response = rpc(
@@ -1676,23 +1931,24 @@ def get_iam_policy(
# Done; return the response.
return response
- def get_screenshot(
+ def detach_disk(
self,
- request: Union[compute.GetScreenshotInstanceRequest, dict] = None,
+ request: Union[compute.DetachDiskInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
+ device_name: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Screenshot:
- r"""Returns the screenshot from the specified instance.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Detaches a disk from an instance.
Args:
- request (Union[google.cloud.compute_v1.types.GetScreenshotInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DetachDiskInstanceRequest, dict]):
The request object. A request message for
- Instances.GetScreenshot. See the method description for
+ Instances.DetachDisk. See the method description for
details.
project (str):
Project ID for this request.
@@ -1707,12 +1963,19 @@ def get_screenshot(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance scoping this
- request.
-
+ Instance name for this request.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ device_name (str):
+ The device name of the disk to
+ detach. Make a get() request on the
+ instance to view currently attached
+ disks and device names.
+
+ This corresponds to the ``device_name`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1720,13 +1983,15 @@ def get_screenshot(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Screenshot:
- An instance's screenshot.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance])
+ has_flattened_params = any([project, zone, instance, device_name])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1734,11 +1999,11 @@ def get_screenshot(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetScreenshotInstanceRequest.
+ # in a compute.DetachDiskInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetScreenshotInstanceRequest):
- request = compute.GetScreenshotInstanceRequest(request)
+ if not isinstance(request, compute.DetachDiskInstanceRequest):
+ request = compute.DetachDiskInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1747,10 +2012,12 @@ def get_screenshot(
request.zone = zone
if instance is not None:
request.instance = instance
+ if device_name is not None:
+ request.device_name = device_name
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_screenshot]
+ rpc = self._transport._wrapped_methods[self._transport.detach_disk]
# Send the request.
response = rpc(
@@ -1760,12 +2027,37 @@ def get_screenshot(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def get_serial_port_output(
+ def get(
self,
- request: Union[compute.GetSerialPortOutputInstanceRequest, dict] = None,
+ request: Union[compute.GetInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
@@ -1773,15 +2065,14 @@ def get_serial_port_output(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.SerialPortOutput:
- r"""Returns the last 1 MB of serial port output from the
- specified instance.
+ ) -> compute.Instance:
+ r"""Returns the specified Instance resource. Gets a list
+ of available instances by making a list() request.
Args:
- request (Union[google.cloud.compute_v1.types.GetSerialPortOutputInstanceRequest, dict]):
- The request object. A request message for
- Instances.GetSerialPortOutput. See the method
- description for details.
+ request (Union[google.cloud.compute_v1.types.GetInstanceRequest, dict]):
+ The request object. A request message for Instances.Get.
+ See the method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1795,8 +2086,8 @@ def get_serial_port_output(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance for this
- request.
+ Name of the instance resource to
+ return.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
@@ -1808,8 +2099,13 @@ def get_serial_port_output(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.SerialPortOutput:
- An instance serial console output.
+ google.cloud.compute_v1.types.Instance:
+ Represents an Instance resource. An
+ instance is a virtual machine that is
+ hosted on Google Cloud Platform. For
+ more information, read Virtual Machine
+ Instances.
+
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
@@ -1822,11 +2118,11 @@ def get_serial_port_output(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetSerialPortOutputInstanceRequest.
+ # in a compute.GetInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetSerialPortOutputInstanceRequest):
- request = compute.GetSerialPortOutputInstanceRequest(request)
+ if not isinstance(request, compute.GetInstanceRequest):
+ request = compute.GetInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1838,7 +2134,7 @@ def get_serial_port_output(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_serial_port_output]
+ rpc = self._transport._wrapped_methods[self._transport.get]
# Send the request.
response = rpc(
@@ -1851,23 +2147,25 @@ def get_serial_port_output(
# Done; return the response.
return response
- def get_shielded_instance_identity(
+ def get_effective_firewalls(
self,
- request: Union[compute.GetShieldedInstanceIdentityInstanceRequest, dict] = None,
+ request: Union[compute.GetEffectiveFirewallsInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
+ network_interface: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.ShieldedInstanceIdentity:
- r"""Returns the Shielded Instance Identity of an instance
+ ) -> compute.InstancesGetEffectiveFirewallsResponse:
+ r"""Returns effective firewalls applied to an interface
+ of the instance.
Args:
- request (Union[google.cloud.compute_v1.types.GetShieldedInstanceIdentityInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.GetEffectiveFirewallsInstanceRequest, dict]):
The request object. A request message for
- Instances.GetShieldedInstanceIdentity. See the method
+ Instances.GetEffectiveFirewalls. See the method
description for details.
project (str):
Project ID for this request.
@@ -1882,12 +2180,19 @@ def get_shielded_instance_identity(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name or id of the instance scoping
- this request.
+ Name of the instance scoping this
+ request.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ network_interface (str):
+ The name of the network interface to
+ get the effective firewalls.
+
+ This corresponds to the ``network_interface`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1895,13 +2200,13 @@ def get_shielded_instance_identity(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.ShieldedInstanceIdentity:
- A Shielded Instance Identity.
+ google.cloud.compute_v1.types.InstancesGetEffectiveFirewallsResponse:
+
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance])
+ has_flattened_params = any([project, zone, instance, network_interface])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1909,11 +2214,11 @@ def get_shielded_instance_identity(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetShieldedInstanceIdentityInstanceRequest.
+ # in a compute.GetEffectiveFirewallsInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetShieldedInstanceIdentityInstanceRequest):
- request = compute.GetShieldedInstanceIdentityInstanceRequest(request)
+ if not isinstance(request, compute.GetEffectiveFirewallsInstanceRequest):
+ request = compute.GetEffectiveFirewallsInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1922,12 +2227,12 @@ def get_shielded_instance_identity(
request.zone = zone
if instance is not None:
request.instance = instance
+ if network_interface is not None:
+ request.network_interface = network_interface
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[
- self._transport.get_shielded_instance_identity
- ]
+ rpc = self._transport._wrapped_methods[self._transport.get_effective_firewalls]
# Send the request.
response = rpc(
@@ -1940,25 +2245,24 @@ def get_shielded_instance_identity(
# Done; return the response.
return response
- def insert_unary(
+ def get_guest_attributes(
self,
- request: Union[compute.InsertInstanceRequest, dict] = None,
+ request: Union[compute.GetGuestAttributesInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
- instance_resource: compute.Instance = None,
+ instance: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Creates an instance resource in the specified project
- using the data included in the request.
+ ) -> compute.GuestAttributes:
+ r"""Returns the specified guest attributes entry.
Args:
- request (Union[google.cloud.compute_v1.types.InsertInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.GetGuestAttributesInstanceRequest, dict]):
The request object. A request message for
- Instances.Insert. See the method description for
- details.
+ Instances.GetGuestAttributes. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1971,9 +2275,3233 @@ def insert_unary(
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance_resource (google.cloud.compute_v1.types.Instance):
- The body resource for this request
- This corresponds to the ``instance_resource`` field
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.GuestAttributes:
+ A guest attributes entry.
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetGuestAttributesInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetGuestAttributesInstanceRequest):
+ request = compute.GetGuestAttributesInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_guest_attributes]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_iam_policy(
+ self,
+ request: Union[compute.GetIamPolicyInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ resource: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Policy:
+ r"""Gets the access control policy for a resource. May be
+ empty if no such policy or resource exists.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetIamPolicyInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.GetIamPolicy. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.Policy:
+ An Identity and Access Management (IAM) policy, which
+ specifies access controls for Google Cloud resources. A
+ Policy is a collection of bindings. A binding binds one
+ or more members, or principals, to a single role.
+ Principals can be user accounts, service accounts,
+ Google groups, and domains (such as G Suite). A role is
+ a named list of permissions; each role can be an IAM
+ predefined role or a user-created custom role. For some
+ types of Google Cloud resources, a binding can also
+ specify a condition, which is a logical expression that
+ allows access to a resource only if the expression
+ evaluates to true. A condition can add constraints based
+ on attributes of the request, the resource, or both. To
+ learn which resources support conditions in their IAM
+ policies, see the [IAM
+ documentation](\ https://cloud.google.com/iam/help/conditions/resource-policies).
+ **JSON example:** { "bindings": [ { "role":
+ "roles/resourcemanager.organizationAdmin", "members": [
+ "user:mike@example.com", "group:admins@example.com",
+ "domain:google.com",
+ "serviceAccount:my-project-id@appspot.gserviceaccount.com"
+ ] }, { "role":
+ "roles/resourcemanager.organizationViewer", "members": [
+ "user:eve@example.com" ], "condition": { "title":
+ "expirable access", "description": "Does not grant
+ access after Sep 2020", "expression": "request.time <
+ timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
+ "BwWWja0YfJA=", "version": 3 } **YAML example:**
+ bindings: - members: - user:\ mike@example.com -
+ group:\ admins@example.com - domain:google.com -
+ serviceAccount:\ my-project-id@appspot.gserviceaccount.com
+ role: roles/resourcemanager.organizationAdmin - members:
+ - user:\ eve@example.com role:
+ roles/resourcemanager.organizationViewer condition:
+ title: expirable access description: Does not grant
+ access after Sep 2020 expression: request.time <
+ timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
+ version: 3 For a description of IAM and its features,
+ see the [IAM
+ documentation](\ https://cloud.google.com/iam/docs/).
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetIamPolicyInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetIamPolicyInstanceRequest):
+ request = compute.GetIamPolicyInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if resource is not None:
+ request.resource = resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_iam_policy]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_screenshot(
+ self,
+ request: Union[compute.GetScreenshotInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Screenshot:
+ r"""Returns the screenshot from the specified instance.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetScreenshotInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.GetScreenshot. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.Screenshot:
+ An instance's screenshot.
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetScreenshotInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetScreenshotInstanceRequest):
+ request = compute.GetScreenshotInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_screenshot]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_serial_port_output(
+ self,
+ request: Union[compute.GetSerialPortOutputInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.SerialPortOutput:
+ r"""Returns the last 1 MB of serial port output from the
+ specified instance.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetSerialPortOutputInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.GetSerialPortOutput. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance for this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.SerialPortOutput:
+ An instance serial console output.
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetSerialPortOutputInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetSerialPortOutputInstanceRequest):
+ request = compute.GetSerialPortOutputInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_serial_port_output]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_shielded_instance_identity(
+ self,
+ request: Union[compute.GetShieldedInstanceIdentityInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.ShieldedInstanceIdentity:
+ r"""Returns the Shielded Instance Identity of an instance
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetShieldedInstanceIdentityInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.GetShieldedInstanceIdentity. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name or id of the instance scoping
+ this request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.ShieldedInstanceIdentity:
+ A Shielded Instance Identity.
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetShieldedInstanceIdentityInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetShieldedInstanceIdentityInstanceRequest):
+ request = compute.GetShieldedInstanceIdentityInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[
+ self._transport.get_shielded_instance_identity
+ ]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert_unary(
+ self,
+ request: Union[compute.InsertInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_resource: compute.Instance = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Creates an instance resource in the specified project
+ using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_resource (google.cloud.compute_v1.types.Instance):
+ The body resource for this request
+ This corresponds to the ``instance_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertInstanceRequest):
+ request = compute.InsertInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_resource is not None:
+ request.instance_resource = instance_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance_resource: compute.Instance = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates an instance resource in the specified project
+ using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_resource (google.cloud.compute_v1.types.Instance):
+ The body resource for this request
+ This corresponds to the ``instance_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertInstanceRequest):
+ request = compute.InsertInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance_resource is not None:
+ request.instance_resource = instance_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def list(
+ self,
+ request: Union[compute.ListInstancesRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListPager:
+ r"""Retrieves the list of instances contained within the
+ specified zone.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListInstancesRequest, dict]):
+ The request object. A request message for
+ Instances.List. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.instances.pagers.ListPager:
+ Contains a list of instances.
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListInstancesRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ListInstancesRequest):
+ request = compute.ListInstancesRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def list_referrers(
+ self,
+ request: Union[compute.ListReferrersInstancesRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListReferrersPager:
+ r"""Retrieves a list of resources that refer to the VM
+ instance specified in the request. For example, if the
+ VM instance is part of a managed or unmanaged instance
+ group, the referrers list includes the instance group.
+ For more information, read Viewing referrers to VM
+ instances.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListReferrersInstancesRequest, dict]):
+ The request object. A request message for
+ Instances.ListReferrers. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the target instance scoping
+ this request, or '-' if the request
+ should span over all instances in the
+ container.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.instances.pagers.ListReferrersPager:
+ Contains a list of instance
+ referrers.
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListReferrersInstancesRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ListReferrersInstancesRequest):
+ request = compute.ListReferrersInstancesRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list_referrers]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListReferrersPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def remove_resource_policies_unary(
+ self,
+ request: Union[compute.RemoveResourcePoliciesInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ instances_remove_resource_policies_request_resource: compute.InstancesRemoveResourcePoliciesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Removes resource policies from an instance.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.RemoveResourcePoliciesInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.RemoveResourcePolicies. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ The instance name for this request.
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instances_remove_resource_policies_request_resource (google.cloud.compute_v1.types.InstancesRemoveResourcePoliciesRequest):
+ The body resource for this request
+ This corresponds to the ``instances_remove_resource_policies_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance,
+ instances_remove_resource_policies_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.RemoveResourcePoliciesInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.RemoveResourcePoliciesInstanceRequest):
+ request = compute.RemoveResourcePoliciesInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if instances_remove_resource_policies_request_resource is not None:
+ request.instances_remove_resource_policies_request_resource = (
+ instances_remove_resource_policies_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.remove_resource_policies]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def remove_resource_policies(
+ self,
+ request: Union[compute.RemoveResourcePoliciesInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ instances_remove_resource_policies_request_resource: compute.InstancesRemoveResourcePoliciesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Removes resource policies from an instance.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.RemoveResourcePoliciesInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.RemoveResourcePolicies. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ The instance name for this request.
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instances_remove_resource_policies_request_resource (google.cloud.compute_v1.types.InstancesRemoveResourcePoliciesRequest):
+ The body resource for this request
+ This corresponds to the ``instances_remove_resource_policies_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance,
+ instances_remove_resource_policies_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.RemoveResourcePoliciesInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.RemoveResourcePoliciesInstanceRequest):
+ request = compute.RemoveResourcePoliciesInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if instances_remove_resource_policies_request_resource is not None:
+ request.instances_remove_resource_policies_request_resource = (
+ instances_remove_resource_policies_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.remove_resource_policies]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def reset_unary(
+ self,
+ request: Union[compute.ResetInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Performs a reset on the instance. This is a hard
+ reset. The VM does not do a graceful shutdown. For more
+ information, see Resetting an instance.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ResetInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.Reset. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ResetInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ResetInstanceRequest):
+ request = compute.ResetInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.reset]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def reset(
+ self,
+ request: Union[compute.ResetInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Performs a reset on the instance. This is a hard
+ reset. The VM does not do a graceful shutdown. For more
+ information, see Resetting an instance.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ResetInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.Reset. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ResetInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ResetInstanceRequest):
+ request = compute.ResetInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.reset]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def resume_unary(
+ self,
+ request: Union[compute.ResumeInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Resumes an instance that was suspended using the
+ instances().suspend method.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ResumeInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.Resume. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance resource to
+ resume.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ResumeInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ResumeInstanceRequest):
+ request = compute.ResumeInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.resume]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def resume(
+ self,
+ request: Union[compute.ResumeInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Resumes an instance that was suspended using the
+ instances().suspend method.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ResumeInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.Resume. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance resource to
+ resume.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ResumeInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ResumeInstanceRequest):
+ request = compute.ResumeInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.resume]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def send_diagnostic_interrupt(
+ self,
+ request: Union[compute.SendDiagnosticInterruptInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.SendDiagnosticInterruptInstanceResponse:
+ r"""Sends diagnostic interrupt to the instance.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SendDiagnosticInterruptInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SendDiagnosticInterrupt. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.SendDiagnosticInterruptInstanceResponse:
+ A response message for
+ Instances.SendDiagnosticInterrupt. See
+ the method description for details.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SendDiagnosticInterruptInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SendDiagnosticInterruptInstanceRequest):
+ request = compute.SendDiagnosticInterruptInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[
+ self._transport.send_diagnostic_interrupt
+ ]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_deletion_protection_unary(
+ self,
+ request: Union[compute.SetDeletionProtectionInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ resource: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Sets deletion protection on the instance.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetDeletionProtectionInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SetDeletionProtection. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetDeletionProtectionInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetDeletionProtectionInstanceRequest):
+ request = compute.SetDeletionProtectionInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if resource is not None:
+ request.resource = resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_deletion_protection]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_deletion_protection(
+ self,
+ request: Union[compute.SetDeletionProtectionInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ resource: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets deletion protection on the instance.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetDeletionProtectionInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SetDeletionProtection. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetDeletionProtectionInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetDeletionProtectionInstanceRequest):
+ request = compute.SetDeletionProtectionInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if resource is not None:
+ request.resource = resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_deletion_protection]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def set_disk_auto_delete_unary(
+ self,
+ request: Union[compute.SetDiskAutoDeleteInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ auto_delete: bool = None,
+ device_name: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Sets the auto-delete flag for a disk attached to an
+ instance.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetDiskAutoDeleteInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SetDiskAutoDelete. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ The instance name for this request.
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ auto_delete (bool):
+ Whether to auto-delete the disk when
+ the instance is deleted.
+
+ This corresponds to the ``auto_delete`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ device_name (str):
+ The device name of the disk to
+ modify. Make a get() request on the
+ instance to view currently attached
+ disks and device names.
+
+ This corresponds to the ``device_name`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance, auto_delete, device_name])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetDiskAutoDeleteInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetDiskAutoDeleteInstanceRequest):
+ request = compute.SetDiskAutoDeleteInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if auto_delete is not None:
+ request.auto_delete = auto_delete
+ if device_name is not None:
+ request.device_name = device_name
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_disk_auto_delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_disk_auto_delete(
+ self,
+ request: Union[compute.SetDiskAutoDeleteInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ auto_delete: bool = None,
+ device_name: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the auto-delete flag for a disk attached to an
+ instance.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetDiskAutoDeleteInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SetDiskAutoDelete. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ The instance name for this request.
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ auto_delete (bool):
+ Whether to auto-delete the disk when
+ the instance is deleted.
+
+ This corresponds to the ``auto_delete`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ device_name (str):
+ The device name of the disk to
+ modify. Make a get() request on the
+ instance to view currently attached
+ disks and device names.
+
+ This corresponds to the ``device_name`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance, auto_delete, device_name])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetDiskAutoDeleteInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetDiskAutoDeleteInstanceRequest):
+ request = compute.SetDiskAutoDeleteInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if auto_delete is not None:
+ request.auto_delete = auto_delete
+ if device_name is not None:
+ request.device_name = device_name
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_disk_auto_delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def set_iam_policy(
+ self,
+ request: Union[compute.SetIamPolicyInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ resource: str = None,
+ zone_set_policy_request_resource: compute.ZoneSetPolicyRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Policy:
+ r"""Sets the access control policy on the specified
+ resource. Replaces any existing policy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetIamPolicyInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SetIamPolicy. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone_set_policy_request_resource (google.cloud.compute_v1.types.ZoneSetPolicyRequest):
+ The body resource for this request
+ This corresponds to the ``zone_set_policy_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.Policy:
+ An Identity and Access Management (IAM) policy, which
+ specifies access controls for Google Cloud resources. A
+ Policy is a collection of bindings. A binding binds one
+ or more members, or principals, to a single role.
+ Principals can be user accounts, service accounts,
+ Google groups, and domains (such as G Suite). A role is
+ a named list of permissions; each role can be an IAM
+ predefined role or a user-created custom role. For some
+ types of Google Cloud resources, a binding can also
+ specify a condition, which is a logical expression that
+ allows access to a resource only if the expression
+ evaluates to true. A condition can add constraints based
+ on attributes of the request, the resource, or both. To
+ learn which resources support conditions in their IAM
+ policies, see the [IAM
+ documentation](\ https://cloud.google.com/iam/help/conditions/resource-policies).
+ **JSON example:** { "bindings": [ { "role":
+ "roles/resourcemanager.organizationAdmin", "members": [
+ "user:mike@example.com", "group:admins@example.com",
+ "domain:google.com",
+ "serviceAccount:my-project-id@appspot.gserviceaccount.com"
+ ] }, { "role":
+ "roles/resourcemanager.organizationViewer", "members": [
+ "user:eve@example.com" ], "condition": { "title":
+ "expirable access", "description": "Does not grant
+ access after Sep 2020", "expression": "request.time <
+ timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
+ "BwWWja0YfJA=", "version": 3 } **YAML example:**
+ bindings: - members: - user:\ mike@example.com -
+ group:\ admins@example.com - domain:google.com -
+ serviceAccount:\ my-project-id@appspot.gserviceaccount.com
+ role: roles/resourcemanager.organizationAdmin - members:
+ - user:\ eve@example.com role:
+ roles/resourcemanager.organizationViewer condition:
+ title: expirable access description: Does not grant
+ access after Sep 2020 expression: request.time <
+ timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
+ version: 3 For a description of IAM and its features,
+ see the [IAM
+ documentation](\ https://cloud.google.com/iam/docs/).
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, resource, zone_set_policy_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetIamPolicyInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetIamPolicyInstanceRequest):
+ request = compute.SetIamPolicyInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if resource is not None:
+ request.resource = resource
+ if zone_set_policy_request_resource is not None:
+ request.zone_set_policy_request_resource = (
+ zone_set_policy_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_iam_policy]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_labels_unary(
+ self,
+ request: Union[compute.SetLabelsInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ instances_set_labels_request_resource: compute.InstancesSetLabelsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Sets labels on an instance. To learn more about
+ labels, read the Labeling Resources documentation.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetLabelsInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SetLabels. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instances_set_labels_request_resource (google.cloud.compute_v1.types.InstancesSetLabelsRequest):
+ The body resource for this request
+ This corresponds to the ``instances_set_labels_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, instance, instances_set_labels_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetLabelsInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetLabelsInstanceRequest):
+ request = compute.SetLabelsInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if instances_set_labels_request_resource is not None:
+ request.instances_set_labels_request_resource = (
+ instances_set_labels_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_labels]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_labels(
+ self,
+ request: Union[compute.SetLabelsInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ instances_set_labels_request_resource: compute.InstancesSetLabelsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets labels on an instance. To learn more about
+ labels, read the Labeling Resources documentation.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetLabelsInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SetLabels. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instances_set_labels_request_resource (google.cloud.compute_v1.types.InstancesSetLabelsRequest):
+ The body resource for this request
+ This corresponds to the ``instances_set_labels_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, instance, instances_set_labels_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetLabelsInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetLabelsInstanceRequest):
+ request = compute.SetLabelsInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if instances_set_labels_request_resource is not None:
+ request.instances_set_labels_request_resource = (
+ instances_set_labels_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_labels]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def set_machine_resources_unary(
+ self,
+ request: Union[compute.SetMachineResourcesInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ instances_set_machine_resources_request_resource: compute.InstancesSetMachineResourcesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Changes the number and/or type of accelerator for a
+ stopped instance to the values specified in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetMachineResourcesInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SetMachineResources. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instances_set_machine_resources_request_resource (google.cloud.compute_v1.types.InstancesSetMachineResourcesRequest):
+ The body resource for this request
+ This corresponds to the ``instances_set_machine_resources_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, instance, instances_set_machine_resources_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetMachineResourcesInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetMachineResourcesInstanceRequest):
+ request = compute.SetMachineResourcesInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if instances_set_machine_resources_request_resource is not None:
+ request.instances_set_machine_resources_request_resource = (
+ instances_set_machine_resources_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_machine_resources]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_machine_resources(
+ self,
+ request: Union[compute.SetMachineResourcesInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ instances_set_machine_resources_request_resource: compute.InstancesSetMachineResourcesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Changes the number and/or type of accelerator for a
+ stopped instance to the values specified in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetMachineResourcesInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SetMachineResources. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instances_set_machine_resources_request_resource (google.cloud.compute_v1.types.InstancesSetMachineResourcesRequest):
+ The body resource for this request
+ This corresponds to the ``instances_set_machine_resources_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, instance, instances_set_machine_resources_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetMachineResourcesInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetMachineResourcesInstanceRequest):
+ request = compute.SetMachineResourcesInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if instances_set_machine_resources_request_resource is not None:
+ request.instances_set_machine_resources_request_resource = (
+ instances_set_machine_resources_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_machine_resources]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def set_machine_type_unary(
+ self,
+ request: Union[compute.SetMachineTypeInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ instances_set_machine_type_request_resource: compute.InstancesSetMachineTypeRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Changes the machine type for a stopped instance to
+ the machine type specified in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetMachineTypeInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SetMachineType. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instances_set_machine_type_request_resource (google.cloud.compute_v1.types.InstancesSetMachineTypeRequest):
+ The body resource for this request
+ This corresponds to the ``instances_set_machine_type_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, instance, instances_set_machine_type_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetMachineTypeInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetMachineTypeInstanceRequest):
+ request = compute.SetMachineTypeInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if instances_set_machine_type_request_resource is not None:
+ request.instances_set_machine_type_request_resource = (
+ instances_set_machine_type_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_machine_type]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_machine_type(
+ self,
+ request: Union[compute.SetMachineTypeInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ instances_set_machine_type_request_resource: compute.InstancesSetMachineTypeRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Changes the machine type for a stopped instance to
+ the machine type specified in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetMachineTypeInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SetMachineType. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instances_set_machine_type_request_resource (google.cloud.compute_v1.types.InstancesSetMachineTypeRequest):
+ The body resource for this request
+ This corresponds to the ``instances_set_machine_type_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, instance, instances_set_machine_type_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetMachineTypeInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetMachineTypeInstanceRequest):
+ request = compute.SetMachineTypeInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if instances_set_machine_type_request_resource is not None:
+ request.instances_set_machine_type_request_resource = (
+ instances_set_machine_type_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_machine_type]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def set_metadata_unary(
+ self,
+ request: Union[compute.SetMetadataInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ metadata_resource: compute.Metadata = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Sets metadata for the specified instance to the data
+ included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetMetadataInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SetMetadata. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ metadata_resource (google.cloud.compute_v1.types.Metadata):
+ The body resource for this request
+ This corresponds to the ``metadata_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance, metadata_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetMetadataInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetMetadataInstanceRequest):
+ request = compute.SetMetadataInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if metadata_resource is not None:
+ request.metadata_resource = metadata_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_metadata]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_metadata(
+ self,
+ request: Union[compute.SetMetadataInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ metadata_resource: compute.Metadata = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets metadata for the specified instance to the data
+ included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetMetadataInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SetMetadata. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ metadata_resource (google.cloud.compute_v1.types.Metadata):
+ The body resource for this request
+ This corresponds to the ``metadata_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, instance, metadata_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetMetadataInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetMetadataInstanceRequest):
+ request = compute.SetMetadataInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if metadata_resource is not None:
+ request.metadata_resource = metadata_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_metadata]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def set_min_cpu_platform_unary(
+ self,
+ request: Union[compute.SetMinCpuPlatformInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ instances_set_min_cpu_platform_request_resource: compute.InstancesSetMinCpuPlatformRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Changes the minimum CPU platform that this instance
+ should use. This method can only be called on a stopped
+ instance. For more information, read Specifying a
+ Minimum CPU Platform.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetMinCpuPlatformInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SetMinCpuPlatform. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instances_set_min_cpu_platform_request_resource (google.cloud.compute_v1.types.InstancesSetMinCpuPlatformRequest):
+ The body resource for this request
+ This corresponds to the ``instances_set_min_cpu_platform_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, instance, instances_set_min_cpu_platform_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetMinCpuPlatformInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetMinCpuPlatformInstanceRequest):
+ request = compute.SetMinCpuPlatformInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if instances_set_min_cpu_platform_request_resource is not None:
+ request.instances_set_min_cpu_platform_request_resource = (
+ instances_set_min_cpu_platform_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_min_cpu_platform]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_min_cpu_platform(
+ self,
+ request: Union[compute.SetMinCpuPlatformInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ instance: str = None,
+ instances_set_min_cpu_platform_request_resource: compute.InstancesSetMinCpuPlatformRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Changes the minimum CPU platform that this instance
+ should use. This method can only be called on a stopped
+ instance. For more information, read Specifying a
+ Minimum CPU Platform.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetMinCpuPlatformInstanceRequest, dict]):
+ The request object. A request message for
+ Instances.SetMinCpuPlatform. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instances_set_min_cpu_platform_request_resource (google.cloud.compute_v1.types.InstancesSetMinCpuPlatformRequest):
+ The body resource for this request
+ This corresponds to the ``instances_set_min_cpu_platform_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1983,28 +5511,17 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance_resource])
+ has_flattened_params = any(
+ [project, zone, instance, instances_set_min_cpu_platform_request_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -2012,23 +5529,27 @@ def insert_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.InsertInstanceRequest.
+ # in a compute.SetMinCpuPlatformInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.InsertInstanceRequest):
- request = compute.InsertInstanceRequest(request)
+ if not isinstance(request, compute.SetMinCpuPlatformInstanceRequest):
+ request = compute.SetMinCpuPlatformInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if zone is not None:
request.zone = zone
- if instance_resource is not None:
- request.instance_resource = instance_resource
+ if instance is not None:
+ request.instance = instance
+ if instances_set_min_cpu_platform_request_resource is not None:
+ request.instances_set_min_cpu_platform_request_resource = (
+ instances_set_min_cpu_platform_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.insert]
+ rpc = self._transport._wrapped_methods[self._transport.set_min_cpu_platform]
# Send the request.
response = rpc(
@@ -2038,26 +5559,58 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def list(
+ def set_scheduling_unary(
self,
- request: Union[compute.ListInstancesRequest, dict] = None,
+ request: Union[compute.SetSchedulingInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
+ instance: str = None,
+ scheduling_resource: compute.Scheduling = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListPager:
- r"""Retrieves the list of instances contained within the
- specified zone.
+ ) -> compute.Operation:
+ r"""Sets an instance's scheduling options. You can only call this
+ method on a stopped instance, that is, a VM instance that is in
+ a ``TERMINATED`` state. See Instance Life Cycle for more
+ information on the possible instance states. For more
+ information about setting scheduling options for a VM, see Set
+ VM availability policies.
Args:
- request (Union[google.cloud.compute_v1.types.ListInstancesRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetSchedulingInstanceRequest, dict]):
The request object. A request message for
- Instances.List. See the method description for details.
+ Instances.SetScheduling. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -2070,6 +5623,16 @@ def list(
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ instance (str):
+ Instance name for this request.
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ scheduling_resource (google.cloud.compute_v1.types.Scheduling):
+ The body resource for this request
+ This corresponds to the ``scheduling_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -2077,17 +5640,15 @@ def list(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.instances.pagers.ListPager:
- Contains a list of instances.
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone])
+ has_flattened_params = any([project, zone, instance, scheduling_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -2095,21 +5656,25 @@ def list(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListInstancesRequest.
+ # in a compute.SetSchedulingInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ListInstancesRequest):
- request = compute.ListInstancesRequest(request)
+ if not isinstance(request, compute.SetSchedulingInstanceRequest):
+ request = compute.SetSchedulingInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if zone is not None:
request.zone = zone
+ if instance is not None:
+ request.instance = instance
+ if scheduling_resource is not None:
+ request.scheduling_resource = scheduling_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list]
+ rpc = self._transport._wrapped_methods[self._transport.set_scheduling]
# Send the request.
response = rpc(
@@ -2119,40 +5684,32 @@ def list(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
-
# Done; return the response.
return response
- def list_referrers(
+ def set_scheduling(
self,
- request: Union[compute.ListReferrersInstancesRequest, dict] = None,
+ request: Union[compute.SetSchedulingInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
+ scheduling_resource: compute.Scheduling = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListReferrersPager:
- r"""Retrieves a list of resources that refer to the VM
- instance specified in the request. For example, if the
- VM instance is part of a managed or unmanaged instance
- group, the referrers list includes the instance group.
- For more information, read Viewing referrers to VM
- instances.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets an instance's scheduling options. You can only call this
+ method on a stopped instance, that is, a VM instance that is in
+ a ``TERMINATED`` state. See Instance Life Cycle for more
+ information on the possible instance states. For more
+ information about setting scheduling options for a VM, see Set
+ VM availability policies.
Args:
- request (Union[google.cloud.compute_v1.types.ListReferrersInstancesRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetSchedulingInstanceRequest, dict]):
The request object. A request message for
- Instances.ListReferrers. See the method description for
+ Instances.SetScheduling. See the method description for
details.
project (str):
Project ID for this request.
@@ -2167,14 +5724,15 @@ def list_referrers(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the target instance scoping
- this request, or '-' if the request
- should span over all instances in the
- container.
-
+ Instance name for this request.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ scheduling_resource (google.cloud.compute_v1.types.Scheduling):
+ The body resource for this request
+ This corresponds to the ``scheduling_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -2182,18 +5740,15 @@ def list_referrers(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.instances.pagers.ListReferrersPager:
- Contains a list of instance
- referrers.
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance])
+ has_flattened_params = any([project, zone, instance, scheduling_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -2201,11 +5756,11 @@ def list_referrers(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListReferrersInstancesRequest.
+ # in a compute.SetSchedulingInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ListReferrersInstancesRequest):
- request = compute.ListReferrersInstancesRequest(request)
+ if not isinstance(request, compute.SetSchedulingInstanceRequest):
+ request = compute.SetSchedulingInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -2214,10 +5769,12 @@ def list_referrers(
request.zone = zone
if instance is not None:
request.instance = instance
+ if scheduling_resource is not None:
+ request.scheduling_resource = scheduling_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list_referrers]
+ rpc = self._transport._wrapped_methods[self._transport.set_scheduling]
# Send the request.
response = rpc(
@@ -2227,37 +5784,55 @@ def list_referrers(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListReferrersPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
# Done; return the response.
return response
- def remove_resource_policies_unary(
+ def set_service_account_unary(
self,
- request: Union[compute.RemoveResourcePoliciesInstanceRequest, dict] = None,
+ request: Union[compute.SetServiceAccountInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- instances_remove_resource_policies_request_resource: compute.InstancesRemoveResourcePoliciesRequest = None,
+ instances_set_service_account_request_resource: compute.InstancesSetServiceAccountRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Removes resource policies from an instance.
+ r"""Sets the service account on the instance. For more
+ information, read Changing the service account and
+ access scopes for an instance.
Args:
- request (Union[google.cloud.compute_v1.types.RemoveResourcePoliciesInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetServiceAccountInstanceRequest, dict]):
The request object. A request message for
- Instances.RemoveResourcePolicies. See the method
- description for details.
+ Instances.SetServiceAccount. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -2271,13 +5846,15 @@ def remove_resource_policies_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- The instance name for this request.
+ Name of the instance resource to
+ start.
+
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instances_remove_resource_policies_request_resource (google.cloud.compute_v1.types.InstancesRemoveResourcePoliciesRequest):
+ instances_set_service_account_request_resource (google.cloud.compute_v1.types.InstancesSetServiceAccountRequest):
The body resource for this request
- This corresponds to the ``instances_remove_resource_policies_request_resource`` field
+ This corresponds to the ``instances_set_service_account_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -2287,34 +5864,16 @@ def remove_resource_policies_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
has_flattened_params = any(
- [
- project,
- zone,
- instance,
- instances_remove_resource_policies_request_resource,
- ]
+ [project, zone, instance, instances_set_service_account_request_resource]
)
if request is not None and has_flattened_params:
raise ValueError(
@@ -2323,11 +5882,11 @@ def remove_resource_policies_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.RemoveResourcePoliciesInstanceRequest.
+ # in a compute.SetServiceAccountInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.RemoveResourcePoliciesInstanceRequest):
- request = compute.RemoveResourcePoliciesInstanceRequest(request)
+ if not isinstance(request, compute.SetServiceAccountInstanceRequest):
+ request = compute.SetServiceAccountInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -2336,14 +5895,14 @@ def remove_resource_policies_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if instances_remove_resource_policies_request_resource is not None:
- request.instances_remove_resource_policies_request_resource = (
- instances_remove_resource_policies_request_resource
+ if instances_set_service_account_request_resource is not None:
+ request.instances_set_service_account_request_resource = (
+ instances_set_service_account_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.remove_resource_policies]
+ rpc = self._transport._wrapped_methods[self._transport.set_service_account]
# Send the request.
response = rpc(
@@ -2356,25 +5915,27 @@ def remove_resource_policies_unary(
# Done; return the response.
return response
- def reset_unary(
+ def set_service_account(
self,
- request: Union[compute.ResetInstanceRequest, dict] = None,
+ request: Union[compute.SetServiceAccountInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
+ instances_set_service_account_request_resource: compute.InstancesSetServiceAccountRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Performs a reset on the instance. This is a hard
- reset. The VM does not do a graceful shutdown. For more
- information, see Resetting an instance.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the service account on the instance. For more
+ information, read Changing the service account and
+ access scopes for an instance.
Args:
- request (Union[google.cloud.compute_v1.types.ResetInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetServiceAccountInstanceRequest, dict]):
The request object. A request message for
- Instances.Reset. See the method description for details.
+ Instances.SetServiceAccount. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -2388,12 +5949,17 @@ def reset_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance scoping this
- request.
+ Name of the instance resource to
+ start.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ instances_set_service_account_request_resource (google.cloud.compute_v1.types.InstancesSetServiceAccountRequest):
+ The body resource for this request
+ This corresponds to the ``instances_set_service_account_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -2401,28 +5967,17 @@ def reset_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance])
+ has_flattened_params = any(
+ [project, zone, instance, instances_set_service_account_request_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -2430,11 +5985,11 @@ def reset_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ResetInstanceRequest.
+ # in a compute.SetServiceAccountInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ResetInstanceRequest):
- request = compute.ResetInstanceRequest(request)
+ if not isinstance(request, compute.SetServiceAccountInstanceRequest):
+ request = compute.SetServiceAccountInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -2443,10 +5998,14 @@ def reset_unary(
request.zone = zone
if instance is not None:
request.instance = instance
+ if instances_set_service_account_request_resource is not None:
+ request.instances_set_service_account_request_resource = (
+ instances_set_service_account_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.reset]
+ rpc = self._transport._wrapped_methods[self._transport.set_service_account]
# Send the request.
response = rpc(
@@ -2456,28 +6015,58 @@ def reset_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def resume_unary(
+ def set_shielded_instance_integrity_policy_unary(
self,
- request: Union[compute.ResumeInstanceRequest, dict] = None,
+ request: Union[
+ compute.SetShieldedInstanceIntegrityPolicyInstanceRequest, dict
+ ] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
+ shielded_instance_integrity_policy_resource: compute.ShieldedInstanceIntegrityPolicy = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Resumes an instance that was suspended using the
- instances().suspend method.
+ r"""Sets the Shielded Instance integrity policy for an
+ instance. You can only use this method on a running
+ instance. This method supports PATCH semantics and uses
+ the JSON merge patch format and processing rules.
Args:
- request (Union[google.cloud.compute_v1.types.ResumeInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetShieldedInstanceIntegrityPolicyInstanceRequest, dict]):
The request object. A request message for
- Instances.Resume. See the method description for
- details.
+ Instances.SetShieldedInstanceIntegrityPolicy. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -2491,12 +6080,17 @@ def resume_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance resource to
- resume.
+ Name or id of the instance scoping
+ this request.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ shielded_instance_integrity_policy_resource (google.cloud.compute_v1.types.ShieldedInstanceIntegrityPolicy):
+ The body resource for this request
+ This corresponds to the ``shielded_instance_integrity_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -2504,28 +6098,17 @@ def resume_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance])
+ has_flattened_params = any(
+ [project, zone, instance, shielded_instance_integrity_policy_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -2533,11 +6116,13 @@ def resume_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ResumeInstanceRequest.
+ # in a compute.SetShieldedInstanceIntegrityPolicyInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ResumeInstanceRequest):
- request = compute.ResumeInstanceRequest(request)
+ if not isinstance(
+ request, compute.SetShieldedInstanceIntegrityPolicyInstanceRequest
+ ):
+ request = compute.SetShieldedInstanceIntegrityPolicyInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -2546,10 +6131,16 @@ def resume_unary(
request.zone = zone
if instance is not None:
request.instance = instance
+ if shielded_instance_integrity_policy_resource is not None:
+ request.shielded_instance_integrity_policy_resource = (
+ shielded_instance_integrity_policy_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.resume]
+ rpc = self._transport._wrapped_methods[
+ self._transport.set_shielded_instance_integrity_policy
+ ]
# Send the request.
response = rpc(
@@ -2562,24 +6153,30 @@ def resume_unary(
# Done; return the response.
return response
- def send_diagnostic_interrupt(
+ def set_shielded_instance_integrity_policy(
self,
- request: Union[compute.SendDiagnosticInterruptInstanceRequest, dict] = None,
+ request: Union[
+ compute.SetShieldedInstanceIntegrityPolicyInstanceRequest, dict
+ ] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
+ shielded_instance_integrity_policy_resource: compute.ShieldedInstanceIntegrityPolicy = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.SendDiagnosticInterruptInstanceResponse:
- r"""Sends diagnostic interrupt to the instance.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the Shielded Instance integrity policy for an
+ instance. You can only use this method on a running
+ instance. This method supports PATCH semantics and uses
+ the JSON merge patch format and processing rules.
Args:
- request (Union[google.cloud.compute_v1.types.SendDiagnosticInterruptInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetShieldedInstanceIntegrityPolicyInstanceRequest, dict]):
The request object. A request message for
- Instances.SendDiagnosticInterrupt. See the method
- description for details.
+ Instances.SetShieldedInstanceIntegrityPolicy. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -2593,12 +6190,17 @@ def send_diagnostic_interrupt(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance scoping this
- request.
+ Name or id of the instance scoping
+ this request.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ shielded_instance_integrity_policy_resource (google.cloud.compute_v1.types.ShieldedInstanceIntegrityPolicy):
+ The body resource for this request
+ This corresponds to the ``shielded_instance_integrity_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -2606,16 +6208,17 @@ def send_diagnostic_interrupt(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.SendDiagnosticInterruptInstanceResponse:
- A response message for
- Instances.SendDiagnosticInterrupt. See
- the method description for details.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance])
+ has_flattened_params = any(
+ [project, zone, instance, shielded_instance_integrity_policy_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -2623,11 +6226,13 @@ def send_diagnostic_interrupt(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SendDiagnosticInterruptInstanceRequest.
+ # in a compute.SetShieldedInstanceIntegrityPolicyInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SendDiagnosticInterruptInstanceRequest):
- request = compute.SendDiagnosticInterruptInstanceRequest(request)
+ if not isinstance(
+ request, compute.SetShieldedInstanceIntegrityPolicyInstanceRequest
+ ):
+ request = compute.SetShieldedInstanceIntegrityPolicyInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -2636,11 +6241,15 @@ def send_diagnostic_interrupt(
request.zone = zone
if instance is not None:
request.instance = instance
+ if shielded_instance_integrity_policy_resource is not None:
+ request.shielded_instance_integrity_policy_resource = (
+ shielded_instance_integrity_policy_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
rpc = self._transport._wrapped_methods[
- self._transport.send_diagnostic_interrupt
+ self._transport.set_shielded_instance_integrity_policy
]
# Send the request.
@@ -2651,27 +6260,54 @@ def send_diagnostic_interrupt(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def set_deletion_protection_unary(
+ def set_tags_unary(
self,
- request: Union[compute.SetDeletionProtectionInstanceRequest, dict] = None,
+ request: Union[compute.SetTagsInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
- resource: str = None,
+ instance: str = None,
+ tags_resource: compute.Tags = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Sets deletion protection on the instance.
+ r"""Sets network tags for the specified instance to the
+ data included in the request.
Args:
- request (Union[google.cloud.compute_v1.types.SetDeletionProtectionInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetTagsInstanceRequest, dict]):
The request object. A request message for
- Instances.SetDeletionProtection. See the method
- description for details.
+ Instances.SetTags. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -2684,11 +6320,16 @@ def set_deletion_protection_unary(
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- resource (str):
- Name or id of the resource for this
+ instance (str):
+ Name of the instance scoping this
request.
- This corresponds to the ``resource`` field
+ This corresponds to the ``instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ tags_resource (google.cloud.compute_v1.types.Tags):
+ The body resource for this request
+ This corresponds to the ``tags_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -2698,28 +6339,15 @@ def set_deletion_protection_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, resource])
+ has_flattened_params = any([project, zone, instance, tags_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -2727,23 +6355,25 @@ def set_deletion_protection_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetDeletionProtectionInstanceRequest.
+ # in a compute.SetTagsInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetDeletionProtectionInstanceRequest):
- request = compute.SetDeletionProtectionInstanceRequest(request)
+ if not isinstance(request, compute.SetTagsInstanceRequest):
+ request = compute.SetTagsInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if zone is not None:
request.zone = zone
- if resource is not None:
- request.resource = resource
+ if instance is not None:
+ request.instance = instance
+ if tags_resource is not None:
+ request.tags_resource = tags_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_deletion_protection]
+ rpc = self._transport._wrapped_methods[self._transport.set_tags]
# Send the request.
response = rpc(
@@ -2756,27 +6386,26 @@ def set_deletion_protection_unary(
# Done; return the response.
return response
- def set_disk_auto_delete_unary(
+ def set_tags(
self,
- request: Union[compute.SetDiskAutoDeleteInstanceRequest, dict] = None,
+ request: Union[compute.SetTagsInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- auto_delete: bool = None,
- device_name: str = None,
+ tags_resource: compute.Tags = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Sets the auto-delete flag for a disk attached to an
- instance.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets network tags for the specified instance to the
+ data included in the request.
Args:
- request (Union[google.cloud.compute_v1.types.SetDiskAutoDeleteInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetTagsInstanceRequest, dict]):
The request object. A request message for
- Instances.SetDiskAutoDelete. See the method description
- for details.
+ Instances.SetTags. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -2790,24 +6419,15 @@ def set_disk_auto_delete_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- The instance name for this request.
- This corresponds to the ``instance`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
- auto_delete (bool):
- Whether to auto-delete the disk when
- the instance is deleted.
+ Name of the instance scoping this
+ request.
- This corresponds to the ``auto_delete`` field
+ This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- device_name (str):
- The device name of the disk to
- modify. Make a get() request on the
- instance to view currently attached
- disks and device names.
-
- This corresponds to the ``device_name`` field
+ tags_resource (google.cloud.compute_v1.types.Tags):
+ The body resource for this request
+ This corresponds to the ``tags_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -2817,28 +6437,15 @@ def set_disk_auto_delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance, auto_delete, device_name])
+ has_flattened_params = any([project, zone, instance, tags_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -2846,11 +6453,11 @@ def set_disk_auto_delete_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetDiskAutoDeleteInstanceRequest.
+ # in a compute.SetTagsInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetDiskAutoDeleteInstanceRequest):
- request = compute.SetDiskAutoDeleteInstanceRequest(request)
+ if not isinstance(request, compute.SetTagsInstanceRequest):
+ request = compute.SetTagsInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -2859,14 +6466,12 @@ def set_disk_auto_delete_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if auto_delete is not None:
- request.auto_delete = auto_delete
- if device_name is not None:
- request.device_name = device_name
+ if tags_resource is not None:
+ request.tags_resource = tags_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_disk_auto_delete]
+ rpc = self._transport._wrapped_methods[self._transport.set_tags]
# Send the request.
response = rpc(
@@ -2876,29 +6481,53 @@ def set_disk_auto_delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def set_iam_policy(
+ def simulate_maintenance_event_unary(
self,
- request: Union[compute.SetIamPolicyInstanceRequest, dict] = None,
+ request: Union[compute.SimulateMaintenanceEventInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
- resource: str = None,
- zone_set_policy_request_resource: compute.ZoneSetPolicyRequest = None,
+ instance: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Policy:
- r"""Sets the access control policy on the specified
- resource. Replaces any existing policy.
+ ) -> compute.Operation:
+ r"""Simulates a host maintenance event on a VM. For more
+ information, see Simulate a host maintenance event.
Args:
- request (Union[google.cloud.compute_v1.types.SetIamPolicyInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SimulateMaintenanceEventInstanceRequest, dict]):
The request object. A request message for
- Instances.SetIamPolicy. See the method description for
- details.
+ Instances.SimulateMaintenanceEvent. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -2911,16 +6540,11 @@ def set_iam_policy(
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- resource (str):
- Name or id of the resource for this
- request.
-
- This corresponds to the ``resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
- zone_set_policy_request_resource (google.cloud.compute_v1.types.ZoneSetPolicyRequest):
- The body resource for this request
- This corresponds to the ``zone_set_policy_request_resource`` field
+ instance (str):
+ Name of the instance scoping this
+ request.
+
+ This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -2930,55 +6554,15 @@ def set_iam_policy(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Policy:
- An Identity and Access Management (IAM) policy, which
- specifies access controls for Google Cloud resources. A
- Policy is a collection of bindings. A binding binds one
- or more members, or principals, to a single role.
- Principals can be user accounts, service accounts,
- Google groups, and domains (such as G Suite). A role is
- a named list of permissions; each role can be an IAM
- predefined role or a user-created custom role. For some
- types of Google Cloud resources, a binding can also
- specify a condition, which is a logical expression that
- allows access to a resource only if the expression
- evaluates to true. A condition can add constraints based
- on attributes of the request, the resource, or both. To
- learn which resources support conditions in their IAM
- policies, see the [IAM
- documentation](\ https://cloud.google.com/iam/help/conditions/resource-policies).
- **JSON example:** { "bindings": [ { "role":
- "roles/resourcemanager.organizationAdmin", "members": [
- "user:mike@example.com", "group:admins@example.com",
- "domain:google.com",
- "serviceAccount:my-project-id@appspot.gserviceaccount.com"
- ] }, { "role":
- "roles/resourcemanager.organizationViewer", "members": [
- "user:eve@example.com" ], "condition": { "title":
- "expirable access", "description": "Does not grant
- access after Sep 2020", "expression": "request.time <
- timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
- "BwWWja0YfJA=", "version": 3 } **YAML example:**
- bindings: - members: - user:\ mike@example.com -
- group:\ admins@example.com - domain:google.com -
- serviceAccount:\ my-project-id@appspot.gserviceaccount.com
- role: roles/resourcemanager.organizationAdmin - members:
- - user:\ eve@example.com role:
- roles/resourcemanager.organizationViewer condition:
- title: expirable access description: Does not grant
- access after Sep 2020 expression: request.time <
- timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
- version: 3 For a description of IAM and its features,
- see the [IAM
- documentation](\ https://cloud.google.com/iam/docs/).
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, zone, resource, zone_set_policy_request_resource]
- )
+ has_flattened_params = any([project, zone, instance])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -2986,27 +6570,25 @@ def set_iam_policy(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetIamPolicyInstanceRequest.
+ # in a compute.SimulateMaintenanceEventInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetIamPolicyInstanceRequest):
- request = compute.SetIamPolicyInstanceRequest(request)
+ if not isinstance(request, compute.SimulateMaintenanceEventInstanceRequest):
+ request = compute.SimulateMaintenanceEventInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if zone is not None:
request.zone = zone
- if resource is not None:
- request.resource = resource
- if zone_set_policy_request_resource is not None:
- request.zone_set_policy_request_resource = (
- zone_set_policy_request_resource
- )
+ if instance is not None:
+ request.instance = instance
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_iam_policy]
+ rpc = self._transport._wrapped_methods[
+ self._transport.simulate_maintenance_event
+ ]
# Send the request.
response = rpc(
@@ -3019,26 +6601,25 @@ def set_iam_policy(
# Done; return the response.
return response
- def set_labels_unary(
+ def simulate_maintenance_event(
self,
- request: Union[compute.SetLabelsInstanceRequest, dict] = None,
+ request: Union[compute.SimulateMaintenanceEventInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- instances_set_labels_request_resource: compute.InstancesSetLabelsRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Sets labels on an instance. To learn more about
- labels, read the Labeling Resources documentation.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Simulates a host maintenance event on a VM. For more
+ information, see Simulate a host maintenance event.
Args:
- request (Union[google.cloud.compute_v1.types.SetLabelsInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SimulateMaintenanceEventInstanceRequest, dict]):
The request object. A request message for
- Instances.SetLabels. See the method description for
- details.
+ Instances.SimulateMaintenanceEvent. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -3058,11 +6639,6 @@ def set_labels_unary(
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instances_set_labels_request_resource (google.cloud.compute_v1.types.InstancesSetLabelsRequest):
- The body resource for this request
- This corresponds to the ``instances_set_labels_request_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -3070,30 +6646,15 @@ def set_labels_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, zone, instance, instances_set_labels_request_resource]
- )
+ has_flattened_params = any([project, zone, instance])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -3101,11 +6662,11 @@ def set_labels_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetLabelsInstanceRequest.
+ # in a compute.SimulateMaintenanceEventInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetLabelsInstanceRequest):
- request = compute.SetLabelsInstanceRequest(request)
+ if not isinstance(request, compute.SimulateMaintenanceEventInstanceRequest):
+ request = compute.SimulateMaintenanceEventInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -3114,14 +6675,12 @@ def set_labels_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if instances_set_labels_request_resource is not None:
- request.instances_set_labels_request_resource = (
- instances_set_labels_request_resource
- )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_labels]
+ rpc = self._transport._wrapped_methods[
+ self._transport.simulate_maintenance_event
+ ]
# Send the request.
response = rpc(
@@ -3131,29 +6690,53 @@ def set_labels_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def set_machine_resources_unary(
+ def start_unary(
self,
- request: Union[compute.SetMachineResourcesInstanceRequest, dict] = None,
+ request: Union[compute.StartInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- instances_set_machine_resources_request_resource: compute.InstancesSetMachineResourcesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Changes the number and/or type of accelerator for a
- stopped instance to the values specified in the request.
+ r"""Starts an instance that was stopped using the
+ instances().stop method. For more information, see
+ Restart an instance.
Args:
- request (Union[google.cloud.compute_v1.types.SetMachineResourcesInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.StartInstanceRequest, dict]):
The request object. A request message for
- Instances.SetMachineResources. See the method
- description for details.
+ Instances.Start. See the method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -3167,17 +6750,12 @@ def set_machine_resources_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance scoping this
- request.
+ Name of the instance resource to
+ start.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instances_set_machine_resources_request_resource (google.cloud.compute_v1.types.InstancesSetMachineResourcesRequest):
- The body resource for this request
- This corresponds to the ``instances_set_machine_resources_request_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -3185,30 +6763,15 @@ def set_machine_resources_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, zone, instance, instances_set_machine_resources_request_resource]
- )
+ has_flattened_params = any([project, zone, instance])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -3216,11 +6779,11 @@ def set_machine_resources_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetMachineResourcesInstanceRequest.
+ # in a compute.StartInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetMachineResourcesInstanceRequest):
- request = compute.SetMachineResourcesInstanceRequest(request)
+ if not isinstance(request, compute.StartInstanceRequest):
+ request = compute.StartInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -3229,14 +6792,10 @@ def set_machine_resources_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if instances_set_machine_resources_request_resource is not None:
- request.instances_set_machine_resources_request_resource = (
- instances_set_machine_resources_request_resource
- )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_machine_resources]
+ rpc = self._transport._wrapped_methods[self._transport.start]
# Send the request.
response = rpc(
@@ -3249,26 +6808,25 @@ def set_machine_resources_unary(
# Done; return the response.
return response
- def set_machine_type_unary(
+ def start(
self,
- request: Union[compute.SetMachineTypeInstanceRequest, dict] = None,
+ request: Union[compute.StartInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- instances_set_machine_type_request_resource: compute.InstancesSetMachineTypeRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Changes the machine type for a stopped instance to
- the machine type specified in the request.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Starts an instance that was stopped using the
+ instances().stop method. For more information, see
+ Restart an instance.
Args:
- request (Union[google.cloud.compute_v1.types.SetMachineTypeInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.StartInstanceRequest, dict]):
The request object. A request message for
- Instances.SetMachineType. See the method description for
- details.
+ Instances.Start. See the method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -3282,17 +6840,12 @@ def set_machine_type_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance scoping this
- request.
+ Name of the instance resource to
+ start.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instances_set_machine_type_request_resource (google.cloud.compute_v1.types.InstancesSetMachineTypeRequest):
- The body resource for this request
- This corresponds to the ``instances_set_machine_type_request_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -3300,30 +6853,15 @@ def set_machine_type_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, zone, instance, instances_set_machine_type_request_resource]
- )
+ has_flattened_params = any([project, zone, instance])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -3331,11 +6869,11 @@ def set_machine_type_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetMachineTypeInstanceRequest.
+ # in a compute.StartInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetMachineTypeInstanceRequest):
- request = compute.SetMachineTypeInstanceRequest(request)
+ if not isinstance(request, compute.StartInstanceRequest):
+ request = compute.StartInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -3344,14 +6882,10 @@ def set_machine_type_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if instances_set_machine_type_request_resource is not None:
- request.instances_set_machine_type_request_resource = (
- instances_set_machine_type_request_resource
- )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_machine_type]
+ rpc = self._transport._wrapped_methods[self._transport.start]
# Send the request.
response = rpc(
@@ -3361,29 +6895,55 @@ def set_machine_type_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def set_metadata_unary(
+ def start_with_encryption_key_unary(
self,
- request: Union[compute.SetMetadataInstanceRequest, dict] = None,
+ request: Union[compute.StartWithEncryptionKeyInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- metadata_resource: compute.Metadata = None,
+ instances_start_with_encryption_key_request_resource: compute.InstancesStartWithEncryptionKeyRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Sets metadata for the specified instance to the data
- included in the request.
+ r"""Starts an instance that was stopped using the
+ instances().stop method. For more information, see
+ Restart an instance.
Args:
- request (Union[google.cloud.compute_v1.types.SetMetadataInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.StartWithEncryptionKeyInstanceRequest, dict]):
The request object. A request message for
- Instances.SetMetadata. See the method description for
- details.
+ Instances.StartWithEncryptionKey. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -3397,15 +6957,15 @@ def set_metadata_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance scoping this
- request.
+ Name of the instance resource to
+ start.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- metadata_resource (google.cloud.compute_v1.types.Metadata):
+ instances_start_with_encryption_key_request_resource (google.cloud.compute_v1.types.InstancesStartWithEncryptionKeyRequest):
The body resource for this request
- This corresponds to the ``metadata_resource`` field
+ This corresponds to the ``instances_start_with_encryption_key_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -3415,28 +6975,22 @@ def set_metadata_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance, metadata_resource])
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ instance,
+ instances_start_with_encryption_key_request_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -3444,11 +6998,11 @@ def set_metadata_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetMetadataInstanceRequest.
+ # in a compute.StartWithEncryptionKeyInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetMetadataInstanceRequest):
- request = compute.SetMetadataInstanceRequest(request)
+ if not isinstance(request, compute.StartWithEncryptionKeyInstanceRequest):
+ request = compute.StartWithEncryptionKeyInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -3457,12 +7011,16 @@ def set_metadata_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if metadata_resource is not None:
- request.metadata_resource = metadata_resource
+ if instances_start_with_encryption_key_request_resource is not None:
+ request.instances_start_with_encryption_key_request_resource = (
+ instances_start_with_encryption_key_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_metadata]
+ rpc = self._transport._wrapped_methods[
+ self._transport.start_with_encryption_key
+ ]
# Send the request.
response = rpc(
@@ -3475,28 +7033,27 @@ def set_metadata_unary(
# Done; return the response.
return response
- def set_min_cpu_platform_unary(
+ def start_with_encryption_key(
self,
- request: Union[compute.SetMinCpuPlatformInstanceRequest, dict] = None,
+ request: Union[compute.StartWithEncryptionKeyInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- instances_set_min_cpu_platform_request_resource: compute.InstancesSetMinCpuPlatformRequest = None,
+ instances_start_with_encryption_key_request_resource: compute.InstancesStartWithEncryptionKeyRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
- metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Changes the minimum CPU platform that this instance
- should use. This method can only be called on a stopped
- instance. For more information, read Specifying a
- Minimum CPU Platform.
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Starts an instance that was stopped using the
+ instances().stop method. For more information, see
+ Restart an instance.
Args:
- request (Union[google.cloud.compute_v1.types.SetMinCpuPlatformInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.StartWithEncryptionKeyInstanceRequest, dict]):
The request object. A request message for
- Instances.SetMinCpuPlatform. See the method description
- for details.
+ Instances.StartWithEncryptionKey. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -3510,15 +7067,15 @@ def set_min_cpu_platform_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance scoping this
- request.
+ Name of the instance resource to
+ start.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instances_set_min_cpu_platform_request_resource (google.cloud.compute_v1.types.InstancesSetMinCpuPlatformRequest):
+ instances_start_with_encryption_key_request_resource (google.cloud.compute_v1.types.InstancesStartWithEncryptionKeyRequest):
The body resource for this request
- This corresponds to the ``instances_set_min_cpu_platform_request_resource`` field
+ This corresponds to the ``instances_start_with_encryption_key_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -3528,29 +7085,21 @@ def set_min_cpu_platform_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
has_flattened_params = any(
- [project, zone, instance, instances_set_min_cpu_platform_request_resource]
+ [
+ project,
+ zone,
+ instance,
+ instances_start_with_encryption_key_request_resource,
+ ]
)
if request is not None and has_flattened_params:
raise ValueError(
@@ -3559,11 +7108,11 @@ def set_min_cpu_platform_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetMinCpuPlatformInstanceRequest.
+ # in a compute.StartWithEncryptionKeyInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetMinCpuPlatformInstanceRequest):
- request = compute.SetMinCpuPlatformInstanceRequest(request)
+ if not isinstance(request, compute.StartWithEncryptionKeyInstanceRequest):
+ request = compute.StartWithEncryptionKeyInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -3572,14 +7121,16 @@ def set_min_cpu_platform_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if instances_set_min_cpu_platform_request_resource is not None:
- request.instances_set_min_cpu_platform_request_resource = (
- instances_set_min_cpu_platform_request_resource
+ if instances_start_with_encryption_key_request_resource is not None:
+ request.instances_start_with_encryption_key_request_resource = (
+ instances_start_with_encryption_key_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_min_cpu_platform]
+ rpc = self._transport._wrapped_methods[
+ self._transport.start_with_encryption_key
+ ]
# Send the request.
response = rpc(
@@ -3589,33 +7140,57 @@ def set_min_cpu_platform_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def set_scheduling_unary(
+ def stop_unary(
self,
- request: Union[compute.SetSchedulingInstanceRequest, dict] = None,
+ request: Union[compute.StopInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- scheduling_resource: compute.Scheduling = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Sets an instance's scheduling options. You can only call this
- method on a stopped instance, that is, a VM instance that is in
- a ``TERMINATED`` state. See Instance Life Cycle for more
- information on the possible instance states. For more
- information about setting scheduling options for a VM, see Set
- VM availability policies.
+ r"""Stops a running instance, shutting it down cleanly,
+ and allows you to restart the instance at a later time.
+ Stopped instances do not incur VM usage charges while
+ they are stopped. However, resources that the VM is
+ using, such as persistent disks and static IP addresses,
+ will continue to be charged until they are deleted. For
+ more information, see Stopping an instance.
Args:
- request (Union[google.cloud.compute_v1.types.SetSchedulingInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.StopInstanceRequest, dict]):
The request object. A request message for
- Instances.SetScheduling. See the method description for
- details.
+ Instances.Stop. See the method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -3629,15 +7204,12 @@ def set_scheduling_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Instance name for this request.
+ Name of the instance resource to
+ stop.
+
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- scheduling_resource (google.cloud.compute_v1.types.Scheduling):
- The body resource for this request
- This corresponds to the ``scheduling_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -3645,28 +7217,15 @@ def set_scheduling_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance, scheduling_resource])
+ has_flattened_params = any([project, zone, instance])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -3674,11 +7233,11 @@ def set_scheduling_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetSchedulingInstanceRequest.
+ # in a compute.StopInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetSchedulingInstanceRequest):
- request = compute.SetSchedulingInstanceRequest(request)
+ if not isinstance(request, compute.StopInstanceRequest):
+ request = compute.StopInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -3687,12 +7246,10 @@ def set_scheduling_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if scheduling_resource is not None:
- request.scheduling_resource = scheduling_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_scheduling]
+ rpc = self._transport._wrapped_methods[self._transport.stop]
# Send the request.
response = rpc(
@@ -3705,27 +7262,29 @@ def set_scheduling_unary(
# Done; return the response.
return response
- def set_service_account_unary(
+ def stop(
self,
- request: Union[compute.SetServiceAccountInstanceRequest, dict] = None,
+ request: Union[compute.StopInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- instances_set_service_account_request_resource: compute.InstancesSetServiceAccountRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Sets the service account on the instance. For more
- information, read Changing the service account and
- access scopes for an instance.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Stops a running instance, shutting it down cleanly,
+ and allows you to restart the instance at a later time.
+ Stopped instances do not incur VM usage charges while
+ they are stopped. However, resources that the VM is
+ using, such as persistent disks and static IP addresses,
+ will continue to be charged until they are deleted. For
+ more information, see Stopping an instance.
Args:
- request (Union[google.cloud.compute_v1.types.SetServiceAccountInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.StopInstanceRequest, dict]):
The request object. A request message for
- Instances.SetServiceAccount. See the method description
- for details.
+ Instances.Stop. See the method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -3740,16 +7299,11 @@ def set_service_account_unary(
should not be set.
instance (str):
Name of the instance resource to
- start.
+ stop.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instances_set_service_account_request_resource (google.cloud.compute_v1.types.InstancesSetServiceAccountRequest):
- The body resource for this request
- This corresponds to the ``instances_set_service_account_request_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -3757,30 +7311,15 @@ def set_service_account_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, zone, instance, instances_set_service_account_request_resource]
- )
+ has_flattened_params = any([project, zone, instance])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -3788,11 +7327,11 @@ def set_service_account_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetServiceAccountInstanceRequest.
+ # in a compute.StopInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetServiceAccountInstanceRequest):
- request = compute.SetServiceAccountInstanceRequest(request)
+ if not isinstance(request, compute.StopInstanceRequest):
+ request = compute.StopInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -3801,14 +7340,10 @@ def set_service_account_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if instances_set_service_account_request_resource is not None:
- request.instances_set_service_account_request_resource = (
- instances_set_service_account_request_resource
- )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_service_account]
+ rpc = self._transport._wrapped_methods[self._transport.stop]
# Send the request.
response = rpc(
@@ -3818,33 +7353,60 @@ def set_service_account_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def set_shielded_instance_integrity_policy_unary(
+ def suspend_unary(
self,
- request: Union[
- compute.SetShieldedInstanceIntegrityPolicyInstanceRequest, dict
- ] = None,
+ request: Union[compute.SuspendInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- shielded_instance_integrity_policy_resource: compute.ShieldedInstanceIntegrityPolicy = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Sets the Shielded Instance integrity policy for an
- instance. You can only use this method on a running
- instance. This method supports PATCH semantics and uses
- the JSON merge patch format and processing rules.
+ r"""This method suspends a running instance, saving its
+ state to persistent storage, and allows you to resume
+ the instance at a later time. Suspended instances have
+ no compute costs (cores or RAM), and incur only storage
+ charges for the saved VM memory and localSSD data. Any
+ charged resources the virtual machine was using, such as
+ persistent disks and static IP addresses, will continue
+ to be charged while the instance is suspended. For more
+ information, see Suspending and resuming an instance.
Args:
- request (Union[google.cloud.compute_v1.types.SetShieldedInstanceIntegrityPolicyInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SuspendInstanceRequest, dict]):
The request object. A request message for
- Instances.SetShieldedInstanceIntegrityPolicy. See the
- method description for details.
+ Instances.Suspend. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -3858,17 +7420,12 @@ def set_shielded_instance_integrity_policy_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name or id of the instance scoping
- this request.
+ Name of the instance resource to
+ suspend.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- shielded_instance_integrity_policy_resource (google.cloud.compute_v1.types.ShieldedInstanceIntegrityPolicy):
- The body resource for this request
- This corresponds to the ``shielded_instance_integrity_policy_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -3876,30 +7433,15 @@ def set_shielded_instance_integrity_policy_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, zone, instance, shielded_instance_integrity_policy_resource]
- )
+ has_flattened_params = any([project, zone, instance])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -3907,13 +7449,11 @@ def set_shielded_instance_integrity_policy_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetShieldedInstanceIntegrityPolicyInstanceRequest.
+ # in a compute.SuspendInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(
- request, compute.SetShieldedInstanceIntegrityPolicyInstanceRequest
- ):
- request = compute.SetShieldedInstanceIntegrityPolicyInstanceRequest(request)
+ if not isinstance(request, compute.SuspendInstanceRequest):
+ request = compute.SuspendInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -3922,16 +7462,10 @@ def set_shielded_instance_integrity_policy_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if shielded_instance_integrity_policy_resource is not None:
- request.shielded_instance_integrity_policy_resource = (
- shielded_instance_integrity_policy_resource
- )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[
- self._transport.set_shielded_instance_integrity_policy
- ]
+ rpc = self._transport._wrapped_methods[self._transport.suspend]
# Send the request.
response = rpc(
@@ -3944,25 +7478,31 @@ def set_shielded_instance_integrity_policy_unary(
# Done; return the response.
return response
- def set_tags_unary(
+ def suspend(
self,
- request: Union[compute.SetTagsInstanceRequest, dict] = None,
+ request: Union[compute.SuspendInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- tags_resource: compute.Tags = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Sets network tags for the specified instance to the
- data included in the request.
+ ) -> extended_operation.ExtendedOperation:
+ r"""This method suspends a running instance, saving its
+ state to persistent storage, and allows you to resume
+ the instance at a later time. Suspended instances have
+ no compute costs (cores or RAM), and incur only storage
+ charges for the saved VM memory and localSSD data. Any
+ charged resources the virtual machine was using, such as
+ persistent disks and static IP addresses, will continue
+ to be charged while the instance is suspended. For more
+ information, see Suspending and resuming an instance.
Args:
- request (Union[google.cloud.compute_v1.types.SetTagsInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SuspendInstanceRequest, dict]):
The request object. A request message for
- Instances.SetTags. See the method description for
+ Instances.Suspend. See the method description for
details.
project (str):
Project ID for this request.
@@ -3977,17 +7517,12 @@ def set_tags_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance scoping this
- request.
+ Name of the instance resource to
+ suspend.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- tags_resource (google.cloud.compute_v1.types.Tags):
- The body resource for this request
- This corresponds to the ``tags_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -3995,28 +7530,15 @@ def set_tags_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance, tags_resource])
+ has_flattened_params = any([project, zone, instance])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -4024,11 +7546,11 @@ def set_tags_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetTagsInstanceRequest.
+ # in a compute.SuspendInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetTagsInstanceRequest):
- request = compute.SetTagsInstanceRequest(request)
+ if not isinstance(request, compute.SuspendInstanceRequest):
+ request = compute.SuspendInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -4037,12 +7559,10 @@ def set_tags_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if tags_resource is not None:
- request.tags_resource = tags_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_tags]
+ rpc = self._transport._wrapped_methods[self._transport.suspend]
# Send the request.
response = rpc(
@@ -4052,28 +7572,54 @@ def set_tags_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def simulate_maintenance_event_unary(
+ def test_iam_permissions(
self,
- request: Union[compute.SimulateMaintenanceEventInstanceRequest, dict] = None,
+ request: Union[compute.TestIamPermissionsInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
- instance: str = None,
+ resource: str = None,
+ test_permissions_request_resource: compute.TestPermissionsRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Simulates a host maintenance event on a VM. For more
- information, see Simulate a host maintenance event.
+ ) -> compute.TestPermissionsResponse:
+ r"""Returns permissions that a caller has on the
+ specified resource.
Args:
- request (Union[google.cloud.compute_v1.types.SimulateMaintenanceEventInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.TestIamPermissionsInstanceRequest, dict]):
The request object. A request message for
- Instances.SimulateMaintenanceEvent. See the method
- description for details.
+ Instances.TestIamPermissions. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -4086,11 +7632,16 @@ def simulate_maintenance_event_unary(
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance (str):
- Name of the instance scoping this
+ resource (str):
+ Name or id of the resource for this
request.
- This corresponds to the ``instance`` field
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
+ The body resource for this request
+ This corresponds to the ``test_permissions_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -4100,28 +7651,15 @@ def simulate_maintenance_event_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.cloud.compute_v1.types.TestPermissionsResponse:
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance])
+ has_flattened_params = any(
+ [project, zone, resource, test_permissions_request_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -4129,25 +7667,27 @@ def simulate_maintenance_event_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SimulateMaintenanceEventInstanceRequest.
+ # in a compute.TestIamPermissionsInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SimulateMaintenanceEventInstanceRequest):
- request = compute.SimulateMaintenanceEventInstanceRequest(request)
+ if not isinstance(request, compute.TestIamPermissionsInstanceRequest):
+ request = compute.TestIamPermissionsInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if zone is not None:
request.zone = zone
- if instance is not None:
- request.instance = instance
+ if resource is not None:
+ request.resource = resource
+ if test_permissions_request_resource is not None:
+ request.test_permissions_request_resource = (
+ test_permissions_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[
- self._transport.simulate_maintenance_event
- ]
+ rpc = self._transport._wrapped_methods[self._transport.test_iam_permissions]
# Send the request.
response = rpc(
@@ -4160,25 +7700,28 @@ def simulate_maintenance_event_unary(
# Done; return the response.
return response
- def start_unary(
+ def update_unary(
self,
- request: Union[compute.StartInstanceRequest, dict] = None,
+ request: Union[compute.UpdateInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
+ instance_resource: compute.Instance = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Starts an instance that was stopped using the
- instances().stop method. For more information, see
- Restart an instance.
+ r"""Updates an instance only if the necessary resources
+ are available. This method can update only a specific
+ set of instance properties. See Updating a running
+ instance for a list of updatable instance properties.
Args:
- request (Union[google.cloud.compute_v1.types.StartInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.UpdateInstanceRequest, dict]):
The request object. A request message for
- Instances.Start. See the method description for details.
+ Instances.Update. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -4193,11 +7736,16 @@ def start_unary(
should not be set.
instance (str):
Name of the instance resource to
- start.
+ update.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ instance_resource (google.cloud.compute_v1.types.Instance):
+ The body resource for this request
+ This corresponds to the ``instance_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -4205,28 +7753,15 @@ def start_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance])
+ has_flattened_params = any([project, zone, instance, instance_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -4234,11 +7769,11 @@ def start_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.StartInstanceRequest.
+ # in a compute.UpdateInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.StartInstanceRequest):
- request = compute.StartInstanceRequest(request)
+ if not isinstance(request, compute.UpdateInstanceRequest):
+ request = compute.UpdateInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -4247,10 +7782,12 @@ def start_unary(
request.zone = zone
if instance is not None:
request.instance = instance
+ if instance_resource is not None:
+ request.instance_resource = instance_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.start]
+ rpc = self._transport._wrapped_methods[self._transport.update]
# Send the request.
response = rpc(
@@ -4263,27 +7800,28 @@ def start_unary(
# Done; return the response.
return response
- def start_with_encryption_key_unary(
+ def update(
self,
- request: Union[compute.StartWithEncryptionKeyInstanceRequest, dict] = None,
+ request: Union[compute.UpdateInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- instances_start_with_encryption_key_request_resource: compute.InstancesStartWithEncryptionKeyRequest = None,
+ instance_resource: compute.Instance = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Starts an instance that was stopped using the
- instances().stop method. For more information, see
- Restart an instance.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates an instance only if the necessary resources
+ are available. This method can update only a specific
+ set of instance properties. See Updating a running
+ instance for a list of updatable instance properties.
Args:
- request (Union[google.cloud.compute_v1.types.StartWithEncryptionKeyInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.UpdateInstanceRequest, dict]):
The request object. A request message for
- Instances.StartWithEncryptionKey. See the method
- description for details.
+ Instances.Update. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -4298,14 +7836,14 @@ def start_with_encryption_key_unary(
should not be set.
instance (str):
Name of the instance resource to
- start.
+ update.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instances_start_with_encryption_key_request_resource (google.cloud.compute_v1.types.InstancesStartWithEncryptionKeyRequest):
+ instance_resource (google.cloud.compute_v1.types.Instance):
The body resource for this request
- This corresponds to the ``instances_start_with_encryption_key_request_resource`` field
+ This corresponds to the ``instance_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -4315,35 +7853,15 @@ def start_with_encryption_key_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [
- project,
- zone,
- instance,
- instances_start_with_encryption_key_request_resource,
- ]
- )
+ has_flattened_params = any([project, zone, instance, instance_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -4351,11 +7869,11 @@ def start_with_encryption_key_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.StartWithEncryptionKeyInstanceRequest.
+ # in a compute.UpdateInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.StartWithEncryptionKeyInstanceRequest):
- request = compute.StartWithEncryptionKeyInstanceRequest(request)
+ if not isinstance(request, compute.UpdateInstanceRequest):
+ request = compute.UpdateInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -4364,16 +7882,12 @@ def start_with_encryption_key_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if instances_start_with_encryption_key_request_resource is not None:
- request.instances_start_with_encryption_key_request_resource = (
- instances_start_with_encryption_key_request_resource
- )
+ if instance_resource is not None:
+ request.instance_resource = instance_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[
- self._transport.start_with_encryption_key
- ]
+ rpc = self._transport._wrapped_methods[self._transport.update]
# Send the request.
response = rpc(
@@ -4383,32 +7897,57 @@ def start_with_encryption_key_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def stop_unary(
+ def update_access_config_unary(
self,
- request: Union[compute.StopInstanceRequest, dict] = None,
+ request: Union[compute.UpdateAccessConfigInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
+ network_interface: str = None,
+ access_config_resource: compute.AccessConfig = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Stops a running instance, shutting it down cleanly,
- and allows you to restart the instance at a later time.
- Stopped instances do not incur VM usage charges while
- they are stopped. However, resources that the VM is
- using, such as persistent disks and static IP addresses,
- will continue to be charged until they are deleted. For
- more information, see Stopping an instance.
+ r"""Updates the specified access config from an
+ instance's network interface with the data included in
+ the request. This method supports PATCH semantics and
+ uses the JSON merge patch format and processing rules.
Args:
- request (Union[google.cloud.compute_v1.types.StopInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.UpdateAccessConfigInstanceRequest, dict]):
The request object. A request message for
- Instances.Stop. See the method description for details.
+ Instances.UpdateAccessConfig. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -4422,12 +7961,22 @@ def stop_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance resource to
- stop.
-
+ The instance name for this request.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ network_interface (str):
+ The name of the network interface
+ where the access config is attached.
+
+ This corresponds to the ``network_interface`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ access_config_resource (google.cloud.compute_v1.types.AccessConfig):
+ The body resource for this request
+ This corresponds to the ``access_config_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -4435,28 +7984,17 @@ def stop_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance])
+ has_flattened_params = any(
+ [project, zone, instance, network_interface, access_config_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -4464,11 +8002,11 @@ def stop_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.StopInstanceRequest.
+ # in a compute.UpdateAccessConfigInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.StopInstanceRequest):
- request = compute.StopInstanceRequest(request)
+ if not isinstance(request, compute.UpdateAccessConfigInstanceRequest):
+ request = compute.UpdateAccessConfigInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -4477,10 +8015,14 @@ def stop_unary(
request.zone = zone
if instance is not None:
request.instance = instance
+ if network_interface is not None:
+ request.network_interface = network_interface
+ if access_config_resource is not None:
+ request.access_config_resource = access_config_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.stop]
+ rpc = self._transport._wrapped_methods[self._transport.update_access_config]
# Send the request.
response = rpc(
@@ -4493,32 +8035,29 @@ def stop_unary(
# Done; return the response.
return response
- def suspend_unary(
+ def update_access_config(
self,
- request: Union[compute.SuspendInstanceRequest, dict] = None,
+ request: Union[compute.UpdateAccessConfigInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
+ network_interface: str = None,
+ access_config_resource: compute.AccessConfig = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""This method suspends a running instance, saving its
- state to persistent storage, and allows you to resume
- the instance at a later time. Suspended instances have
- no compute costs (cores or RAM), and incur only storage
- charges for the saved VM memory and localSSD data. Any
- charged resources the virtual machine was using, such as
- persistent disks and static IP addresses, will continue
- to be charged while the instance is suspended. For more
- information, see Suspending and resuming an instance.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified access config from an
+ instance's network interface with the data included in
+ the request. This method supports PATCH semantics and
+ uses the JSON merge patch format and processing rules.
Args:
- request (Union[google.cloud.compute_v1.types.SuspendInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.UpdateAccessConfigInstanceRequest, dict]):
The request object. A request message for
- Instances.Suspend. See the method description for
- details.
+ Instances.UpdateAccessConfig. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -4532,12 +8071,22 @@ def suspend_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance resource to
- suspend.
-
+ The instance name for this request.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ network_interface (str):
+ The name of the network interface
+ where the access config is attached.
+
+ This corresponds to the ``network_interface`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ access_config_resource (google.cloud.compute_v1.types.AccessConfig):
+ The body resource for this request
+ This corresponds to the ``access_config_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -4545,28 +8094,17 @@ def suspend_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance])
+ has_flattened_params = any(
+ [project, zone, instance, network_interface, access_config_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -4574,11 +8112,11 @@ def suspend_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SuspendInstanceRequest.
+ # in a compute.UpdateAccessConfigInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SuspendInstanceRequest):
- request = compute.SuspendInstanceRequest(request)
+ if not isinstance(request, compute.UpdateAccessConfigInstanceRequest):
+ request = compute.UpdateAccessConfigInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -4587,10 +8125,14 @@ def suspend_unary(
request.zone = zone
if instance is not None:
request.instance = instance
+ if network_interface is not None:
+ request.network_interface = network_interface
+ if access_config_resource is not None:
+ request.access_config_resource = access_config_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.suspend]
+ rpc = self._transport._wrapped_methods[self._transport.update_access_config]
# Send the request.
response = rpc(
@@ -4600,29 +8142,56 @@ def suspend_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def test_iam_permissions(
+ def update_display_device_unary(
self,
- request: Union[compute.TestIamPermissionsInstanceRequest, dict] = None,
+ request: Union[compute.UpdateDisplayDeviceInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
- resource: str = None,
- test_permissions_request_resource: compute.TestPermissionsRequest = None,
+ instance: str = None,
+ display_device_resource: compute.DisplayDevice = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.TestPermissionsResponse:
- r"""Returns permissions that a caller has on the
- specified resource.
+ ) -> compute.Operation:
+ r"""Updates the Display config for a VM instance. You can
+ only use this method on a stopped VM instance. This
+ method supports PATCH semantics and uses the JSON merge
+ patch format and processing rules.
Args:
- request (Union[google.cloud.compute_v1.types.TestIamPermissionsInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.UpdateDisplayDeviceInstanceRequest, dict]):
The request object. A request message for
- Instances.TestIamPermissions. See the method description
- for details.
+ Instances.UpdateDisplayDevice. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -4635,16 +8204,16 @@ def test_iam_permissions(
This corresponds to the ``zone`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- resource (str):
- Name or id of the resource for this
+ instance (str):
+ Name of the instance scoping this
request.
- This corresponds to the ``resource`` field
+ This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- test_permissions_request_resource (google.cloud.compute_v1.types.TestPermissionsRequest):
+ display_device_resource (google.cloud.compute_v1.types.DisplayDevice):
The body resource for this request
- This corresponds to the ``test_permissions_request_resource`` field
+ This corresponds to the ``display_device_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -4654,15 +8223,15 @@ def test_iam_permissions(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.TestPermissionsResponse:
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, zone, resource, test_permissions_request_resource]
- )
+ has_flattened_params = any([project, zone, instance, display_device_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -4670,27 +8239,25 @@ def test_iam_permissions(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.TestIamPermissionsInstanceRequest.
+ # in a compute.UpdateDisplayDeviceInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.TestIamPermissionsInstanceRequest):
- request = compute.TestIamPermissionsInstanceRequest(request)
+ if not isinstance(request, compute.UpdateDisplayDeviceInstanceRequest):
+ request = compute.UpdateDisplayDeviceInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if zone is not None:
request.zone = zone
- if resource is not None:
- request.resource = resource
- if test_permissions_request_resource is not None:
- request.test_permissions_request_resource = (
- test_permissions_request_resource
- )
+ if instance is not None:
+ request.instance = instance
+ if display_device_resource is not None:
+ request.display_device_resource = display_device_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.test_iam_permissions]
+ rpc = self._transport._wrapped_methods[self._transport.update_display_device]
# Send the request.
response = rpc(
@@ -4703,28 +8270,28 @@ def test_iam_permissions(
# Done; return the response.
return response
- def update_unary(
+ def update_display_device(
self,
- request: Union[compute.UpdateInstanceRequest, dict] = None,
+ request: Union[compute.UpdateDisplayDeviceInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- instance_resource: compute.Instance = None,
+ display_device_resource: compute.DisplayDevice = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Updates an instance only if the necessary resources
- are available. This method can update only a specific
- set of instance properties. See Updating a running
- instance for a list of updatable instance properties.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the Display config for a VM instance. You can
+ only use this method on a stopped VM instance. This
+ method supports PATCH semantics and uses the JSON merge
+ patch format and processing rules.
Args:
- request (Union[google.cloud.compute_v1.types.UpdateInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.UpdateDisplayDeviceInstanceRequest, dict]):
The request object. A request message for
- Instances.Update. See the method description for
- details.
+ Instances.UpdateDisplayDevice. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -4738,15 +8305,15 @@ def update_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance resource to
- update.
+ Name of the instance scoping this
+ request.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance_resource (google.cloud.compute_v1.types.Instance):
+ display_device_resource (google.cloud.compute_v1.types.DisplayDevice):
The body resource for this request
- This corresponds to the ``instance_resource`` field
+ This corresponds to the ``display_device_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -4756,28 +8323,15 @@ def update_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance, instance_resource])
+ has_flattened_params = any([project, zone, instance, display_device_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -4785,11 +8339,11 @@ def update_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.UpdateInstanceRequest.
+ # in a compute.UpdateDisplayDeviceInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.UpdateInstanceRequest):
- request = compute.UpdateInstanceRequest(request)
+ if not isinstance(request, compute.UpdateDisplayDeviceInstanceRequest):
+ request = compute.UpdateDisplayDeviceInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -4798,12 +8352,12 @@ def update_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if instance_resource is not None:
- request.instance_resource = instance_resource
+ if display_device_resource is not None:
+ request.display_device_resource = display_device_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.update]
+ rpc = self._transport._wrapped_methods[self._transport.update_display_device]
# Send the request.
response = rpc(
@@ -4813,32 +8367,60 @@ def update_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def update_access_config_unary(
+ def update_network_interface_unary(
self,
- request: Union[compute.UpdateAccessConfigInstanceRequest, dict] = None,
+ request: Union[compute.UpdateNetworkInterfaceInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
network_interface: str = None,
- access_config_resource: compute.AccessConfig = None,
+ network_interface_resource: compute.NetworkInterface = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Updates the specified access config from an
- instance's network interface with the data included in
- the request. This method supports PATCH semantics and
- uses the JSON merge patch format and processing rules.
+ r"""Updates an instance's network interface. This method
+ can only update an interface's alias IP range and
+ attached network. See Modifying alias IP ranges for an
+ existing instance for instructions on changing alias IP
+ ranges. See Migrating a VM between networks for
+ instructions on migrating an interface. This method
+ follows PATCH semantics.
Args:
- request (Union[google.cloud.compute_v1.types.UpdateAccessConfigInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.UpdateNetworkInterfaceInstanceRequest, dict]):
The request object. A request message for
- Instances.UpdateAccessConfig. See the method description
- for details.
+ Instances.UpdateNetworkInterface. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -4857,15 +8439,15 @@ def update_access_config_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
network_interface (str):
- The name of the network interface
- where the access config is attached.
+ The name of the network interface to
+ update.
This corresponds to the ``network_interface`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- access_config_resource (google.cloud.compute_v1.types.AccessConfig):
+ network_interface_resource (google.cloud.compute_v1.types.NetworkInterface):
The body resource for this request
- This corresponds to the ``access_config_resource`` field
+ This corresponds to the ``network_interface_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -4875,29 +8457,16 @@ def update_access_config_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
has_flattened_params = any(
- [project, zone, instance, network_interface, access_config_resource]
+ [project, zone, instance, network_interface, network_interface_resource]
)
if request is not None and has_flattened_params:
raise ValueError(
@@ -4906,11 +8475,11 @@ def update_access_config_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.UpdateAccessConfigInstanceRequest.
+ # in a compute.UpdateNetworkInterfaceInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.UpdateAccessConfigInstanceRequest):
- request = compute.UpdateAccessConfigInstanceRequest(request)
+ if not isinstance(request, compute.UpdateNetworkInterfaceInstanceRequest):
+ request = compute.UpdateNetworkInterfaceInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -4921,12 +8490,12 @@ def update_access_config_unary(
request.instance = instance
if network_interface is not None:
request.network_interface = network_interface
- if access_config_resource is not None:
- request.access_config_resource = access_config_resource
+ if network_interface_resource is not None:
+ request.network_interface_resource = network_interface_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.update_access_config]
+ rpc = self._transport._wrapped_methods[self._transport.update_network_interface]
# Send the request.
response = rpc(
@@ -4939,27 +8508,31 @@ def update_access_config_unary(
# Done; return the response.
return response
- def update_display_device_unary(
+ def update_network_interface(
self,
- request: Union[compute.UpdateDisplayDeviceInstanceRequest, dict] = None,
+ request: Union[compute.UpdateNetworkInterfaceInstanceRequest, dict] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- display_device_resource: compute.DisplayDevice = None,
+ network_interface: str = None,
+ network_interface_resource: compute.NetworkInterface = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Updates the Display config for a VM instance. You can
- only use this method on a stopped VM instance. This
- method supports PATCH semantics and uses the JSON merge
- patch format and processing rules.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates an instance's network interface. This method
+ can only update an interface's alias IP range and
+ attached network. See Modifying alias IP ranges for an
+ existing instance for instructions on changing alias IP
+ ranges. See Migrating a VM between networks for
+ instructions on migrating an interface. This method
+ follows PATCH semantics.
Args:
- request (Union[google.cloud.compute_v1.types.UpdateDisplayDeviceInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.UpdateNetworkInterfaceInstanceRequest, dict]):
The request object. A request message for
- Instances.UpdateDisplayDevice. See the method
+ Instances.UpdateNetworkInterface. See the method
description for details.
project (str):
Project ID for this request.
@@ -4974,15 +8547,20 @@ def update_display_device_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- Name of the instance scoping this
- request.
-
+ The instance name for this request.
This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- display_device_resource (google.cloud.compute_v1.types.DisplayDevice):
+ network_interface (str):
+ The name of the network interface to
+ update.
+
+ This corresponds to the ``network_interface`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_interface_resource (google.cloud.compute_v1.types.NetworkInterface):
The body resource for this request
- This corresponds to the ``display_device_resource`` field
+ This corresponds to the ``network_interface_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -4992,28 +8570,17 @@ def update_display_device_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, instance, display_device_resource])
+ has_flattened_params = any(
+ [project, zone, instance, network_interface, network_interface_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -5021,11 +8588,11 @@ def update_display_device_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.UpdateDisplayDeviceInstanceRequest.
+ # in a compute.UpdateNetworkInterfaceInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.UpdateDisplayDeviceInstanceRequest):
- request = compute.UpdateDisplayDeviceInstanceRequest(request)
+ if not isinstance(request, compute.UpdateNetworkInterfaceInstanceRequest):
+ request = compute.UpdateNetworkInterfaceInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -5034,12 +8601,14 @@ def update_display_device_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if display_device_resource is not None:
- request.display_device_resource = display_device_resource
+ if network_interface is not None:
+ request.network_interface = network_interface
+ if network_interface_resource is not None:
+ request.network_interface_resource = network_interface_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.update_display_device]
+ rpc = self._transport._wrapped_methods[self._transport.update_network_interface]
# Send the request.
response = rpc(
@@ -5049,34 +8618,57 @@ def update_display_device_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def update_network_interface_unary(
+ def update_shielded_instance_config_unary(
self,
- request: Union[compute.UpdateNetworkInterfaceInstanceRequest, dict] = None,
+ request: Union[
+ compute.UpdateShieldedInstanceConfigInstanceRequest, dict
+ ] = None,
*,
project: str = None,
zone: str = None,
instance: str = None,
- network_interface: str = None,
- network_interface_resource: compute.NetworkInterface = None,
+ shielded_instance_config_resource: compute.ShieldedInstanceConfig = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Updates an instance's network interface. This method
- can only update an interface's alias IP range and
- attached network. See Modifying alias IP ranges for an
- existing instance for instructions on changing alias IP
- ranges. See Migrating a VM between networks for
- instructions on migrating an interface. This method
- follows PATCH semantics.
+ r"""Updates the Shielded Instance config for an instance.
+ You can only use this method on a stopped instance. This
+ method supports PATCH semantics and uses the JSON merge
+ patch format and processing rules.
Args:
- request (Union[google.cloud.compute_v1.types.UpdateNetworkInterfaceInstanceRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.UpdateShieldedInstanceConfigInstanceRequest, dict]):
The request object. A request message for
- Instances.UpdateNetworkInterface. See the method
+ Instances.UpdateShieldedInstanceConfig. See the method
description for details.
project (str):
Project ID for this request.
@@ -5091,20 +8683,15 @@ def update_network_interface_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance (str):
- The instance name for this request.
- This corresponds to the ``instance`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
- network_interface (str):
- The name of the network interface to
- update.
+ Name or id of the instance scoping
+ this request.
- This corresponds to the ``network_interface`` field
+ This corresponds to the ``instance`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- network_interface_resource (google.cloud.compute_v1.types.NetworkInterface):
+ shielded_instance_config_resource (google.cloud.compute_v1.types.ShieldedInstanceConfig):
The body resource for this request
- This corresponds to the ``network_interface_resource`` field
+ This corresponds to the ``shielded_instance_config_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -5114,29 +8701,16 @@ def update_network_interface_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
has_flattened_params = any(
- [project, zone, instance, network_interface, network_interface_resource]
+ [project, zone, instance, shielded_instance_config_resource]
)
if request is not None and has_flattened_params:
raise ValueError(
@@ -5145,11 +8719,11 @@ def update_network_interface_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.UpdateNetworkInterfaceInstanceRequest.
+ # in a compute.UpdateShieldedInstanceConfigInstanceRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.UpdateNetworkInterfaceInstanceRequest):
- request = compute.UpdateNetworkInterfaceInstanceRequest(request)
+ if not isinstance(request, compute.UpdateShieldedInstanceConfigInstanceRequest):
+ request = compute.UpdateShieldedInstanceConfigInstanceRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -5158,14 +8732,16 @@ def update_network_interface_unary(
request.zone = zone
if instance is not None:
request.instance = instance
- if network_interface is not None:
- request.network_interface = network_interface
- if network_interface_resource is not None:
- request.network_interface_resource = network_interface_resource
+ if shielded_instance_config_resource is not None:
+ request.shielded_instance_config_resource = (
+ shielded_instance_config_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.update_network_interface]
+ rpc = self._transport._wrapped_methods[
+ self._transport.update_shielded_instance_config
+ ]
# Send the request.
response = rpc(
@@ -5178,7 +8754,7 @@ def update_network_interface_unary(
# Done; return the response.
return response
- def update_shielded_instance_config_unary(
+ def update_shielded_instance_config(
self,
request: Union[
compute.UpdateShieldedInstanceConfigInstanceRequest, dict
@@ -5191,7 +8767,7 @@ def update_shielded_instance_config_unary(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
+ ) -> extended_operation.ExtendedOperation:
r"""Updates the Shielded Instance config for an instance.
You can only use this method on a stopped instance. This
method supports PATCH semantics and uses the JSON merge
@@ -5233,22 +8809,9 @@ def update_shielded_instance_config_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -5296,6 +8859,31 @@ def update_shielded_instance_config_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/instances/transports/base.py b/google/cloud/compute_v1/services/instances/transports/base.py
index 276bc5069..0b3b75c30 100644
--- a/google/cloud/compute_v1/services/instances/transports/base.py
+++ b/google/cloud/compute_v1/services/instances/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import zone_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -777,5 +780,21 @@ def update_shielded_instance_config(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _zone_operations_client(self) -> zone_operations.ZoneOperationsClient:
+ ex_op_service = self._extended_operations_services.get("zone_operations")
+ if not ex_op_service:
+ ex_op_service = zone_operations.ZoneOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["zone_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("InstancesTransport",)
diff --git a/google/cloud/compute_v1/services/instances/transports/rest.py b/google/cloud/compute_v1/services/instances/transports/rest.py
index 083df274c..86cb56205 100644
--- a/google/cloud/compute_v1/services/instances/transports/rest.py
+++ b/google/cloud/compute_v1/services/instances/transports/rest.py
@@ -6956,6 +6956,10 @@ def update_shielded_instance_config(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/interconnect_attachments/client.py b/google/cloud/compute_v1/services/interconnect_attachments/client.py
index d384a485c..a5b000c84 100644
--- a/google/cloud/compute_v1/services/interconnect_attachments/client.py
+++ b/google/cloud/compute_v1/services/interconnect_attachments/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.interconnect_attachments import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import InterconnectAttachmentsTransport, DEFAULT_CLIENT_INFO
@@ -528,22 +531,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -586,6 +576,118 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteInterconnectAttachmentRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ interconnect_attachment: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified interconnect attachment.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteInterconnectAttachmentRequest, dict]):
+ The request object. A request message for
+ InterconnectAttachments.Delete. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ interconnect_attachment (str):
+ Name of the interconnect attachment
+ to delete.
+
+ This corresponds to the ``interconnect_attachment`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, interconnect_attachment])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteInterconnectAttachmentRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteInterconnectAttachmentRequest):
+ request = compute.DeleteInterconnectAttachmentRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if interconnect_attachment is not None:
+ request.interconnect_attachment = interconnect_attachment
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetInterconnectAttachmentRequest, dict] = None,
@@ -720,22 +822,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -780,6 +869,119 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertInterconnectAttachmentRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ interconnect_attachment_resource: compute.InterconnectAttachment = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates an InterconnectAttachment in the specified
+ project using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertInterconnectAttachmentRequest, dict]):
+ The request object. A request message for
+ InterconnectAttachments.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ interconnect_attachment_resource (google.cloud.compute_v1.types.InterconnectAttachment):
+ The body resource for this request
+ This corresponds to the ``interconnect_attachment_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, interconnect_attachment_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertInterconnectAttachmentRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertInterconnectAttachmentRequest):
+ request = compute.InsertInterconnectAttachmentRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if interconnect_attachment_resource is not None:
+ request.interconnect_attachment_resource = (
+ interconnect_attachment_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListInterconnectAttachmentsRequest, dict] = None,
@@ -923,22 +1125,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -987,6 +1176,135 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchInterconnectAttachmentRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ interconnect_attachment: str = None,
+ interconnect_attachment_resource: compute.InterconnectAttachment = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified interconnect attachment with
+ the data included in the request. This method supports
+ PATCH semantics and uses the JSON merge patch format and
+ processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchInterconnectAttachmentRequest, dict]):
+ The request object. A request message for
+ InterconnectAttachments.Patch. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ interconnect_attachment (str):
+ Name of the interconnect attachment
+ to patch.
+
+ This corresponds to the ``interconnect_attachment`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ interconnect_attachment_resource (google.cloud.compute_v1.types.InterconnectAttachment):
+ The body resource for this request
+ This corresponds to the ``interconnect_attachment_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, interconnect_attachment, interconnect_attachment_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchInterconnectAttachmentRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchInterconnectAttachmentRequest):
+ request = compute.PatchInterconnectAttachmentRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if interconnect_attachment is not None:
+ request.interconnect_attachment = interconnect_attachment
+ if interconnect_attachment_resource is not None:
+ request.interconnect_attachment_resource = (
+ interconnect_attachment_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/interconnect_attachments/transports/base.py b/google/cloud/compute_v1/services/interconnect_attachments/transports/base.py
index a93486cd4..bd497c3c4 100644
--- a/google/cloud/compute_v1/services/interconnect_attachments/transports/base.py
+++ b/google/cloud/compute_v1/services/interconnect_attachments/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -226,5 +229,21 @@ def patch(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("InterconnectAttachmentsTransport",)
diff --git a/google/cloud/compute_v1/services/interconnect_attachments/transports/rest.py b/google/cloud/compute_v1/services/interconnect_attachments/transports/rest.py
index c79cb66b2..d357adecc 100644
--- a/google/cloud/compute_v1/services/interconnect_attachments/transports/rest.py
+++ b/google/cloud/compute_v1/services/interconnect_attachments/transports/rest.py
@@ -1049,6 +1049,10 @@ def patch(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/interconnect_locations/client.py b/google/cloud/compute_v1/services/interconnect_locations/client.py
index 9390572f5..9246c6c42 100644
--- a/google/cloud/compute_v1/services/interconnect_locations/client.py
+++ b/google/cloud/compute_v1/services/interconnect_locations/client.py
@@ -16,7 +16,7 @@
from collections import OrderedDict
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
diff --git a/google/cloud/compute_v1/services/interconnect_locations/transports/base.py b/google/cloud/compute_v1/services/interconnect_locations/transports/base.py
index 2d1ecba58..cc72fa009 100644
--- a/google/cloud/compute_v1/services/interconnect_locations/transports/base.py
+++ b/google/cloud/compute_v1/services/interconnect_locations/transports/base.py
@@ -84,6 +84,7 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -166,5 +167,9 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
__all__ = ("InterconnectLocationsTransport",)
diff --git a/google/cloud/compute_v1/services/interconnect_locations/transports/rest.py b/google/cloud/compute_v1/services/interconnect_locations/transports/rest.py
index 00ac29ebc..7b19166e0 100644
--- a/google/cloud/compute_v1/services/interconnect_locations/transports/rest.py
+++ b/google/cloud/compute_v1/services/interconnect_locations/transports/rest.py
@@ -450,6 +450,10 @@ def list(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/interconnects/client.py b/google/cloud/compute_v1/services/interconnects/client.py
index e714f1b3e..652fb61b3 100644
--- a/google/cloud/compute_v1/services/interconnects/client.py
+++ b/google/cloud/compute_v1/services/interconnects/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.interconnects import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import InterconnectsTransport, DEFAULT_CLIENT_INFO
@@ -434,22 +437,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -490,6 +480,107 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteInterconnectRequest, dict] = None,
+ *,
+ project: str = None,
+ interconnect: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified interconnect.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteInterconnectRequest, dict]):
+ The request object. A request message for
+ Interconnects.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ interconnect (str):
+ Name of the interconnect to delete.
+ This corresponds to the ``interconnect`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, interconnect])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteInterconnectRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteInterconnectRequest):
+ request = compute.DeleteInterconnectRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if interconnect is not None:
+ request.interconnect = interconnect
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetInterconnectRequest, dict] = None,
@@ -687,22 +778,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -743,6 +821,108 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertInterconnectRequest, dict] = None,
+ *,
+ project: str = None,
+ interconnect_resource: compute.Interconnect = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a Interconnect in the specified project using
+ the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertInterconnectRequest, dict]):
+ The request object. A request message for
+ Interconnects.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ interconnect_resource (google.cloud.compute_v1.types.Interconnect):
+ The body resource for this request
+ This corresponds to the ``interconnect_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, interconnect_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertInterconnectRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertInterconnectRequest):
+ request = compute.InsertInterconnectRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if interconnect_resource is not None:
+ request.interconnect_resource = interconnect_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListInterconnectsRequest, dict] = None,
@@ -868,22 +1048,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -926,6 +1093,118 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchInterconnectRequest, dict] = None,
+ *,
+ project: str = None,
+ interconnect: str = None,
+ interconnect_resource: compute.Interconnect = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified interconnect with the data
+ included in the request. This method supports PATCH
+ semantics and uses the JSON merge patch format and
+ processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchInterconnectRequest, dict]):
+ The request object. A request message for
+ Interconnects.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ interconnect (str):
+ Name of the interconnect to update.
+ This corresponds to the ``interconnect`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ interconnect_resource (google.cloud.compute_v1.types.Interconnect):
+ The body resource for this request
+ This corresponds to the ``interconnect_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, interconnect, interconnect_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchInterconnectRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchInterconnectRequest):
+ request = compute.PatchInterconnectRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if interconnect is not None:
+ request.interconnect = interconnect
+ if interconnect_resource is not None:
+ request.interconnect_resource = interconnect_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/interconnects/transports/base.py b/google/cloud/compute_v1/services/interconnects/transports/base.py
index 116fc1d83..014ee925a 100644
--- a/google/cloud/compute_v1/services/interconnects/transports/base.py
+++ b/google/cloud/compute_v1/services/interconnects/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -221,5 +224,21 @@ def patch(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("InterconnectsTransport",)
diff --git a/google/cloud/compute_v1/services/interconnects/transports/rest.py b/google/cloud/compute_v1/services/interconnects/transports/rest.py
index e645a9287..4329a3a86 100644
--- a/google/cloud/compute_v1/services/interconnects/transports/rest.py
+++ b/google/cloud/compute_v1/services/interconnects/transports/rest.py
@@ -1026,6 +1026,10 @@ def patch(self) -> Callable[[compute.PatchInterconnectRequest], compute.Operatio
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/license_codes/client.py b/google/cloud/compute_v1/services/license_codes/client.py
index 529e7dee0..d40a2de7c 100644
--- a/google/cloud/compute_v1/services/license_codes/client.py
+++ b/google/cloud/compute_v1/services/license_codes/client.py
@@ -16,7 +16,7 @@
from collections import OrderedDict
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
diff --git a/google/cloud/compute_v1/services/license_codes/transports/base.py b/google/cloud/compute_v1/services/license_codes/transports/base.py
index 4549127cc..a4e0bec56 100644
--- a/google/cloud/compute_v1/services/license_codes/transports/base.py
+++ b/google/cloud/compute_v1/services/license_codes/transports/base.py
@@ -84,6 +84,7 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -165,5 +166,9 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
__all__ = ("LicenseCodesTransport",)
diff --git a/google/cloud/compute_v1/services/license_codes/transports/rest.py b/google/cloud/compute_v1/services/license_codes/transports/rest.py
index 253f62f76..8d96df1e9 100644
--- a/google/cloud/compute_v1/services/license_codes/transports/rest.py
+++ b/google/cloud/compute_v1/services/license_codes/transports/rest.py
@@ -446,6 +446,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/licenses/client.py b/google/cloud/compute_v1/services/licenses/client.py
index 5defa8590..4ec5688ee 100644
--- a/google/cloud/compute_v1/services/licenses/client.py
+++ b/google/cloud/compute_v1/services/licenses/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.licenses import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import LicensesTransport, DEFAULT_CLIENT_INFO
@@ -437,22 +440,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -493,6 +483,110 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteLicenseRequest, dict] = None,
+ *,
+ project: str = None,
+ license_: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified license. *Caution* This resource is
+ intended for use only by third-party partners who are creating
+ Cloud Marketplace images.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteLicenseRequest, dict]):
+ The request object. A request message for
+ Licenses.Delete. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ license_ (str):
+ Name of the license resource to
+ delete.
+
+ This corresponds to the ``license_`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, license_])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteLicenseRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteLicenseRequest):
+ request = compute.DeleteLicenseRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if license_ is not None:
+ request.license_ = license_
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetLicenseRequest, dict] = None,
@@ -731,22 +825,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -787,6 +868,108 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertLicenseRequest, dict] = None,
+ *,
+ project: str = None,
+ license_resource: compute.License = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Create a License resource in the specified project. *Caution*
+ This resource is intended for use only by third-party partners
+ who are creating Cloud Marketplace images.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertLicenseRequest, dict]):
+ The request object. A request message for
+ Licenses.Insert. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ license_resource (google.cloud.compute_v1.types.License):
+ The body resource for this request
+ This corresponds to the ``license_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, license_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertLicenseRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertLicenseRequest):
+ request = compute.InsertLicenseRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if license_resource is not None:
+ request.license_resource = license_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListLicensesRequest, dict] = None,
diff --git a/google/cloud/compute_v1/services/licenses/transports/base.py b/google/cloud/compute_v1/services/licenses/transports/base.py
index 7c8345708..09c2984e4 100644
--- a/google/cloud/compute_v1/services/licenses/transports/base.py
+++ b/google/cloud/compute_v1/services/licenses/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -233,5 +236,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("LicensesTransport",)
diff --git a/google/cloud/compute_v1/services/licenses/transports/rest.py b/google/cloud/compute_v1/services/licenses/transports/rest.py
index eedf243dd..59b381a63 100644
--- a/google/cloud/compute_v1/services/licenses/transports/rest.py
+++ b/google/cloud/compute_v1/services/licenses/transports/rest.py
@@ -1213,6 +1213,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/machine_images/client.py b/google/cloud/compute_v1/services/machine_images/client.py
index 0a45d4157..ad9cedc75 100644
--- a/google/cloud/compute_v1/services/machine_images/client.py
+++ b/google/cloud/compute_v1/services/machine_images/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.machine_images import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import MachineImagesTransport, DEFAULT_CLIENT_INFO
@@ -437,22 +440,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -493,6 +483,110 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteMachineImageRequest, dict] = None,
+ *,
+ project: str = None,
+ machine_image: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified machine image. Deleting a
+ machine image is permanent and cannot be undone.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteMachineImageRequest, dict]):
+ The request object. A request message for
+ MachineImages.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ machine_image (str):
+ The name of the machine image to
+ delete.
+
+ This corresponds to the ``machine_image`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, machine_image])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteMachineImageRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteMachineImageRequest):
+ request = compute.DeleteMachineImageRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if machine_image is not None:
+ request.machine_image = machine_image
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetMachineImageRequest, dict] = None,
@@ -734,22 +828,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -790,6 +871,112 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertMachineImageRequest, dict] = None,
+ *,
+ project: str = None,
+ machine_image_resource: compute.MachineImage = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a machine image in the specified project
+ using the data that is included in the request. If you
+ are creating a new machine image to update an existing
+ instance, your new machine image should use the same
+ network or, if applicable, the same subnetwork as the
+ original instance.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertMachineImageRequest, dict]):
+ The request object. A request message for
+ MachineImages.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ machine_image_resource (google.cloud.compute_v1.types.MachineImage):
+ The body resource for this request
+ This corresponds to the ``machine_image_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, machine_image_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertMachineImageRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertMachineImageRequest):
+ request = compute.InsertMachineImageRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if machine_image_resource is not None:
+ request.machine_image_resource = machine_image_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListMachineImagesRequest, dict] = None,
diff --git a/google/cloud/compute_v1/services/machine_images/transports/base.py b/google/cloud/compute_v1/services/machine_images/transports/base.py
index 575f1e77f..39973c130 100644
--- a/google/cloud/compute_v1/services/machine_images/transports/base.py
+++ b/google/cloud/compute_v1/services/machine_images/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -234,5 +237,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("MachineImagesTransport",)
diff --git a/google/cloud/compute_v1/services/machine_images/transports/rest.py b/google/cloud/compute_v1/services/machine_images/transports/rest.py
index b0f73bfad..4698f055b 100644
--- a/google/cloud/compute_v1/services/machine_images/transports/rest.py
+++ b/google/cloud/compute_v1/services/machine_images/transports/rest.py
@@ -1237,6 +1237,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/machine_types/client.py b/google/cloud/compute_v1/services/machine_types/client.py
index 5bfc729b1..a4d11b248 100644
--- a/google/cloud/compute_v1/services/machine_types/client.py
+++ b/google/cloud/compute_v1/services/machine_types/client.py
@@ -16,7 +16,7 @@
from collections import OrderedDict
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
diff --git a/google/cloud/compute_v1/services/machine_types/transports/base.py b/google/cloud/compute_v1/services/machine_types/transports/base.py
index 350a43f69..08ac22eb0 100644
--- a/google/cloud/compute_v1/services/machine_types/transports/base.py
+++ b/google/cloud/compute_v1/services/machine_types/transports/base.py
@@ -84,6 +84,7 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -180,5 +181,9 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
__all__ = ("MachineTypesTransport",)
diff --git a/google/cloud/compute_v1/services/machine_types/transports/rest.py b/google/cloud/compute_v1/services/machine_types/transports/rest.py
index 10ce6e55d..ada93cd2e 100644
--- a/google/cloud/compute_v1/services/machine_types/transports/rest.py
+++ b/google/cloud/compute_v1/services/machine_types/transports/rest.py
@@ -563,6 +563,10 @@ def list(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/network_edge_security_services/client.py b/google/cloud/compute_v1/services/network_edge_security_services/client.py
index 92c6d3f25..cd5329b0d 100644
--- a/google/cloud/compute_v1/services/network_edge_security_services/client.py
+++ b/google/cloud/compute_v1/services/network_edge_security_services/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.network_edge_security_services import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import NetworkEdgeSecurityServicesTransport, DEFAULT_CLIENT_INFO
@@ -534,22 +537,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -592,6 +582,120 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteNetworkEdgeSecurityServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ network_edge_security_service: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified service.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteNetworkEdgeSecurityServiceRequest, dict]):
+ The request object. A request message for
+ NetworkEdgeSecurityServices.Delete. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_edge_security_service (str):
+ Name of the network edge security
+ service to delete.
+
+ This corresponds to the ``network_edge_security_service`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, network_edge_security_service])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteNetworkEdgeSecurityServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteNetworkEdgeSecurityServiceRequest):
+ request = compute.DeleteNetworkEdgeSecurityServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if network_edge_security_service is not None:
+ request.network_edge_security_service = network_edge_security_service
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetNetworkEdgeSecurityServiceRequest, dict] = None,
@@ -724,22 +828,101 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, network_edge_security_service_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertNetworkEdgeSecurityServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertNetworkEdgeSecurityServiceRequest):
+ request = compute.InsertNetworkEdgeSecurityServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if network_edge_security_service_resource is not None:
+ request.network_edge_security_service_resource = (
+ network_edge_security_service_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertNetworkEdgeSecurityServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ network_edge_security_service_resource: compute.NetworkEdgeSecurityService = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a new service in the specified project using
+ the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertNetworkEdgeSecurityServiceRequest, dict]):
+ The request object. A request message for
+ NetworkEdgeSecurityServices.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_edge_security_service_resource (google.cloud.compute_v1.types.NetworkEdgeSecurityService):
+ The body resource for this request
+ This corresponds to the ``network_edge_security_service_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -783,6 +966,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -837,22 +1045,116 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ network_edge_security_service,
+ network_edge_security_service_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchNetworkEdgeSecurityServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchNetworkEdgeSecurityServiceRequest):
+ request = compute.PatchNetworkEdgeSecurityServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if network_edge_security_service is not None:
+ request.network_edge_security_service = network_edge_security_service
+ if network_edge_security_service_resource is not None:
+ request.network_edge_security_service_resource = (
+ network_edge_security_service_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch(
+ self,
+ request: Union[compute.PatchNetworkEdgeSecurityServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ network_edge_security_service: str = None,
+ network_edge_security_service_resource: compute.NetworkEdgeSecurityService = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified policy with the data included
+ in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchNetworkEdgeSecurityServiceRequest, dict]):
+ The request object. A request message for
+ NetworkEdgeSecurityServices.Patch. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_edge_security_service (str):
+ Name of the network edge security
+ service to update.
+
+ This corresponds to the ``network_edge_security_service`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_edge_security_service_resource (google.cloud.compute_v1.types.NetworkEdgeSecurityService):
+ The body resource for this request
+ This corresponds to the ``network_edge_security_service_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -903,6 +1205,31 @@ def patch_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/network_edge_security_services/transports/base.py b/google/cloud/compute_v1/services/network_edge_security_services/transports/base.py
index e4f1f6cbd..2ab5a47a3 100644
--- a/google/cloud/compute_v1/services/network_edge_security_services/transports/base.py
+++ b/google/cloud/compute_v1/services/network_edge_security_services/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -210,5 +213,21 @@ def patch(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("NetworkEdgeSecurityServicesTransport",)
diff --git a/google/cloud/compute_v1/services/network_edge_security_services/transports/rest.py b/google/cloud/compute_v1/services/network_edge_security_services/transports/rest.py
index 8e3892f94..7f79bfcd6 100644
--- a/google/cloud/compute_v1/services/network_edge_security_services/transports/rest.py
+++ b/google/cloud/compute_v1/services/network_edge_security_services/transports/rest.py
@@ -919,6 +919,10 @@ def patch(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/network_endpoint_groups/client.py b/google/cloud/compute_v1/services/network_endpoint_groups/client.py
index de607c012..ae1d7f9fd 100644
--- a/google/cloud/compute_v1/services/network_endpoint_groups/client.py
+++ b/google/cloud/compute_v1/services/network_endpoint_groups/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.network_endpoint_groups import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import NetworkEndpointGroupsTransport, DEFAULT_CLIENT_INFO
@@ -538,22 +541,9 @@ def attach_network_endpoints_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -609,6 +599,145 @@ def attach_network_endpoints_unary(
# Done; return the response.
return response
+ def attach_network_endpoints(
+ self,
+ request: Union[
+ compute.AttachNetworkEndpointsNetworkEndpointGroupRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ network_endpoint_group: str = None,
+ network_endpoint_groups_attach_endpoints_request_resource: compute.NetworkEndpointGroupsAttachEndpointsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Attach a list of network endpoints to the specified
+ network endpoint group.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.AttachNetworkEndpointsNetworkEndpointGroupRequest, dict]):
+ The request object. A request message for
+ NetworkEndpointGroups.AttachNetworkEndpoints. See the
+ method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ network endpoint group is located. It
+ should comply with RFC1035.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_endpoint_group (str):
+ The name of the network endpoint
+ group where you are attaching network
+ endpoints to. It should comply with
+ RFC1035.
+
+ This corresponds to the ``network_endpoint_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_endpoint_groups_attach_endpoints_request_resource (google.cloud.compute_v1.types.NetworkEndpointGroupsAttachEndpointsRequest):
+ The body resource for this request
+ This corresponds to the ``network_endpoint_groups_attach_endpoints_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ network_endpoint_group,
+ network_endpoint_groups_attach_endpoints_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.AttachNetworkEndpointsNetworkEndpointGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.AttachNetworkEndpointsNetworkEndpointGroupRequest
+ ):
+ request = compute.AttachNetworkEndpointsNetworkEndpointGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if network_endpoint_group is not None:
+ request.network_endpoint_group = network_endpoint_group
+ if network_endpoint_groups_attach_endpoints_request_resource is not None:
+ request.network_endpoint_groups_attach_endpoints_request_resource = (
+ network_endpoint_groups_attach_endpoints_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.attach_network_endpoints]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def delete_unary(
self,
request: Union[compute.DeleteNetworkEndpointGroupRequest, dict] = None,
@@ -659,22 +788,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -717,6 +833,126 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteNetworkEndpointGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ network_endpoint_group: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified network endpoint group. The
+ network endpoints in the NEG and the VM instances they
+ belong to are not terminated when the NEG is deleted.
+ Note that the NEG cannot be deleted if there are backend
+ services referencing it.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteNetworkEndpointGroupRequest, dict]):
+ The request object. A request message for
+ NetworkEndpointGroups.Delete. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ network endpoint group is located. It
+ should comply with RFC1035.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_endpoint_group (str):
+ The name of the network endpoint
+ group to delete. It should comply with
+ RFC1035.
+
+ This corresponds to the ``network_endpoint_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, network_endpoint_group])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteNetworkEndpointGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteNetworkEndpointGroupRequest):
+ request = compute.DeleteNetworkEndpointGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if network_endpoint_group is not None:
+ request.network_endpoint_group = network_endpoint_group
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def detach_network_endpoints_unary(
self,
request: Union[
@@ -773,22 +1009,9 @@ def detach_network_endpoints_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -844,6 +1067,145 @@ def detach_network_endpoints_unary(
# Done; return the response.
return response
+ def detach_network_endpoints(
+ self,
+ request: Union[
+ compute.DetachNetworkEndpointsNetworkEndpointGroupRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ network_endpoint_group: str = None,
+ network_endpoint_groups_detach_endpoints_request_resource: compute.NetworkEndpointGroupsDetachEndpointsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Detach a list of network endpoints from the specified
+ network endpoint group.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DetachNetworkEndpointsNetworkEndpointGroupRequest, dict]):
+ The request object. A request message for
+ NetworkEndpointGroups.DetachNetworkEndpoints. See the
+ method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where the
+ network endpoint group is located. It
+ should comply with RFC1035.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_endpoint_group (str):
+ The name of the network endpoint
+ group where you are removing network
+ endpoints. It should comply with
+ RFC1035.
+
+ This corresponds to the ``network_endpoint_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_endpoint_groups_detach_endpoints_request_resource (google.cloud.compute_v1.types.NetworkEndpointGroupsDetachEndpointsRequest):
+ The body resource for this request
+ This corresponds to the ``network_endpoint_groups_detach_endpoints_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ zone,
+ network_endpoint_group,
+ network_endpoint_groups_detach_endpoints_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DetachNetworkEndpointsNetworkEndpointGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.DetachNetworkEndpointsNetworkEndpointGroupRequest
+ ):
+ request = compute.DetachNetworkEndpointsNetworkEndpointGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if network_endpoint_group is not None:
+ request.network_endpoint_group = network_endpoint_group
+ if network_endpoint_groups_detach_endpoints_request_resource is not None:
+ request.network_endpoint_groups_detach_endpoints_request_resource = (
+ network_endpoint_groups_detach_endpoints_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.detach_network_endpoints]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetNetworkEndpointGroupRequest, dict] = None,
@@ -990,22 +1352,101 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, network_endpoint_group_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertNetworkEndpointGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertNetworkEndpointGroupRequest):
+ request = compute.InsertNetworkEndpointGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if network_endpoint_group_resource is not None:
+ request.network_endpoint_group_resource = (
+ network_endpoint_group_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertNetworkEndpointGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ network_endpoint_group_resource: compute.NetworkEndpointGroup = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a network endpoint group in the specified
+ project using the parameters that are included in the
+ request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertNetworkEndpointGroupRequest, dict]):
+ The request object. A request message for
+ NetworkEndpointGroups.Insert. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone where you want
+ to create the network endpoint group. It
+ should comply with RFC1035.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_endpoint_group_resource (google.cloud.compute_v1.types.NetworkEndpointGroup):
+ The body resource for this request
+ This corresponds to the ``network_endpoint_group_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1047,6 +1488,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/network_endpoint_groups/transports/base.py b/google/cloud/compute_v1/services/network_endpoint_groups/transports/base.py
index 4159b7958..e46e01941 100644
--- a/google/cloud/compute_v1/services/network_endpoint_groups/transports/base.py
+++ b/google/cloud/compute_v1/services/network_endpoint_groups/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import zone_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -271,5 +274,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _zone_operations_client(self) -> zone_operations.ZoneOperationsClient:
+ ex_op_service = self._extended_operations_services.get("zone_operations")
+ if not ex_op_service:
+ ex_op_service = zone_operations.ZoneOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["zone_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("NetworkEndpointGroupsTransport",)
diff --git a/google/cloud/compute_v1/services/network_endpoint_groups/transports/rest.py b/google/cloud/compute_v1/services/network_endpoint_groups/transports/rest.py
index b7628b98c..8882c48fb 100644
--- a/google/cloud/compute_v1/services/network_endpoint_groups/transports/rest.py
+++ b/google/cloud/compute_v1/services/network_endpoint_groups/transports/rest.py
@@ -1538,6 +1538,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/network_firewall_policies/client.py b/google/cloud/compute_v1/services/network_firewall_policies/client.py
index ef9e587eb..672b24e7e 100644
--- a/google/cloud/compute_v1/services/network_firewall_policies/client.py
+++ b/google/cloud/compute_v1/services/network_firewall_policies/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.network_firewall_policies import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import NetworkFirewallPoliciesTransport, DEFAULT_CLIENT_INFO
@@ -445,22 +448,9 @@ def add_association_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -507,23 +497,24 @@ def add_association_unary(
# Done; return the response.
return response
- def add_rule_unary(
+ def add_association(
self,
- request: Union[compute.AddRuleNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[compute.AddAssociationNetworkFirewallPolicyRequest, dict] = None,
*,
project: str = None,
firewall_policy: str = None,
- firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
+ firewall_policy_association_resource: compute.FirewallPolicyAssociation = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Inserts a rule into a firewall policy.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Inserts an association for the specified firewall
+ policy.
Args:
- request (Union[google.cloud.compute_v1.types.AddRuleNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.AddAssociationNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- NetworkFirewallPolicies.AddRule. See the method
+ NetworkFirewallPolicies.AddAssociation. See the method
description for details.
project (str):
Project ID for this request.
@@ -537,9 +528,9 @@ def add_rule_unary(
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
+ firewall_policy_association_resource (google.cloud.compute_v1.types.FirewallPolicyAssociation):
The body resource for this request
- This corresponds to the ``firewall_policy_rule_resource`` field
+ This corresponds to the ``firewall_policy_association_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -549,29 +540,16 @@ def add_rule_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
has_flattened_params = any(
- [project, firewall_policy, firewall_policy_rule_resource]
+ [project, firewall_policy, firewall_policy_association_resource]
)
if request is not None and has_flattened_params:
raise ValueError(
@@ -580,23 +558,25 @@ def add_rule_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.AddRuleNetworkFirewallPolicyRequest.
+ # in a compute.AddAssociationNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.AddRuleNetworkFirewallPolicyRequest):
- request = compute.AddRuleNetworkFirewallPolicyRequest(request)
+ if not isinstance(request, compute.AddAssociationNetworkFirewallPolicyRequest):
+ request = compute.AddAssociationNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if firewall_policy is not None:
request.firewall_policy = firewall_policy
- if firewall_policy_rule_resource is not None:
- request.firewall_policy_rule_resource = firewall_policy_rule_resource
+ if firewall_policy_association_resource is not None:
+ request.firewall_policy_association_resource = (
+ firewall_policy_association_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.add_rule]
+ rpc = self._transport._wrapped_methods[self._transport.add_association]
# Send the request.
response = rpc(
@@ -606,25 +586,50 @@ def add_rule_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def clone_rules_unary(
+ def add_rule_unary(
self,
- request: Union[compute.CloneRulesNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[compute.AddRuleNetworkFirewallPolicyRequest, dict] = None,
*,
project: str = None,
firewall_policy: str = None,
+ firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Copies rules to the specified firewall policy.
+ r"""Inserts a rule into a firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.CloneRulesNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.AddRuleNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- NetworkFirewallPolicies.CloneRules. See the method
+ NetworkFirewallPolicies.AddRule. See the method
description for details.
project (str):
Project ID for this request.
@@ -638,6 +643,11 @@ def clone_rules_unary(
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -645,28 +655,17 @@ def clone_rules_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, firewall_policy])
+ has_flattened_params = any(
+ [project, firewall_policy, firewall_policy_rule_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -674,21 +673,23 @@ def clone_rules_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.CloneRulesNetworkFirewallPolicyRequest.
+ # in a compute.AddRuleNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.CloneRulesNetworkFirewallPolicyRequest):
- request = compute.CloneRulesNetworkFirewallPolicyRequest(request)
+ if not isinstance(request, compute.AddRuleNetworkFirewallPolicyRequest):
+ request = compute.AddRuleNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if firewall_policy is not None:
request.firewall_policy = firewall_policy
+ if firewall_policy_rule_resource is not None:
+ request.firewall_policy_rule_resource = firewall_policy_rule_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.clone_rules]
+ rpc = self._transport._wrapped_methods[self._transport.add_rule]
# Send the request.
response = rpc(
@@ -701,22 +702,23 @@ def clone_rules_unary(
# Done; return the response.
return response
- def delete_unary(
+ def add_rule(
self,
- request: Union[compute.DeleteNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[compute.AddRuleNetworkFirewallPolicyRequest, dict] = None,
*,
project: str = None,
firewall_policy: str = None,
+ firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Deletes the specified policy.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Inserts a rule into a firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.DeleteNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.AddRuleNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- NetworkFirewallPolicies.Delete. See the method
+ NetworkFirewallPolicies.AddRule. See the method
description for details.
project (str):
Project ID for this request.
@@ -725,11 +727,16 @@ def delete_unary(
should not be set.
firewall_policy (str):
Name of the firewall policy to
- delete.
+ update.
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -737,28 +744,17 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, firewall_policy])
+ has_flattened_params = any(
+ [project, firewall_policy, firewall_policy_rule_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -766,21 +762,23 @@ def delete_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.DeleteNetworkFirewallPolicyRequest.
+ # in a compute.AddRuleNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.DeleteNetworkFirewallPolicyRequest):
- request = compute.DeleteNetworkFirewallPolicyRequest(request)
+ if not isinstance(request, compute.AddRuleNetworkFirewallPolicyRequest):
+ request = compute.AddRuleNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if firewall_policy is not None:
request.firewall_policy = firewall_policy
+ if firewall_policy_rule_resource is not None:
+ request.firewall_policy_rule_resource = firewall_policy_rule_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.delete]
+ rpc = self._transport._wrapped_methods[self._transport.add_rule]
# Send the request.
response = rpc(
@@ -790,33 +788,59 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def get(
+ def clone_rules_unary(
self,
- request: Union[compute.GetNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[compute.CloneRulesNetworkFirewallPolicyRequest, dict] = None,
*,
project: str = None,
firewall_policy: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.FirewallPolicy:
- r"""Returns the specified network firewall policy.
+ ) -> compute.Operation:
+ r"""Copies rules to the specified firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.GetNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.CloneRulesNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- NetworkFirewallPolicies.Get. See the method description
- for details.
+ NetworkFirewallPolicies.CloneRules. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
firewall_policy (str):
- Name of the firewall policy to get.
+ Name of the firewall policy to
+ update.
+
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
@@ -827,9 +851,9 @@ def get(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.FirewallPolicy:
- Represents a Firewall Policy
- resource.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -843,11 +867,11 @@ def get(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetNetworkFirewallPolicyRequest.
+ # in a compute.CloneRulesNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetNetworkFirewallPolicyRequest):
- request = compute.GetNetworkFirewallPolicyRequest(request)
+ if not isinstance(request, compute.CloneRulesNetworkFirewallPolicyRequest):
+ request = compute.CloneRulesNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -857,7 +881,7 @@ def get(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get]
+ rpc = self._transport._wrapped_methods[self._transport.clone_rules]
# Send the request.
response = rpc(
@@ -870,22 +894,22 @@ def get(
# Done; return the response.
return response
- def get_association(
+ def clone_rules(
self,
- request: Union[compute.GetAssociationNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[compute.CloneRulesNetworkFirewallPolicyRequest, dict] = None,
*,
project: str = None,
firewall_policy: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.FirewallPolicyAssociation:
- r"""Gets an association with the specified name.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Copies rules to the specified firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.GetAssociationNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.CloneRulesNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- NetworkFirewallPolicies.GetAssociation. See the method
+ NetworkFirewallPolicies.CloneRules. See the method
description for details.
project (str):
Project ID for this request.
@@ -893,8 +917,8 @@ def get_association(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
firewall_policy (str):
- Name of the firewall policy to which
- the queried association belongs.
+ Name of the firewall policy to
+ update.
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
@@ -906,7 +930,9 @@ def get_association(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.FirewallPolicyAssociation:
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -920,11 +946,11 @@ def get_association(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetAssociationNetworkFirewallPolicyRequest.
+ # in a compute.CloneRulesNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetAssociationNetworkFirewallPolicyRequest):
- request = compute.GetAssociationNetworkFirewallPolicyRequest(request)
+ if not isinstance(request, compute.CloneRulesNetworkFirewallPolicyRequest):
+ request = compute.CloneRulesNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -934,7 +960,7 @@ def get_association(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_association]
+ rpc = self._transport._wrapped_methods[self._transport.clone_rules]
# Send the request.
response = rpc(
@@ -944,37 +970,60 @@ def get_association(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def get_iam_policy(
+ def delete_unary(
self,
- request: Union[compute.GetIamPolicyNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[compute.DeleteNetworkFirewallPolicyRequest, dict] = None,
*,
project: str = None,
- resource: str = None,
+ firewall_policy: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Policy:
- r"""Gets the access control policy for a resource. May be
- empty if no such policy or resource exists.
+ ) -> compute.Operation:
+ r"""Deletes the specified policy.
Args:
- request (Union[google.cloud.compute_v1.types.GetIamPolicyNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- NetworkFirewallPolicies.GetIamPolicy. See the method
+ NetworkFirewallPolicies.Delete. See the method
description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- resource (str):
- Name or id of the resource for this
- request.
+ firewall_policy (str):
+ Name of the firewall policy to
+ delete.
- This corresponds to the ``resource`` field
+ This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -984,53 +1033,15 @@ def get_iam_policy(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Policy:
- An Identity and Access Management (IAM) policy, which
- specifies access controls for Google Cloud resources. A
- Policy is a collection of bindings. A binding binds one
- or more members, or principals, to a single role.
- Principals can be user accounts, service accounts,
- Google groups, and domains (such as G Suite). A role is
- a named list of permissions; each role can be an IAM
- predefined role or a user-created custom role. For some
- types of Google Cloud resources, a binding can also
- specify a condition, which is a logical expression that
- allows access to a resource only if the expression
- evaluates to true. A condition can add constraints based
- on attributes of the request, the resource, or both. To
- learn which resources support conditions in their IAM
- policies, see the [IAM
- documentation](\ https://cloud.google.com/iam/help/conditions/resource-policies).
- **JSON example:** { "bindings": [ { "role":
- "roles/resourcemanager.organizationAdmin", "members": [
- "user:mike@example.com", "group:admins@example.com",
- "domain:google.com",
- "serviceAccount:my-project-id@appspot.gserviceaccount.com"
- ] }, { "role":
- "roles/resourcemanager.organizationViewer", "members": [
- "user:eve@example.com" ], "condition": { "title":
- "expirable access", "description": "Does not grant
- access after Sep 2020", "expression": "request.time <
- timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
- "BwWWja0YfJA=", "version": 3 } **YAML example:**
- bindings: - members: - user:\ mike@example.com -
- group:\ admins@example.com - domain:google.com -
- serviceAccount:\ my-project-id@appspot.gserviceaccount.com
- role: roles/resourcemanager.organizationAdmin - members:
- - user:\ eve@example.com role:
- roles/resourcemanager.organizationViewer condition:
- title: expirable access description: Does not grant
- access after Sep 2020 expression: request.time <
- timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
- version: 3 For a description of IAM and its features,
- see the [IAM
- documentation](\ https://cloud.google.com/iam/docs/).
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, resource])
+ has_flattened_params = any([project, firewall_policy])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1038,21 +1049,825 @@ def get_iam_policy(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetIamPolicyNetworkFirewallPolicyRequest.
+ # in a compute.DeleteNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetIamPolicyNetworkFirewallPolicyRequest):
- request = compute.GetIamPolicyNetworkFirewallPolicyRequest(request)
+ if not isinstance(request, compute.DeleteNetworkFirewallPolicyRequest):
+ request = compute.DeleteNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
- if resource is not None:
- request.resource = resource
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def delete(
+ self,
+ request: Union[compute.DeleteNetworkFirewallPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ firewall_policy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified policy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ NetworkFirewallPolicies.Delete. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy (str):
+ Name of the firewall policy to
+ delete.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, firewall_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteNetworkFirewallPolicyRequest):
+ request = compute.DeleteNetworkFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def get(
+ self,
+ request: Union[compute.GetNetworkFirewallPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ firewall_policy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.FirewallPolicy:
+ r"""Returns the specified network firewall policy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ NetworkFirewallPolicies.Get. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy (str):
+ Name of the firewall policy to get.
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.FirewallPolicy:
+ Represents a Firewall Policy
+ resource.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, firewall_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetNetworkFirewallPolicyRequest):
+ request = compute.GetNetworkFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_association(
+ self,
+ request: Union[compute.GetAssociationNetworkFirewallPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ firewall_policy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.FirewallPolicyAssociation:
+ r"""Gets an association with the specified name.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetAssociationNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ NetworkFirewallPolicies.GetAssociation. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy (str):
+ Name of the firewall policy to which
+ the queried association belongs.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.FirewallPolicyAssociation:
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, firewall_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetAssociationNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetAssociationNetworkFirewallPolicyRequest):
+ request = compute.GetAssociationNetworkFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_association]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_iam_policy(
+ self,
+ request: Union[compute.GetIamPolicyNetworkFirewallPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ resource: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Policy:
+ r"""Gets the access control policy for a resource. May be
+ empty if no such policy or resource exists.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetIamPolicyNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ NetworkFirewallPolicies.GetIamPolicy. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.Policy:
+ An Identity and Access Management (IAM) policy, which
+ specifies access controls for Google Cloud resources. A
+ Policy is a collection of bindings. A binding binds one
+ or more members, or principals, to a single role.
+ Principals can be user accounts, service accounts,
+ Google groups, and domains (such as G Suite). A role is
+ a named list of permissions; each role can be an IAM
+ predefined role or a user-created custom role. For some
+ types of Google Cloud resources, a binding can also
+ specify a condition, which is a logical expression that
+ allows access to a resource only if the expression
+ evaluates to true. A condition can add constraints based
+ on attributes of the request, the resource, or both. To
+ learn which resources support conditions in their IAM
+ policies, see the [IAM
+ documentation](\ https://cloud.google.com/iam/help/conditions/resource-policies).
+ **JSON example:** { "bindings": [ { "role":
+ "roles/resourcemanager.organizationAdmin", "members": [
+ "user:mike@example.com", "group:admins@example.com",
+ "domain:google.com",
+ "serviceAccount:my-project-id@appspot.gserviceaccount.com"
+ ] }, { "role":
+ "roles/resourcemanager.organizationViewer", "members": [
+ "user:eve@example.com" ], "condition": { "title":
+ "expirable access", "description": "Does not grant
+ access after Sep 2020", "expression": "request.time <
+ timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
+ "BwWWja0YfJA=", "version": 3 } **YAML example:**
+ bindings: - members: - user:\ mike@example.com -
+ group:\ admins@example.com - domain:google.com -
+ serviceAccount:\ my-project-id@appspot.gserviceaccount.com
+ role: roles/resourcemanager.organizationAdmin - members:
+ - user:\ eve@example.com role:
+ roles/resourcemanager.organizationViewer condition:
+ title: expirable access description: Does not grant
+ access after Sep 2020 expression: request.time <
+ timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
+ version: 3 For a description of IAM and its features,
+ see the [IAM
+ documentation](\ https://cloud.google.com/iam/docs/).
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetIamPolicyNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetIamPolicyNetworkFirewallPolicyRequest):
+ request = compute.GetIamPolicyNetworkFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if resource is not None:
+ request.resource = resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_iam_policy]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_rule(
+ self,
+ request: Union[compute.GetRuleNetworkFirewallPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ firewall_policy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.FirewallPolicyRule:
+ r"""Gets a rule of the specified priority.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetRuleNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ NetworkFirewallPolicies.GetRule. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy (str):
+ Name of the firewall policy to which
+ the queried rule belongs.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.FirewallPolicyRule:
+ Represents a rule that describes one
+ or more match conditions along with the
+ action to be taken when traffic matches
+ this condition (allow or deny).
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, firewall_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetRuleNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetRuleNetworkFirewallPolicyRequest):
+ request = compute.GetRuleNetworkFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_rule]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert_unary(
+ self,
+ request: Union[compute.InsertNetworkFirewallPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ firewall_policy_resource: compute.FirewallPolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Creates a new policy in the specified project using
+ the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ NetworkFirewallPolicies.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, firewall_policy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertNetworkFirewallPolicyRequest):
+ request = compute.InsertNetworkFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if firewall_policy_resource is not None:
+ request.firewall_policy_resource = firewall_policy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertNetworkFirewallPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ firewall_policy_resource: compute.FirewallPolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a new policy in the specified project using
+ the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ NetworkFirewallPolicies.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, firewall_policy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertNetworkFirewallPolicyRequest):
+ request = compute.InsertNetworkFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if firewall_policy_resource is not None:
+ request.firewall_policy_resource = firewall_policy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def list(
+ self,
+ request: Union[compute.ListNetworkFirewallPoliciesRequest, dict] = None,
+ *,
+ project: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListPager:
+ r"""Lists all the policies that have been configured for
+ the specified project.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListNetworkFirewallPoliciesRequest, dict]):
+ The request object. A request message for
+ NetworkFirewallPolicies.List. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.network_firewall_policies.pagers.ListPager:
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListNetworkFirewallPoliciesRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ListNetworkFirewallPoliciesRequest):
+ request = compute.ListNetworkFirewallPoliciesRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch_unary(
+ self,
+ request: Union[compute.PatchNetworkFirewallPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ firewall_policy: str = None,
+ firewall_policy_resource: compute.FirewallPolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Patches the specified policy with the data included
+ in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ NetworkFirewallPolicies.Patch. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy (str):
+ Name of the firewall policy to
+ update.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, firewall_policy, firewall_policy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchNetworkFirewallPolicyRequest):
+ request = compute.PatchNetworkFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+ if firewall_policy_resource is not None:
+ request.firewall_policy_resource = firewall_policy_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_iam_policy]
+ rpc = self._transport._wrapped_methods[self._transport.patch]
# Send the request.
response = rpc(
@@ -1065,22 +1880,24 @@ def get_iam_policy(
# Done; return the response.
return response
- def get_rule(
+ def patch(
self,
- request: Union[compute.GetRuleNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[compute.PatchNetworkFirewallPolicyRequest, dict] = None,
*,
project: str = None,
firewall_policy: str = None,
+ firewall_policy_resource: compute.FirewallPolicy = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.FirewallPolicyRule:
- r"""Gets a rule of the specified priority.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified policy with the data included
+ in the request.
Args:
- request (Union[google.cloud.compute_v1.types.GetRuleNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.PatchNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- NetworkFirewallPolicies.GetRule. See the method
+ NetworkFirewallPolicies.Patch. See the method
description for details.
project (str):
Project ID for this request.
@@ -1088,12 +1905,17 @@ def get_rule(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
firewall_policy (str):
- Name of the firewall policy to which
- the queried rule belongs.
+ Name of the firewall policy to
+ update.
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1101,17 +1923,15 @@ def get_rule(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.FirewallPolicyRule:
- Represents a rule that describes one
- or more match conditions along with the
- action to be taken when traffic matches
- this condition (allow or deny).
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, firewall_policy])
+ has_flattened_params = any([project, firewall_policy, firewall_policy_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1119,21 +1939,23 @@ def get_rule(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetRuleNetworkFirewallPolicyRequest.
+ # in a compute.PatchNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetRuleNetworkFirewallPolicyRequest):
- request = compute.GetRuleNetworkFirewallPolicyRequest(request)
+ if not isinstance(request, compute.PatchNetworkFirewallPolicyRequest):
+ request = compute.PatchNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if firewall_policy is not None:
request.firewall_policy = firewall_policy
+ if firewall_policy_resource is not None:
+ request.firewall_policy_resource = firewall_policy_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_rule]
+ rpc = self._transport._wrapped_methods[self._transport.patch]
# Send the request.
response = rpc(
@@ -1143,35 +1965,66 @@ def get_rule(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def insert_unary(
+ def patch_rule_unary(
self,
- request: Union[compute.InsertNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[compute.PatchRuleNetworkFirewallPolicyRequest, dict] = None,
*,
project: str = None,
- firewall_policy_resource: compute.FirewallPolicy = None,
+ firewall_policy: str = None,
+ firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Creates a new policy in the specified project using
- the data included in the request.
+ r"""Patches a rule of the specified priority.
Args:
- request (Union[google.cloud.compute_v1.types.InsertNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.PatchRuleNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- NetworkFirewallPolicies.Insert. See the method
+ NetworkFirewallPolicies.PatchRule. See the method
description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
+ firewall_policy (str):
+ Name of the firewall policy to
+ update.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
The body resource for this request
- This corresponds to the ``firewall_policy_resource`` field
+ This corresponds to the ``firewall_policy_rule_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1181,28 +2034,17 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, firewall_policy_resource])
+ has_flattened_params = any(
+ [project, firewall_policy, firewall_policy_rule_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1210,21 +2052,23 @@ def insert_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.InsertNetworkFirewallPolicyRequest.
+ # in a compute.PatchRuleNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.InsertNetworkFirewallPolicyRequest):
- request = compute.InsertNetworkFirewallPolicyRequest(request)
+ if not isinstance(request, compute.PatchRuleNetworkFirewallPolicyRequest):
+ request = compute.PatchRuleNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
- if firewall_policy_resource is not None:
- request.firewall_policy_resource = firewall_policy_resource
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+ if firewall_policy_rule_resource is not None:
+ request.firewall_policy_rule_resource = firewall_policy_rule_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.insert]
+ rpc = self._transport._wrapped_methods[self._transport.patch_rule]
# Send the request.
response = rpc(
@@ -1237,28 +2081,41 @@ def insert_unary(
# Done; return the response.
return response
- def list(
+ def patch_rule(
self,
- request: Union[compute.ListNetworkFirewallPoliciesRequest, dict] = None,
+ request: Union[compute.PatchRuleNetworkFirewallPolicyRequest, dict] = None,
*,
project: str = None,
+ firewall_policy: str = None,
+ firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListPager:
- r"""Lists all the policies that have been configured for
- the specified project.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches a rule of the specified priority.
Args:
- request (Union[google.cloud.compute_v1.types.ListNetworkFirewallPoliciesRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.PatchRuleNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- NetworkFirewallPolicies.List. See the method description
- for details.
+ NetworkFirewallPolicies.PatchRule. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ firewall_policy (str):
+ Name of the firewall policy to
+ update.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1266,16 +2123,17 @@ def list(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.network_firewall_policies.pagers.ListPager:
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project])
+ has_flattened_params = any(
+ [project, firewall_policy, firewall_policy_rule_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1283,19 +2141,23 @@ def list(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListNetworkFirewallPoliciesRequest.
+ # in a compute.PatchRuleNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ListNetworkFirewallPoliciesRequest):
- request = compute.ListNetworkFirewallPoliciesRequest(request)
+ if not isinstance(request, compute.PatchRuleNetworkFirewallPolicyRequest):
+ request = compute.PatchRuleNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+ if firewall_policy_rule_resource is not None:
+ request.firewall_policy_rule_resource = firewall_policy_rule_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list]
+ rpc = self._transport._wrapped_methods[self._transport.patch_rule]
# Send the request.
response = rpc(
@@ -1305,37 +2167,53 @@ def list(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
# Done; return the response.
return response
- def patch_unary(
+ def remove_association_unary(
self,
- request: Union[compute.PatchNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[
+ compute.RemoveAssociationNetworkFirewallPolicyRequest, dict
+ ] = None,
*,
project: str = None,
firewall_policy: str = None,
- firewall_policy_resource: compute.FirewallPolicy = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Patches the specified policy with the data included
- in the request.
+ r"""Removes an association for the specified firewall
+ policy.
Args:
- request (Union[google.cloud.compute_v1.types.PatchNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.RemoveAssociationNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- NetworkFirewallPolicies.Patch. See the method
- description for details.
+ NetworkFirewallPolicies.RemoveAssociation. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1348,11 +2226,6 @@ def patch_unary(
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
- The body resource for this request
- This corresponds to the ``firewall_policy_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1360,28 +2233,15 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, firewall_policy, firewall_policy_resource])
+ has_flattened_params = any([project, firewall_policy])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1389,23 +2249,23 @@ def patch_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.PatchNetworkFirewallPolicyRequest.
+ # in a compute.RemoveAssociationNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.PatchNetworkFirewallPolicyRequest):
- request = compute.PatchNetworkFirewallPolicyRequest(request)
+ if not isinstance(
+ request, compute.RemoveAssociationNetworkFirewallPolicyRequest
+ ):
+ request = compute.RemoveAssociationNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if firewall_policy is not None:
request.firewall_policy = firewall_policy
- if firewall_policy_resource is not None:
- request.firewall_policy_resource = firewall_policy_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.patch]
+ rpc = self._transport._wrapped_methods[self._transport.remove_association]
# Send the request.
response = rpc(
@@ -1418,24 +2278,26 @@ def patch_unary(
# Done; return the response.
return response
- def patch_rule_unary(
+ def remove_association(
self,
- request: Union[compute.PatchRuleNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[
+ compute.RemoveAssociationNetworkFirewallPolicyRequest, dict
+ ] = None,
*,
project: str = None,
firewall_policy: str = None,
- firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Patches a rule of the specified priority.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Removes an association for the specified firewall
+ policy.
Args:
- request (Union[google.cloud.compute_v1.types.PatchRuleNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.RemoveAssociationNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- NetworkFirewallPolicies.PatchRule. See the method
- description for details.
+ NetworkFirewallPolicies.RemoveAssociation. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1448,11 +2310,6 @@ def patch_rule_unary(
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
- The body resource for this request
- This corresponds to the ``firewall_policy_rule_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1460,30 +2317,15 @@ def patch_rule_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, firewall_policy, firewall_policy_rule_resource]
- )
+ has_flattened_params = any([project, firewall_policy])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1491,23 +2333,23 @@ def patch_rule_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.PatchRuleNetworkFirewallPolicyRequest.
+ # in a compute.RemoveAssociationNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.PatchRuleNetworkFirewallPolicyRequest):
- request = compute.PatchRuleNetworkFirewallPolicyRequest(request)
+ if not isinstance(
+ request, compute.RemoveAssociationNetworkFirewallPolicyRequest
+ ):
+ request = compute.RemoveAssociationNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if firewall_policy is not None:
request.firewall_policy = firewall_policy
- if firewall_policy_rule_resource is not None:
- request.firewall_policy_rule_resource = firewall_policy_rule_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.patch_rule]
+ rpc = self._transport._wrapped_methods[self._transport.remove_association]
# Send the request.
response = rpc(
@@ -1517,14 +2359,36 @@ def patch_rule_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def remove_association_unary(
+ def remove_rule_unary(
self,
- request: Union[
- compute.RemoveAssociationNetworkFirewallPolicyRequest, dict
- ] = None,
+ request: Union[compute.RemoveRuleNetworkFirewallPolicyRequest, dict] = None,
*,
project: str = None,
firewall_policy: str = None,
@@ -1532,14 +2396,13 @@ def remove_association_unary(
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Removes an association for the specified firewall
- policy.
+ r"""Deletes a rule of the specified priority.
Args:
- request (Union[google.cloud.compute_v1.types.RemoveAssociationNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.RemoveRuleNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- NetworkFirewallPolicies.RemoveAssociation. See the
- method description for details.
+ NetworkFirewallPolicies.RemoveRule. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1559,22 +2422,9 @@ def remove_association_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1588,13 +2438,11 @@ def remove_association_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.RemoveAssociationNetworkFirewallPolicyRequest.
+ # in a compute.RemoveRuleNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(
- request, compute.RemoveAssociationNetworkFirewallPolicyRequest
- ):
- request = compute.RemoveAssociationNetworkFirewallPolicyRequest(request)
+ if not isinstance(request, compute.RemoveRuleNetworkFirewallPolicyRequest):
+ request = compute.RemoveRuleNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1604,7 +2452,7 @@ def remove_association_unary(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.remove_association]
+ rpc = self._transport._wrapped_methods[self._transport.remove_rule]
# Send the request.
response = rpc(
@@ -1617,7 +2465,7 @@ def remove_association_unary(
# Done; return the response.
return response
- def remove_rule_unary(
+ def remove_rule(
self,
request: Union[compute.RemoveRuleNetworkFirewallPolicyRequest, dict] = None,
*,
@@ -1626,7 +2474,7 @@ def remove_rule_unary(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
+ ) -> extended_operation.ExtendedOperation:
r"""Deletes a rule of the specified priority.
Args:
@@ -1653,22 +2501,9 @@ def remove_rule_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1706,6 +2541,30 @@ def remove_rule_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/network_firewall_policies/transports/base.py b/google/cloud/compute_v1/services/network_firewall_policies/transports/base.py
index 9d3df658e..c7ba0809c 100644
--- a/google/cloud/compute_v1/services/network_firewall_policies/transports/base.py
+++ b/google/cloud/compute_v1/services/network_firewall_policies/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -363,5 +366,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("NetworkFirewallPoliciesTransport",)
diff --git a/google/cloud/compute_v1/services/network_firewall_policies/transports/rest.py b/google/cloud/compute_v1/services/network_firewall_policies/transports/rest.py
index 90b9e38c2..b7d5f1f8f 100644
--- a/google/cloud/compute_v1/services/network_firewall_policies/transports/rest.py
+++ b/google/cloud/compute_v1/services/network_firewall_policies/transports/rest.py
@@ -2612,6 +2612,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/networks/client.py b/google/cloud/compute_v1/services/networks/client.py
index ed388e8a3..8bfce7f9a 100644
--- a/google/cloud/compute_v1/services/networks/client.py
+++ b/google/cloud/compute_v1/services/networks/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.networks import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import NetworksTransport, DEFAULT_CLIENT_INFO
@@ -442,22 +445,9 @@ def add_peering_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -504,6 +494,121 @@ def add_peering_unary(
# Done; return the response.
return response
+ def add_peering(
+ self,
+ request: Union[compute.AddPeeringNetworkRequest, dict] = None,
+ *,
+ project: str = None,
+ network: str = None,
+ networks_add_peering_request_resource: compute.NetworksAddPeeringRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Adds a peering to the specified network.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.AddPeeringNetworkRequest, dict]):
+ The request object. A request message for
+ Networks.AddPeering. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network (str):
+ Name of the network resource to add
+ peering to.
+
+ This corresponds to the ``network`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ networks_add_peering_request_resource (google.cloud.compute_v1.types.NetworksAddPeeringRequest):
+ The body resource for this request
+ This corresponds to the ``networks_add_peering_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, network, networks_add_peering_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.AddPeeringNetworkRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.AddPeeringNetworkRequest):
+ request = compute.AddPeeringNetworkRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if network is not None:
+ request.network = network
+ if networks_add_peering_request_resource is not None:
+ request.networks_add_peering_request_resource = (
+ networks_add_peering_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.add_peering]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def delete_unary(
self,
request: Union[compute.DeleteNetworkRequest, dict] = None,
@@ -537,22 +642,85 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, network])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteNetworkRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteNetworkRequest):
+ request = compute.DeleteNetworkRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if network is not None:
+ request.network = network
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def delete(
+ self,
+ request: Union[compute.DeleteNetworkRequest, dict] = None,
+ *,
+ project: str = None,
+ network: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified network.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteNetworkRequest, dict]):
+ The request object. A request message for
+ Networks.Delete. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network (str):
+ Name of the network to delete.
+ This corresponds to the ``network`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -590,6 +758,30 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -782,22 +974,86 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, network_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertNetworkRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertNetworkRequest):
+ request = compute.InsertNetworkRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if network_resource is not None:
+ request.network_resource = network_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertNetworkRequest, dict] = None,
+ *,
+ project: str = None,
+ network_resource: compute.Network = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a network in the specified project using the
+ data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertNetworkRequest, dict]):
+ The request object. A request message for
+ Networks.Insert. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_resource (google.cloud.compute_v1.types.Network):
+ The body resource for this request
+ This corresponds to the ``network_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -835,6 +1091,30 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -1047,22 +1327,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1105,21 +1372,131 @@ def patch_unary(
# Done; return the response.
return response
- def remove_peering_unary(
+ def patch(
self,
- request: Union[compute.RemovePeeringNetworkRequest, dict] = None,
+ request: Union[compute.PatchNetworkRequest, dict] = None,
*,
project: str = None,
network: str = None,
- networks_remove_peering_request_resource: compute.NetworksRemovePeeringRequest = None,
+ network_resource: compute.Network = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Removes a peering from the specified network.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified network with the data included
+ in the request. Only the following fields can be
+ modified: routingConfig.routingMode.
Args:
- request (Union[google.cloud.compute_v1.types.RemovePeeringNetworkRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.PatchNetworkRequest, dict]):
+ The request object. A request message for
+ Networks.Patch. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network (str):
+ Name of the network to update.
+ This corresponds to the ``network`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_resource (google.cloud.compute_v1.types.Network):
+ The body resource for this request
+ This corresponds to the ``network_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, network, network_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchNetworkRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchNetworkRequest):
+ request = compute.PatchNetworkRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if network is not None:
+ request.network = network
+ if network_resource is not None:
+ request.network_resource = network_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def remove_peering_unary(
+ self,
+ request: Union[compute.RemovePeeringNetworkRequest, dict] = None,
+ *,
+ project: str = None,
+ network: str = None,
+ networks_remove_peering_request_resource: compute.NetworksRemovePeeringRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Removes a peering from the specified network.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.RemovePeeringNetworkRequest, dict]):
The request object. A request message for
Networks.RemovePeering. See the method description for
details.
@@ -1147,22 +1524,9 @@ def remove_peering_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1209,6 +1573,121 @@ def remove_peering_unary(
# Done; return the response.
return response
+ def remove_peering(
+ self,
+ request: Union[compute.RemovePeeringNetworkRequest, dict] = None,
+ *,
+ project: str = None,
+ network: str = None,
+ networks_remove_peering_request_resource: compute.NetworksRemovePeeringRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Removes a peering from the specified network.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.RemovePeeringNetworkRequest, dict]):
+ The request object. A request message for
+ Networks.RemovePeering. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network (str):
+ Name of the network resource to
+ remove peering from.
+
+ This corresponds to the ``network`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ networks_remove_peering_request_resource (google.cloud.compute_v1.types.NetworksRemovePeeringRequest):
+ The body resource for this request
+ This corresponds to the ``networks_remove_peering_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, network, networks_remove_peering_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.RemovePeeringNetworkRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.RemovePeeringNetworkRequest):
+ request = compute.RemovePeeringNetworkRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if network is not None:
+ request.network = network
+ if networks_remove_peering_request_resource is not None:
+ request.networks_remove_peering_request_resource = (
+ networks_remove_peering_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.remove_peering]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def switch_to_custom_mode_unary(
self,
request: Union[compute.SwitchToCustomModeNetworkRequest, dict] = None,
@@ -1244,22 +1723,87 @@ def switch_to_custom_mode_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, network])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SwitchToCustomModeNetworkRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SwitchToCustomModeNetworkRequest):
+ request = compute.SwitchToCustomModeNetworkRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if network is not None:
+ request.network = network
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.switch_to_custom_mode]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def switch_to_custom_mode(
+ self,
+ request: Union[compute.SwitchToCustomModeNetworkRequest, dict] = None,
+ *,
+ project: str = None,
+ network: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Switches the network mode from auto subnet mode to
+ custom subnet mode.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SwitchToCustomModeNetworkRequest, dict]):
+ The request object. A request message for
+ Networks.SwitchToCustomMode. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network (str):
+ Name of the network to be updated.
+ This corresponds to the ``network`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1297,6 +1841,30 @@ def switch_to_custom_mode_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -1345,22 +1913,103 @@ def update_peering_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, network, networks_update_peering_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.UpdatePeeringNetworkRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.UpdatePeeringNetworkRequest):
+ request = compute.UpdatePeeringNetworkRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if network is not None:
+ request.network = network
+ if networks_update_peering_request_resource is not None:
+ request.networks_update_peering_request_resource = (
+ networks_update_peering_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.update_peering]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def update_peering(
+ self,
+ request: Union[compute.UpdatePeeringNetworkRequest, dict] = None,
+ *,
+ project: str = None,
+ network: str = None,
+ networks_update_peering_request_resource: compute.NetworksUpdatePeeringRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified network peering with the data included in
+ the request. You can only modify the
+ NetworkPeering.export_custom_routes field and the
+ NetworkPeering.import_custom_routes field.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.UpdatePeeringNetworkRequest, dict]):
+ The request object. A request message for
+ Networks.UpdatePeering. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network (str):
+ Name of the network resource which
+ the updated peering is belonging to.
+
+ This corresponds to the ``network`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ networks_update_peering_request_resource (google.cloud.compute_v1.types.NetworksUpdatePeeringRequest):
+ The body resource for this request
+ This corresponds to the ``networks_update_peering_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1404,6 +2053,30 @@ def update_peering_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/networks/transports/base.py b/google/cloud/compute_v1/services/networks/transports/base.py
index 9152fa6f2..72ca901f5 100644
--- a/google/cloud/compute_v1/services/networks/transports/base.py
+++ b/google/cloud/compute_v1/services/networks/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -293,5 +296,21 @@ def update_peering(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("NetworksTransport",)
diff --git a/google/cloud/compute_v1/services/networks/transports/rest.py b/google/cloud/compute_v1/services/networks/transports/rest.py
index d61e82cf9..85da7adef 100644
--- a/google/cloud/compute_v1/services/networks/transports/rest.py
+++ b/google/cloud/compute_v1/services/networks/transports/rest.py
@@ -1744,6 +1744,10 @@ def update_peering(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/node_groups/client.py b/google/cloud/compute_v1/services/node_groups/client.py
index 41aa068bd..634cefce6 100644
--- a/google/cloud/compute_v1/services/node_groups/client.py
+++ b/google/cloud/compute_v1/services/node_groups/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.node_groups import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import NodeGroupsTransport, DEFAULT_CLIENT_INFO
@@ -448,22 +451,9 @@ def add_nodes_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -512,6 +502,130 @@ def add_nodes_unary(
# Done; return the response.
return response
+ def add_nodes(
+ self,
+ request: Union[compute.AddNodesNodeGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ node_group: str = None,
+ node_groups_add_nodes_request_resource: compute.NodeGroupsAddNodesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Adds specified number of nodes to the node group.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.AddNodesNodeGroupRequest, dict]):
+ The request object. A request message for
+ NodeGroups.AddNodes. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ node_group (str):
+ Name of the NodeGroup resource.
+ This corresponds to the ``node_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ node_groups_add_nodes_request_resource (google.cloud.compute_v1.types.NodeGroupsAddNodesRequest):
+ The body resource for this request
+ This corresponds to the ``node_groups_add_nodes_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, node_group, node_groups_add_nodes_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.AddNodesNodeGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.AddNodesNodeGroupRequest):
+ request = compute.AddNodesNodeGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if node_group is not None:
+ request.node_group = node_group
+ if node_groups_add_nodes_request_resource is not None:
+ request.node_groups_add_nodes_request_resource = (
+ node_groups_add_nodes_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.add_nodes]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def aggregated_list(
self,
request: Union[compute.AggregatedListNodeGroupsRequest, dict] = None,
@@ -637,22 +751,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -695,6 +796,120 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteNodeGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ node_group: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified NodeGroup resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteNodeGroupRequest, dict]):
+ The request object. A request message for
+ NodeGroups.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ node_group (str):
+ Name of the NodeGroup resource to
+ delete.
+
+ This corresponds to the ``node_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, node_group])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteNodeGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteNodeGroupRequest):
+ request = compute.DeleteNodeGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if node_group is not None:
+ request.node_group = node_group
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def delete_nodes_unary(
self,
request: Union[compute.DeleteNodesNodeGroupRequest, dict] = None,
@@ -745,22 +960,110 @@ def delete_nodes_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, node_group, node_groups_delete_nodes_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteNodesNodeGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteNodesNodeGroupRequest):
+ request = compute.DeleteNodesNodeGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if node_group is not None:
+ request.node_group = node_group
+ if node_groups_delete_nodes_request_resource is not None:
+ request.node_groups_delete_nodes_request_resource = (
+ node_groups_delete_nodes_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete_nodes]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def delete_nodes(
+ self,
+ request: Union[compute.DeleteNodesNodeGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ node_group: str = None,
+ node_groups_delete_nodes_request_resource: compute.NodeGroupsDeleteNodesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes specified nodes from the node group.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteNodesNodeGroupRequest, dict]):
+ The request object. A request message for
+ NodeGroups.DeleteNodes. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ node_group (str):
+ Name of the NodeGroup resource whose
+ nodes will be deleted.
+
+ This corresponds to the ``node_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ node_groups_delete_nodes_request_resource (google.cloud.compute_v1.types.NodeGroupsDeleteNodesRequest):
+ The body resource for this request
+ This corresponds to the ``node_groups_delete_nodes_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -806,6 +1109,31 @@ def delete_nodes_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -998,7 +1326,105 @@ def get_iam_policy(
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, zone, resource])
+ has_flattened_params = any([project, zone, resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetIamPolicyNodeGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetIamPolicyNodeGroupRequest):
+ request = compute.GetIamPolicyNodeGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if resource is not None:
+ request.resource = resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_iam_policy]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert_unary(
+ self,
+ request: Union[compute.InsertNodeGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ initial_node_count: int = None,
+ node_group_resource: compute.NodeGroup = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Creates a NodeGroup resource in the specified project
+ using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertNodeGroupRequest, dict]):
+ The request object. A request message for
+ NodeGroups.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ initial_node_count (int):
+ Initial count of nodes in the node
+ group.
+
+ This corresponds to the ``initial_node_count`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ node_group_resource (google.cloud.compute_v1.types.NodeGroup):
+ The body resource for this request
+ This corresponds to the ``node_group_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, initial_node_count, node_group_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1006,23 +1432,25 @@ def get_iam_policy(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetIamPolicyNodeGroupRequest.
+ # in a compute.InsertNodeGroupRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetIamPolicyNodeGroupRequest):
- request = compute.GetIamPolicyNodeGroupRequest(request)
+ if not isinstance(request, compute.InsertNodeGroupRequest):
+ request = compute.InsertNodeGroupRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if zone is not None:
request.zone = zone
- if resource is not None:
- request.resource = resource
+ if initial_node_count is not None:
+ request.initial_node_count = initial_node_count
+ if node_group_resource is not None:
+ request.node_group_resource = node_group_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_iam_policy]
+ rpc = self._transport._wrapped_methods[self._transport.insert]
# Send the request.
response = rpc(
@@ -1035,7 +1463,7 @@ def get_iam_policy(
# Done; return the response.
return response
- def insert_unary(
+ def insert(
self,
request: Union[compute.InsertNodeGroupRequest, dict] = None,
*,
@@ -1046,7 +1474,7 @@ def insert_unary(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
+ ) -> extended_operation.ExtendedOperation:
r"""Creates a NodeGroup resource in the specified project
using the data included in the request.
@@ -1086,22 +1514,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1145,6 +1560,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -1388,22 +1828,106 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, node_group, node_group_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchNodeGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchNodeGroupRequest):
+ request = compute.PatchNodeGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if node_group is not None:
+ request.node_group = node_group
+ if node_group_resource is not None:
+ request.node_group_resource = node_group_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch(
+ self,
+ request: Union[compute.PatchNodeGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ node_group: str = None,
+ node_group_resource: compute.NodeGroup = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified node group.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchNodeGroupRequest, dict]):
+ The request object. A request message for
+ NodeGroups.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ node_group (str):
+ Name of the NodeGroup resource to
+ update.
+
+ This corresponds to the ``node_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ node_group_resource (google.cloud.compute_v1.types.NodeGroup):
+ The body resource for this request
+ This corresponds to the ``node_group_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1445,6 +1969,31 @@ def patch_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -1638,22 +2187,110 @@ def set_node_template_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, node_group, node_groups_set_node_template_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetNodeTemplateNodeGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetNodeTemplateNodeGroupRequest):
+ request = compute.SetNodeTemplateNodeGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if node_group is not None:
+ request.node_group = node_group
+ if node_groups_set_node_template_request_resource is not None:
+ request.node_groups_set_node_template_request_resource = (
+ node_groups_set_node_template_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_node_template]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_node_template(
+ self,
+ request: Union[compute.SetNodeTemplateNodeGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ node_group: str = None,
+ node_groups_set_node_template_request_resource: compute.NodeGroupsSetNodeTemplateRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the node template of the node group.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetNodeTemplateNodeGroupRequest, dict]):
+ The request object. A request message for
+ NodeGroups.SetNodeTemplate. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ The name of the zone for this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ node_group (str):
+ Name of the NodeGroup resource to
+ update.
+
+ This corresponds to the ``node_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ node_groups_set_node_template_request_resource (google.cloud.compute_v1.types.NodeGroupsSetNodeTemplateRequest):
+ The body resource for this request
+ This corresponds to the ``node_groups_set_node_template_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1699,6 +2336,31 @@ def set_node_template_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/node_groups/transports/base.py b/google/cloud/compute_v1/services/node_groups/transports/base.py
index 98d77f281..b8a1ff4c8 100644
--- a/google/cloud/compute_v1/services/node_groups/transports/base.py
+++ b/google/cloud/compute_v1/services/node_groups/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import zone_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -320,5 +323,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _zone_operations_client(self) -> zone_operations.ZoneOperationsClient:
+ ex_op_service = self._extended_operations_services.get("zone_operations")
+ if not ex_op_service:
+ ex_op_service = zone_operations.ZoneOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["zone_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("NodeGroupsTransport",)
diff --git a/google/cloud/compute_v1/services/node_groups/transports/rest.py b/google/cloud/compute_v1/services/node_groups/transports/rest.py
index 95cf8b654..10d698347 100644
--- a/google/cloud/compute_v1/services/node_groups/transports/rest.py
+++ b/google/cloud/compute_v1/services/node_groups/transports/rest.py
@@ -2102,6 +2102,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/node_templates/client.py b/google/cloud/compute_v1/services/node_templates/client.py
index b7e577eb3..290ef3d2b 100644
--- a/google/cloud/compute_v1/services/node_templates/client.py
+++ b/google/cloud/compute_v1/services/node_templates/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.node_templates import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import NodeTemplatesTransport, DEFAULT_CLIENT_INFO
@@ -523,22 +526,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -581,6 +571,120 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteNodeTemplateRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ node_template: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified NodeTemplate resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteNodeTemplateRequest, dict]):
+ The request object. A request message for
+ NodeTemplates.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ The name of the region for this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ node_template (str):
+ Name of the NodeTemplate resource to
+ delete.
+
+ This corresponds to the ``node_template`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, node_template])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteNodeTemplateRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteNodeTemplateRequest):
+ request = compute.DeleteNodeTemplateRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if node_template is not None:
+ request.node_template = node_template
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetNodeTemplateRequest, dict] = None,
@@ -843,22 +947,97 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, node_template_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertNodeTemplateRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertNodeTemplateRequest):
+ request = compute.InsertNodeTemplateRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if node_template_resource is not None:
+ request.node_template_resource = node_template_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertNodeTemplateRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ node_template_resource: compute.NodeTemplate = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a NodeTemplate resource in the specified
+ project using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertNodeTemplateRequest, dict]):
+ The request object. A request message for
+ NodeTemplates.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ The name of the region for this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ node_template_resource (google.cloud.compute_v1.types.NodeTemplate):
+ The body resource for this request
+ This corresponds to the ``node_template_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -898,6 +1077,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/node_templates/transports/base.py b/google/cloud/compute_v1/services/node_templates/transports/base.py
index 02c522cc4..833fabfb5 100644
--- a/google/cloud/compute_v1/services/node_templates/transports/base.py
+++ b/google/cloud/compute_v1/services/node_templates/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -251,5 +254,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("NodeTemplatesTransport",)
diff --git a/google/cloud/compute_v1/services/node_templates/transports/rest.py b/google/cloud/compute_v1/services/node_templates/transports/rest.py
index 3a8aa200e..86fc11f4b 100644
--- a/google/cloud/compute_v1/services/node_templates/transports/rest.py
+++ b/google/cloud/compute_v1/services/node_templates/transports/rest.py
@@ -1369,6 +1369,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/node_types/client.py b/google/cloud/compute_v1/services/node_types/client.py
index 36641bfbd..be03cba98 100644
--- a/google/cloud/compute_v1/services/node_types/client.py
+++ b/google/cloud/compute_v1/services/node_types/client.py
@@ -16,7 +16,7 @@
from collections import OrderedDict
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
diff --git a/google/cloud/compute_v1/services/node_types/transports/base.py b/google/cloud/compute_v1/services/node_types/transports/base.py
index d95811133..d4e73610c 100644
--- a/google/cloud/compute_v1/services/node_types/transports/base.py
+++ b/google/cloud/compute_v1/services/node_types/transports/base.py
@@ -84,6 +84,7 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -179,5 +180,9 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
__all__ = ("NodeTypesTransport",)
diff --git a/google/cloud/compute_v1/services/node_types/transports/rest.py b/google/cloud/compute_v1/services/node_types/transports/rest.py
index a647e3b1d..744fba81c 100644
--- a/google/cloud/compute_v1/services/node_types/transports/rest.py
+++ b/google/cloud/compute_v1/services/node_types/transports/rest.py
@@ -560,6 +560,10 @@ def list(self) -> Callable[[compute.ListNodeTypesRequest], compute.NodeTypeList]
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/packet_mirrorings/client.py b/google/cloud/compute_v1/services/packet_mirrorings/client.py
index 250e5c327..5999ec165 100644
--- a/google/cloud/compute_v1/services/packet_mirrorings/client.py
+++ b/google/cloud/compute_v1/services/packet_mirrorings/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.packet_mirrorings import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import PacketMirroringsTransport, DEFAULT_CLIENT_INFO
@@ -524,22 +527,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -582,6 +572,118 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeletePacketMirroringRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ packet_mirroring: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified PacketMirroring resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeletePacketMirroringRequest, dict]):
+ The request object. A request message for
+ PacketMirrorings.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ packet_mirroring (str):
+ Name of the PacketMirroring resource
+ to delete.
+
+ This corresponds to the ``packet_mirroring`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, packet_mirroring])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeletePacketMirroringRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeletePacketMirroringRequest):
+ request = compute.DeletePacketMirroringRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if packet_mirroring is not None:
+ request.packet_mirroring = packet_mirroring
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetPacketMirroringRequest, dict] = None,
@@ -719,22 +821,96 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, packet_mirroring_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertPacketMirroringRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertPacketMirroringRequest):
+ request = compute.InsertPacketMirroringRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if packet_mirroring_resource is not None:
+ request.packet_mirroring_resource = packet_mirroring_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertPacketMirroringRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ packet_mirroring_resource: compute.PacketMirroring = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a PacketMirroring resource in the specified
+ project and region using the data included in the
+ request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertPacketMirroringRequest, dict]):
+ The request object. A request message for
+ PacketMirrorings.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ packet_mirroring_resource (google.cloud.compute_v1.types.PacketMirroring):
+ The body resource for this request
+ This corresponds to the ``packet_mirroring_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -774,6 +950,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -918,22 +1119,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -980,6 +1168,131 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchPacketMirroringRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ packet_mirroring: str = None,
+ packet_mirroring_resource: compute.PacketMirroring = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified PacketMirroring resource with
+ the data included in the request. This method supports
+ PATCH semantics and uses JSON merge patch format and
+ processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchPacketMirroringRequest, dict]):
+ The request object. A request message for
+ PacketMirrorings.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ packet_mirroring (str):
+ Name of the PacketMirroring resource
+ to patch.
+
+ This corresponds to the ``packet_mirroring`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ packet_mirroring_resource (google.cloud.compute_v1.types.PacketMirroring):
+ The body resource for this request
+ This corresponds to the ``packet_mirroring_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, packet_mirroring, packet_mirroring_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchPacketMirroringRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchPacketMirroringRequest):
+ request = compute.PatchPacketMirroringRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if packet_mirroring is not None:
+ request.packet_mirroring = packet_mirroring
+ if packet_mirroring_resource is not None:
+ request.packet_mirroring_resource = packet_mirroring_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def test_iam_permissions(
self,
request: Union[compute.TestIamPermissionsPacketMirroringRequest, dict] = None,
diff --git a/google/cloud/compute_v1/services/packet_mirrorings/transports/base.py b/google/cloud/compute_v1/services/packet_mirrorings/transports/base.py
index 9c46c4b0c..9d3773396 100644
--- a/google/cloud/compute_v1/services/packet_mirrorings/transports/base.py
+++ b/google/cloud/compute_v1/services/packet_mirrorings/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -237,5 +240,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("PacketMirroringsTransport",)
diff --git a/google/cloud/compute_v1/services/packet_mirrorings/transports/rest.py b/google/cloud/compute_v1/services/packet_mirrorings/transports/rest.py
index f599b1776..0ecf5cf60 100644
--- a/google/cloud/compute_v1/services/packet_mirrorings/transports/rest.py
+++ b/google/cloud/compute_v1/services/packet_mirrorings/transports/rest.py
@@ -1190,6 +1190,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/projects/client.py b/google/cloud/compute_v1/services/projects/client.py
index 5b56c412c..4b7d31ab1 100644
--- a/google/cloud/compute_v1/services/projects/client.py
+++ b/google/cloud/compute_v1/services/projects/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.projects import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import ProjectsTransport, DEFAULT_CLIENT_INFO
@@ -428,22 +431,9 @@ def disable_xpn_host_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -482,6 +472,99 @@ def disable_xpn_host_unary(
# Done; return the response.
return response
+ def disable_xpn_host(
+ self,
+ request: Union[compute.DisableXpnHostProjectRequest, dict] = None,
+ *,
+ project: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Disable this project as a shared VPC host project.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DisableXpnHostProjectRequest, dict]):
+ The request object. A request message for
+ Projects.DisableXpnHost. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DisableXpnHostProjectRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DisableXpnHostProjectRequest):
+ request = compute.DisableXpnHostProjectRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.disable_xpn_host]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def disable_xpn_resource_unary(
self,
request: Union[compute.DisableXpnResourceProjectRequest, dict] = None,
@@ -517,22 +600,9 @@ def disable_xpn_resource_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -577,27 +647,34 @@ def disable_xpn_resource_unary(
# Done; return the response.
return response
- def enable_xpn_host_unary(
+ def disable_xpn_resource(
self,
- request: Union[compute.EnableXpnHostProjectRequest, dict] = None,
+ request: Union[compute.DisableXpnResourceProjectRequest, dict] = None,
*,
project: str = None,
+ projects_disable_xpn_resource_request_resource: compute.ProjectsDisableXpnResourceRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Enable this project as a shared VPC host project.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Disable a service resource (also known as service
+ project) associated with this host project.
Args:
- request (Union[google.cloud.compute_v1.types.EnableXpnHostProjectRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DisableXpnResourceProjectRequest, dict]):
The request object. A request message for
- Projects.EnableXpnHost. See the method description for
- details.
+ Projects.DisableXpnResource. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ projects_disable_xpn_resource_request_resource (google.cloud.compute_v1.types.ProjectsDisableXpnResourceRequest):
+ The body resource for this request
+ This corresponds to the ``projects_disable_xpn_resource_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -605,28 +682,17 @@ def enable_xpn_host_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project])
+ has_flattened_params = any(
+ [project, projects_disable_xpn_resource_request_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -634,19 +700,23 @@ def enable_xpn_host_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.EnableXpnHostProjectRequest.
+ # in a compute.DisableXpnResourceProjectRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.EnableXpnHostProjectRequest):
- request = compute.EnableXpnHostProjectRequest(request)
+ if not isinstance(request, compute.DisableXpnResourceProjectRequest):
+ request = compute.DisableXpnResourceProjectRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
+ if projects_disable_xpn_resource_request_resource is not None:
+ request.projects_disable_xpn_resource_request_resource = (
+ projects_disable_xpn_resource_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.enable_xpn_host]
+ rpc = self._transport._wrapped_methods[self._transport.disable_xpn_resource]
# Send the request.
response = rpc(
@@ -656,38 +726,54 @@ def enable_xpn_host_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def enable_xpn_resource_unary(
+ def enable_xpn_host_unary(
self,
- request: Union[compute.EnableXpnResourceProjectRequest, dict] = None,
+ request: Union[compute.EnableXpnHostProjectRequest, dict] = None,
*,
project: str = None,
- projects_enable_xpn_resource_request_resource: compute.ProjectsEnableXpnResourceRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Enable service resource (a.k.a service project) for a
- host project, so that subnets in the host project can be
- used by instances in the service project.
+ r"""Enable this project as a shared VPC host project.
Args:
- request (Union[google.cloud.compute_v1.types.EnableXpnResourceProjectRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.EnableXpnHostProjectRequest, dict]):
The request object. A request message for
- Projects.EnableXpnResource. See the method description
- for details.
+ Projects.EnableXpnHost. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- projects_enable_xpn_resource_request_resource (google.cloud.compute_v1.types.ProjectsEnableXpnResourceRequest):
- The body resource for this request
- This corresponds to the ``projects_enable_xpn_resource_request_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -695,30 +781,15 @@ def enable_xpn_resource_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, projects_enable_xpn_resource_request_resource]
- )
+ has_flattened_params = any([project])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -726,23 +797,19 @@ def enable_xpn_resource_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.EnableXpnResourceProjectRequest.
+ # in a compute.EnableXpnHostProjectRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.EnableXpnResourceProjectRequest):
- request = compute.EnableXpnResourceProjectRequest(request)
+ if not isinstance(request, compute.EnableXpnHostProjectRequest):
+ request = compute.EnableXpnHostProjectRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
- if projects_enable_xpn_resource_request_resource is not None:
- request.projects_enable_xpn_resource_request_resource = (
- projects_enable_xpn_resource_request_resource
- )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.enable_xpn_resource]
+ rpc = self._transport._wrapped_methods[self._transport.enable_xpn_host]
# Send the request.
response = rpc(
@@ -755,29 +822,22 @@ def enable_xpn_resource_unary(
# Done; return the response.
return response
- def get(
+ def enable_xpn_host(
self,
- request: Union[compute.GetProjectRequest, dict] = None,
+ request: Union[compute.EnableXpnHostProjectRequest, dict] = None,
*,
project: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Project:
- r"""Returns the specified Project resource. To decrease latency for
- this method, you can optionally omit any unneeded information
- from the response by using a field mask. This practice is
- especially recommended for unused quota information (the
- ``quotas`` field). To exclude one or more fields, set your
- request's ``fields`` query parameter to only include the fields
- you need. For example, to only include the ``id`` and
- ``selfLink`` fields, add the query parameter
- ``?fields=id,selfLink`` to your request.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Enable this project as a shared VPC host project.
Args:
- request (Union[google.cloud.compute_v1.types.GetProjectRequest, dict]):
- The request object. A request message for Projects.Get.
- See the method description for details.
+ request (Union[google.cloud.compute_v1.types.EnableXpnHostProjectRequest, dict]):
+ The request object. A request message for
+ Projects.EnableXpnHost. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -790,12 +850,9 @@ def get(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Project:
- Represents a Project resource. A
- project is used to organize resources in
- a Google Cloud Platform environment. For
- more information, read about the
- Resource Hierarchy.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -809,11 +866,11 @@ def get(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetProjectRequest.
+ # in a compute.EnableXpnHostProjectRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetProjectRequest):
- request = compute.GetProjectRequest(request)
+ if not isinstance(request, compute.EnableXpnHostProjectRequest):
+ request = compute.EnableXpnHostProjectRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -821,7 +878,7 @@ def get(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get]
+ rpc = self._transport._wrapped_methods[self._transport.enable_xpn_host]
# Send the request.
response = rpc(
@@ -831,31 +888,62 @@ def get(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def get_xpn_host(
+ def enable_xpn_resource_unary(
self,
- request: Union[compute.GetXpnHostProjectRequest, dict] = None,
+ request: Union[compute.EnableXpnResourceProjectRequest, dict] = None,
*,
project: str = None,
+ projects_enable_xpn_resource_request_resource: compute.ProjectsEnableXpnResourceRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Project:
- r"""Gets the shared VPC host project that this project
- links to. May be empty if no link exists.
+ ) -> compute.Operation:
+ r"""Enable service resource (a.k.a service project) for a
+ host project, so that subnets in the host project can be
+ used by instances in the service project.
Args:
- request (Union[google.cloud.compute_v1.types.GetXpnHostProjectRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.EnableXpnResourceProjectRequest, dict]):
The request object. A request message for
- Projects.GetXpnHost. See the method description for
- details.
+ Projects.EnableXpnResource. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ projects_enable_xpn_resource_request_resource (google.cloud.compute_v1.types.ProjectsEnableXpnResourceRequest):
+ The body resource for this request
+ This corresponds to the ``projects_enable_xpn_resource_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -863,18 +951,17 @@ def get_xpn_host(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Project:
- Represents a Project resource. A
- project is used to organize resources in
- a Google Cloud Platform environment. For
- more information, read about the
- Resource Hierarchy.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project])
+ has_flattened_params = any(
+ [project, projects_enable_xpn_resource_request_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -882,19 +969,23 @@ def get_xpn_host(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetXpnHostProjectRequest.
+ # in a compute.EnableXpnResourceProjectRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetXpnHostProjectRequest):
- request = compute.GetXpnHostProjectRequest(request)
+ if not isinstance(request, compute.EnableXpnResourceProjectRequest):
+ request = compute.EnableXpnResourceProjectRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
+ if projects_enable_xpn_resource_request_resource is not None:
+ request.projects_enable_xpn_resource_request_resource = (
+ projects_enable_xpn_resource_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_xpn_host]
+ rpc = self._transport._wrapped_methods[self._transport.enable_xpn_resource]
# Send the request.
response = rpc(
@@ -907,28 +998,725 @@ def get_xpn_host(
# Done; return the response.
return response
- def get_xpn_resources(
+ def enable_xpn_resource(
self,
- request: Union[compute.GetXpnResourcesProjectsRequest, dict] = None,
+ request: Union[compute.EnableXpnResourceProjectRequest, dict] = None,
*,
project: str = None,
+ projects_enable_xpn_resource_request_resource: compute.ProjectsEnableXpnResourceRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.GetXpnResourcesPager:
- r"""Gets service resources (a.k.a service project)
- associated with this host project.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Enable service resource (a.k.a service project) for a
+ host project, so that subnets in the host project can be
+ used by instances in the service project.
Args:
- request (Union[google.cloud.compute_v1.types.GetXpnResourcesProjectsRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.EnableXpnResourceProjectRequest, dict]):
The request object. A request message for
- Projects.GetXpnResources. See the method description for
- details.
+ Projects.EnableXpnResource. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ projects_enable_xpn_resource_request_resource (google.cloud.compute_v1.types.ProjectsEnableXpnResourceRequest):
+ The body resource for this request
+ This corresponds to the ``projects_enable_xpn_resource_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, projects_enable_xpn_resource_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.EnableXpnResourceProjectRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.EnableXpnResourceProjectRequest):
+ request = compute.EnableXpnResourceProjectRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if projects_enable_xpn_resource_request_resource is not None:
+ request.projects_enable_xpn_resource_request_resource = (
+ projects_enable_xpn_resource_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.enable_xpn_resource]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def get(
+ self,
+ request: Union[compute.GetProjectRequest, dict] = None,
+ *,
+ project: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Project:
+ r"""Returns the specified Project resource. To decrease latency for
+ this method, you can optionally omit any unneeded information
+ from the response by using a field mask. This practice is
+ especially recommended for unused quota information (the
+ ``quotas`` field). To exclude one or more fields, set your
+ request's ``fields`` query parameter to only include the fields
+ you need. For example, to only include the ``id`` and
+ ``selfLink`` fields, add the query parameter
+ ``?fields=id,selfLink`` to your request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetProjectRequest, dict]):
+ The request object. A request message for Projects.Get.
+ See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.Project:
+ Represents a Project resource. A
+ project is used to organize resources in
+ a Google Cloud Platform environment. For
+ more information, read about the
+ Resource Hierarchy.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetProjectRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetProjectRequest):
+ request = compute.GetProjectRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_xpn_host(
+ self,
+ request: Union[compute.GetXpnHostProjectRequest, dict] = None,
+ *,
+ project: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Project:
+ r"""Gets the shared VPC host project that this project
+ links to. May be empty if no link exists.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetXpnHostProjectRequest, dict]):
+ The request object. A request message for
+ Projects.GetXpnHost. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.Project:
+ Represents a Project resource. A
+ project is used to organize resources in
+ a Google Cloud Platform environment. For
+ more information, read about the
+ Resource Hierarchy.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetXpnHostProjectRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetXpnHostProjectRequest):
+ request = compute.GetXpnHostProjectRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_xpn_host]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_xpn_resources(
+ self,
+ request: Union[compute.GetXpnResourcesProjectsRequest, dict] = None,
+ *,
+ project: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.GetXpnResourcesPager:
+ r"""Gets service resources (a.k.a service project)
+ associated with this host project.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetXpnResourcesProjectsRequest, dict]):
+ The request object. A request message for
+ Projects.GetXpnResources. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.projects.pagers.GetXpnResourcesPager:
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetXpnResourcesProjectsRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetXpnResourcesProjectsRequest):
+ request = compute.GetXpnResourcesProjectsRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_xpn_resources]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.GetXpnResourcesPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def list_xpn_hosts(
+ self,
+ request: Union[compute.ListXpnHostsProjectsRequest, dict] = None,
+ *,
+ project: str = None,
+ projects_list_xpn_hosts_request_resource: compute.ProjectsListXpnHostsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListXpnHostsPager:
+ r"""Lists all shared VPC host projects visible to the
+ user in an organization.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListXpnHostsProjectsRequest, dict]):
+ The request object. A request message for
+ Projects.ListXpnHosts. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ projects_list_xpn_hosts_request_resource (google.cloud.compute_v1.types.ProjectsListXpnHostsRequest):
+ The body resource for this request
+ This corresponds to the ``projects_list_xpn_hosts_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.projects.pagers.ListXpnHostsPager:
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, projects_list_xpn_hosts_request_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListXpnHostsProjectsRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ListXpnHostsProjectsRequest):
+ request = compute.ListXpnHostsProjectsRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if projects_list_xpn_hosts_request_resource is not None:
+ request.projects_list_xpn_hosts_request_resource = (
+ projects_list_xpn_hosts_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list_xpn_hosts]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListXpnHostsPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def move_disk_unary(
+ self,
+ request: Union[compute.MoveDiskProjectRequest, dict] = None,
+ *,
+ project: str = None,
+ disk_move_request_resource: compute.DiskMoveRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Moves a persistent disk from one zone to another.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.MoveDiskProjectRequest, dict]):
+ The request object. A request message for
+ Projects.MoveDisk. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ disk_move_request_resource (google.cloud.compute_v1.types.DiskMoveRequest):
+ The body resource for this request
+ This corresponds to the ``disk_move_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, disk_move_request_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.MoveDiskProjectRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.MoveDiskProjectRequest):
+ request = compute.MoveDiskProjectRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if disk_move_request_resource is not None:
+ request.disk_move_request_resource = disk_move_request_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.move_disk]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def move_disk(
+ self,
+ request: Union[compute.MoveDiskProjectRequest, dict] = None,
+ *,
+ project: str = None,
+ disk_move_request_resource: compute.DiskMoveRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Moves a persistent disk from one zone to another.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.MoveDiskProjectRequest, dict]):
+ The request object. A request message for
+ Projects.MoveDisk. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ disk_move_request_resource (google.cloud.compute_v1.types.DiskMoveRequest):
+ The body resource for this request
+ This corresponds to the ``disk_move_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, disk_move_request_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.MoveDiskProjectRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.MoveDiskProjectRequest):
+ request = compute.MoveDiskProjectRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if disk_move_request_resource is not None:
+ request.disk_move_request_resource = disk_move_request_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.move_disk]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def move_instance_unary(
+ self,
+ request: Union[compute.MoveInstanceProjectRequest, dict] = None,
+ *,
+ project: str = None,
+ instance_move_request_resource: compute.InstanceMoveRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Moves an instance and its attached persistent disks from one
+ zone to another. *Note*: Moving VMs or disks by using this
+ method might cause unexpected behavior. For more information,
+ see the `known
+ issue `__.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.MoveInstanceProjectRequest, dict]):
+ The request object. A request message for
+ Projects.MoveInstance. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_move_request_resource (google.cloud.compute_v1.types.InstanceMoveRequest):
+ The body resource for this request
+ This corresponds to the ``instance_move_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, instance_move_request_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.MoveInstanceProjectRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.MoveInstanceProjectRequest):
+ request = compute.MoveInstanceProjectRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if instance_move_request_resource is not None:
+ request.instance_move_request_resource = instance_move_request_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.move_instance]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def move_instance(
+ self,
+ request: Union[compute.MoveInstanceProjectRequest, dict] = None,
+ *,
+ project: str = None,
+ instance_move_request_resource: compute.InstanceMoveRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Moves an instance and its attached persistent disks from one
+ zone to another. *Note*: Moving VMs or disks by using this
+ method might cause unexpected behavior. For more information,
+ see the `known
+ issue `__.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.MoveInstanceProjectRequest, dict]):
+ The request object. A request message for
+ Projects.MoveInstance. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_move_request_resource (google.cloud.compute_v1.types.InstanceMoveRequest):
+ The body resource for this request
+ This corresponds to the ``instance_move_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -936,16 +1724,15 @@ def get_xpn_resources(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.projects.pagers.GetXpnResourcesPager:
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project])
+ has_flattened_params = any([project, instance_move_request_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -953,19 +1740,21 @@ def get_xpn_resources(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetXpnResourcesProjectsRequest.
+ # in a compute.MoveInstanceProjectRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetXpnResourcesProjectsRequest):
- request = compute.GetXpnResourcesProjectsRequest(request)
+ if not isinstance(request, compute.MoveInstanceProjectRequest):
+ request = compute.MoveInstanceProjectRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
+ if instance_move_request_resource is not None:
+ request.instance_move_request_resource = instance_move_request_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_xpn_resources]
+ rpc = self._transport._wrapped_methods[self._transport.move_instance]
# Send the request.
response = rpc(
@@ -975,44 +1764,60 @@ def get_xpn_resources(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.GetXpnResourcesPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
# Done; return the response.
return response
- def list_xpn_hosts(
+ def set_common_instance_metadata_unary(
self,
- request: Union[compute.ListXpnHostsProjectsRequest, dict] = None,
+ request: Union[compute.SetCommonInstanceMetadataProjectRequest, dict] = None,
*,
project: str = None,
- projects_list_xpn_hosts_request_resource: compute.ProjectsListXpnHostsRequest = None,
+ metadata_resource: compute.Metadata = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListXpnHostsPager:
- r"""Lists all shared VPC host projects visible to the
- user in an organization.
+ ) -> compute.Operation:
+ r"""Sets metadata common to all instances within the
+ specified project using the data included in the
+ request.
Args:
- request (Union[google.cloud.compute_v1.types.ListXpnHostsProjectsRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetCommonInstanceMetadataProjectRequest, dict]):
The request object. A request message for
- Projects.ListXpnHosts. See the method description for
- details.
+ Projects.SetCommonInstanceMetadata. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- projects_list_xpn_hosts_request_resource (google.cloud.compute_v1.types.ProjectsListXpnHostsRequest):
+ metadata_resource (google.cloud.compute_v1.types.Metadata):
The body resource for this request
- This corresponds to the ``projects_list_xpn_hosts_request_resource`` field
+ This corresponds to the ``metadata_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1022,16 +1827,15 @@ def list_xpn_hosts(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.projects.pagers.ListXpnHostsPager:
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, projects_list_xpn_hosts_request_resource])
+ has_flattened_params = any([project, metadata_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1039,23 +1843,23 @@ def list_xpn_hosts(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListXpnHostsProjectsRequest.
+ # in a compute.SetCommonInstanceMetadataProjectRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ListXpnHostsProjectsRequest):
- request = compute.ListXpnHostsProjectsRequest(request)
+ if not isinstance(request, compute.SetCommonInstanceMetadataProjectRequest):
+ request = compute.SetCommonInstanceMetadataProjectRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
- if projects_list_xpn_hosts_request_resource is not None:
- request.projects_list_xpn_hosts_request_resource = (
- projects_list_xpn_hosts_request_resource
- )
+ if metadata_resource is not None:
+ request.metadata_resource = metadata_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list_xpn_hosts]
+ rpc = self._transport._wrapped_methods[
+ self._transport.set_common_instance_metadata
+ ]
# Send the request.
response = rpc(
@@ -1065,43 +1869,36 @@ def list_xpn_hosts(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListXpnHostsPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
-
# Done; return the response.
return response
- def move_disk_unary(
+ def set_common_instance_metadata(
self,
- request: Union[compute.MoveDiskProjectRequest, dict] = None,
+ request: Union[compute.SetCommonInstanceMetadataProjectRequest, dict] = None,
*,
project: str = None,
- disk_move_request_resource: compute.DiskMoveRequest = None,
+ metadata_resource: compute.Metadata = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Moves a persistent disk from one zone to another.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets metadata common to all instances within the
+ specified project using the data included in the
+ request.
Args:
- request (Union[google.cloud.compute_v1.types.MoveDiskProjectRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetCommonInstanceMetadataProjectRequest, dict]):
The request object. A request message for
- Projects.MoveDisk. See the method description for
- details.
+ Projects.SetCommonInstanceMetadata. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- disk_move_request_resource (google.cloud.compute_v1.types.DiskMoveRequest):
+ metadata_resource (google.cloud.compute_v1.types.Metadata):
The body resource for this request
- This corresponds to the ``disk_move_request_resource`` field
+ This corresponds to the ``metadata_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1111,28 +1908,15 @@ def move_disk_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, disk_move_request_resource])
+ has_flattened_params = any([project, metadata_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1140,21 +1924,23 @@ def move_disk_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.MoveDiskProjectRequest.
+ # in a compute.SetCommonInstanceMetadataProjectRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.MoveDiskProjectRequest):
- request = compute.MoveDiskProjectRequest(request)
+ if not isinstance(request, compute.SetCommonInstanceMetadataProjectRequest):
+ request = compute.SetCommonInstanceMetadataProjectRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
- if disk_move_request_resource is not None:
- request.disk_move_request_resource = disk_move_request_resource
+ if metadata_resource is not None:
+ request.metadata_resource = metadata_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.move_disk]
+ rpc = self._transport._wrapped_methods[
+ self._transport.set_common_instance_metadata
+ ]
# Send the request.
response = rpc(
@@ -1164,38 +1950,61 @@ def move_disk_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def move_instance_unary(
+ def set_default_network_tier_unary(
self,
- request: Union[compute.MoveInstanceProjectRequest, dict] = None,
+ request: Union[compute.SetDefaultNetworkTierProjectRequest, dict] = None,
*,
project: str = None,
- instance_move_request_resource: compute.InstanceMoveRequest = None,
+ projects_set_default_network_tier_request_resource: compute.ProjectsSetDefaultNetworkTierRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Moves an instance and its attached persistent disks from one
- zone to another. *Note*: Moving VMs or disks by using this
- method might cause unexpected behavior. For more information,
- see the `known
- issue `__.
+ r"""Sets the default network tier of the project. The
+ default network tier is used when an
+ address/forwardingRule/instance is created without
+ specifying the network tier field.
Args:
- request (Union[google.cloud.compute_v1.types.MoveInstanceProjectRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetDefaultNetworkTierProjectRequest, dict]):
The request object. A request message for
- Projects.MoveInstance. See the method description for
- details.
+ Projects.SetDefaultNetworkTier. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance_move_request_resource (google.cloud.compute_v1.types.InstanceMoveRequest):
+ projects_set_default_network_tier_request_resource (google.cloud.compute_v1.types.ProjectsSetDefaultNetworkTierRequest):
The body resource for this request
- This corresponds to the ``instance_move_request_resource`` field
+ This corresponds to the ``projects_set_default_network_tier_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1205,28 +2014,17 @@ def move_instance_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, instance_move_request_resource])
+ has_flattened_params = any(
+ [project, projects_set_default_network_tier_request_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1234,21 +2032,23 @@ def move_instance_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.MoveInstanceProjectRequest.
+ # in a compute.SetDefaultNetworkTierProjectRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.MoveInstanceProjectRequest):
- request = compute.MoveInstanceProjectRequest(request)
+ if not isinstance(request, compute.SetDefaultNetworkTierProjectRequest):
+ request = compute.SetDefaultNetworkTierProjectRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
- if instance_move_request_resource is not None:
- request.instance_move_request_resource = instance_move_request_resource
+ if projects_set_default_network_tier_request_resource is not None:
+ request.projects_set_default_network_tier_request_resource = (
+ projects_set_default_network_tier_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.move_instance]
+ rpc = self._transport._wrapped_methods[self._transport.set_default_network_tier]
# Send the request.
response = rpc(
@@ -1261,33 +2061,34 @@ def move_instance_unary(
# Done; return the response.
return response
- def set_common_instance_metadata_unary(
+ def set_default_network_tier(
self,
- request: Union[compute.SetCommonInstanceMetadataProjectRequest, dict] = None,
+ request: Union[compute.SetDefaultNetworkTierProjectRequest, dict] = None,
*,
project: str = None,
- metadata_resource: compute.Metadata = None,
+ projects_set_default_network_tier_request_resource: compute.ProjectsSetDefaultNetworkTierRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Sets metadata common to all instances within the
- specified project using the data included in the
- request.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the default network tier of the project. The
+ default network tier is used when an
+ address/forwardingRule/instance is created without
+ specifying the network tier field.
Args:
- request (Union[google.cloud.compute_v1.types.SetCommonInstanceMetadataProjectRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetDefaultNetworkTierProjectRequest, dict]):
The request object. A request message for
- Projects.SetCommonInstanceMetadata. See the method
+ Projects.SetDefaultNetworkTier. See the method
description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- metadata_resource (google.cloud.compute_v1.types.Metadata):
+ projects_set_default_network_tier_request_resource (google.cloud.compute_v1.types.ProjectsSetDefaultNetworkTierRequest):
The body resource for this request
- This corresponds to the ``metadata_resource`` field
+ This corresponds to the ``projects_set_default_network_tier_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1297,28 +2098,17 @@ def set_common_instance_metadata_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, metadata_resource])
+ has_flattened_params = any(
+ [project, projects_set_default_network_tier_request_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1326,23 +2116,23 @@ def set_common_instance_metadata_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetCommonInstanceMetadataProjectRequest.
+ # in a compute.SetDefaultNetworkTierProjectRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetCommonInstanceMetadataProjectRequest):
- request = compute.SetCommonInstanceMetadataProjectRequest(request)
+ if not isinstance(request, compute.SetDefaultNetworkTierProjectRequest):
+ request = compute.SetDefaultNetworkTierProjectRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
- if metadata_resource is not None:
- request.metadata_resource = metadata_resource
+ if projects_set_default_network_tier_request_resource is not None:
+ request.projects_set_default_network_tier_request_resource = (
+ projects_set_default_network_tier_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[
- self._transport.set_common_instance_metadata
- ]
+ rpc = self._transport._wrapped_methods[self._transport.set_default_network_tier]
# Send the request.
response = rpc(
@@ -1352,37 +2142,61 @@ def set_common_instance_metadata_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def set_default_network_tier_unary(
+ def set_usage_export_bucket_unary(
self,
- request: Union[compute.SetDefaultNetworkTierProjectRequest, dict] = None,
+ request: Union[compute.SetUsageExportBucketProjectRequest, dict] = None,
*,
project: str = None,
- projects_set_default_network_tier_request_resource: compute.ProjectsSetDefaultNetworkTierRequest = None,
+ usage_export_location_resource: compute.UsageExportLocation = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Sets the default network tier of the project. The
- default network tier is used when an
- address/forwardingRule/instance is created without
- specifying the network tier field.
+ r"""Enables the usage export feature and sets the usage
+ export bucket where reports are stored. If you provide
+ an empty request body using this method, the usage
+ export feature will be disabled.
Args:
- request (Union[google.cloud.compute_v1.types.SetDefaultNetworkTierProjectRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetUsageExportBucketProjectRequest, dict]):
The request object. A request message for
- Projects.SetDefaultNetworkTier. See the method
+ Projects.SetUsageExportBucket. See the method
description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- projects_set_default_network_tier_request_resource (google.cloud.compute_v1.types.ProjectsSetDefaultNetworkTierRequest):
+ usage_export_location_resource (google.cloud.compute_v1.types.UsageExportLocation):
The body resource for this request
- This corresponds to the ``projects_set_default_network_tier_request_resource`` field
+ This corresponds to the ``usage_export_location_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1392,30 +2206,15 @@ def set_default_network_tier_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, projects_set_default_network_tier_request_resource]
- )
+ has_flattened_params = any([project, usage_export_location_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1423,23 +2222,21 @@ def set_default_network_tier_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetDefaultNetworkTierProjectRequest.
+ # in a compute.SetUsageExportBucketProjectRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetDefaultNetworkTierProjectRequest):
- request = compute.SetDefaultNetworkTierProjectRequest(request)
+ if not isinstance(request, compute.SetUsageExportBucketProjectRequest):
+ request = compute.SetUsageExportBucketProjectRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
- if projects_set_default_network_tier_request_resource is not None:
- request.projects_set_default_network_tier_request_resource = (
- projects_set_default_network_tier_request_resource
- )
+ if usage_export_location_resource is not None:
+ request.usage_export_location_resource = usage_export_location_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_default_network_tier]
+ rpc = self._transport._wrapped_methods[self._transport.set_usage_export_bucket]
# Send the request.
response = rpc(
@@ -1452,7 +2249,7 @@ def set_default_network_tier_unary(
# Done; return the response.
return response
- def set_usage_export_bucket_unary(
+ def set_usage_export_bucket(
self,
request: Union[compute.SetUsageExportBucketProjectRequest, dict] = None,
*,
@@ -1461,7 +2258,7 @@ def set_usage_export_bucket_unary(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
+ ) -> extended_operation.ExtendedOperation:
r"""Enables the usage export feature and sets the usage
export bucket where reports are stored. If you provide
an empty request body using this method, the usage
@@ -1489,22 +2286,9 @@ def set_usage_export_bucket_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1542,6 +2326,30 @@ def set_usage_export_bucket_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/projects/transports/base.py b/google/cloud/compute_v1/services/projects/transports/base.py
index 280b57a1c..aa85530a8 100644
--- a/google/cloud/compute_v1/services/projects/transports/base.py
+++ b/google/cloud/compute_v1/services/projects/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -317,5 +320,21 @@ def set_usage_export_bucket(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("ProjectsTransport",)
diff --git a/google/cloud/compute_v1/services/projects/transports/rest.py b/google/cloud/compute_v1/services/projects/transports/rest.py
index 811711bf6..6ec9ad804 100644
--- a/google/cloud/compute_v1/services/projects/transports/rest.py
+++ b/google/cloud/compute_v1/services/projects/transports/rest.py
@@ -2111,6 +2111,10 @@ def set_usage_export_bucket(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/public_advertised_prefixes/client.py b/google/cloud/compute_v1/services/public_advertised_prefixes/client.py
index 39e3d31cd..a08760fa1 100644
--- a/google/cloud/compute_v1/services/public_advertised_prefixes/client.py
+++ b/google/cloud/compute_v1/services/public_advertised_prefixes/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.public_advertised_prefixes import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import PublicAdvertisedPrefixesTransport, DEFAULT_CLIENT_INFO
@@ -438,22 +441,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -494,6 +484,109 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeletePublicAdvertisedPrefixeRequest, dict] = None,
+ *,
+ project: str = None,
+ public_advertised_prefix: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified PublicAdvertisedPrefix
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeletePublicAdvertisedPrefixeRequest, dict]):
+ The request object. A request message for
+ PublicAdvertisedPrefixes.Delete. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ public_advertised_prefix (str):
+ Name of the PublicAdvertisedPrefix
+ resource to delete.
+
+ This corresponds to the ``public_advertised_prefix`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, public_advertised_prefix])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeletePublicAdvertisedPrefixeRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeletePublicAdvertisedPrefixeRequest):
+ request = compute.DeletePublicAdvertisedPrefixeRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if public_advertised_prefix is not None:
+ request.public_advertised_prefix = public_advertised_prefix
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetPublicAdvertisedPrefixeRequest, dict] = None,
@@ -614,22 +707,90 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, public_advertised_prefix_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertPublicAdvertisedPrefixeRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertPublicAdvertisedPrefixeRequest):
+ request = compute.InsertPublicAdvertisedPrefixeRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if public_advertised_prefix_resource is not None:
+ request.public_advertised_prefix_resource = (
+ public_advertised_prefix_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertPublicAdvertisedPrefixeRequest, dict] = None,
+ *,
+ project: str = None,
+ public_advertised_prefix_resource: compute.PublicAdvertisedPrefix = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a PublicAdvertisedPrefix in the specified
+ project using the parameters that are included in the
+ request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertPublicAdvertisedPrefixeRequest, dict]):
+ The request object. A request message for
+ PublicAdvertisedPrefixes.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ public_advertised_prefix_resource (google.cloud.compute_v1.types.PublicAdvertisedPrefix):
+ The body resource for this request
+ This corresponds to the ``public_advertised_prefix_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -669,6 +830,30 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -796,22 +981,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -858,6 +1030,124 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchPublicAdvertisedPrefixeRequest, dict] = None,
+ *,
+ project: str = None,
+ public_advertised_prefix: str = None,
+ public_advertised_prefix_resource: compute.PublicAdvertisedPrefix = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified Router resource with the data
+ included in the request. This method supports PATCH
+ semantics and uses JSON merge patch format and
+ processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchPublicAdvertisedPrefixeRequest, dict]):
+ The request object. A request message for
+ PublicAdvertisedPrefixes.Patch. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ public_advertised_prefix (str):
+ Name of the PublicAdvertisedPrefix
+ resource to patch.
+
+ This corresponds to the ``public_advertised_prefix`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ public_advertised_prefix_resource (google.cloud.compute_v1.types.PublicAdvertisedPrefix):
+ The body resource for this request
+ This corresponds to the ``public_advertised_prefix_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, public_advertised_prefix, public_advertised_prefix_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchPublicAdvertisedPrefixeRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchPublicAdvertisedPrefixeRequest):
+ request = compute.PatchPublicAdvertisedPrefixeRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if public_advertised_prefix is not None:
+ request.public_advertised_prefix = public_advertised_prefix
+ if public_advertised_prefix_resource is not None:
+ request.public_advertised_prefix_resource = (
+ public_advertised_prefix_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/public_advertised_prefixes/transports/base.py b/google/cloud/compute_v1/services/public_advertised_prefixes/transports/base.py
index 7303b4b56..24482c35c 100644
--- a/google/cloud/compute_v1/services/public_advertised_prefixes/transports/base.py
+++ b/google/cloud/compute_v1/services/public_advertised_prefixes/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -209,5 +212,21 @@ def patch(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("PublicAdvertisedPrefixesTransport",)
diff --git a/google/cloud/compute_v1/services/public_advertised_prefixes/transports/rest.py b/google/cloud/compute_v1/services/public_advertised_prefixes/transports/rest.py
index b1134e758..4b35154f7 100644
--- a/google/cloud/compute_v1/services/public_advertised_prefixes/transports/rest.py
+++ b/google/cloud/compute_v1/services/public_advertised_prefixes/transports/rest.py
@@ -909,6 +909,10 @@ def patch(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/public_delegated_prefixes/client.py b/google/cloud/compute_v1/services/public_delegated_prefixes/client.py
index 031f492ce..120d246b2 100644
--- a/google/cloud/compute_v1/services/public_delegated_prefixes/client.py
+++ b/google/cloud/compute_v1/services/public_delegated_prefixes/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.public_delegated_prefixes import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import PublicDelegatedPrefixesTransport, DEFAULT_CLIENT_INFO
@@ -531,22 +534,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -589,6 +579,119 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeletePublicDelegatedPrefixeRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ public_delegated_prefix: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified PublicDelegatedPrefix in the
+ given region.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeletePublicDelegatedPrefixeRequest, dict]):
+ The request object. A request message for
+ PublicDelegatedPrefixes.Delete. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region of this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ public_delegated_prefix (str):
+ Name of the PublicDelegatedPrefix
+ resource to delete.
+
+ This corresponds to the ``public_delegated_prefix`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, public_delegated_prefix])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeletePublicDelegatedPrefixeRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeletePublicDelegatedPrefixeRequest):
+ request = compute.DeletePublicDelegatedPrefixeRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if public_delegated_prefix is not None:
+ request.public_delegated_prefix = public_delegated_prefix
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetPublicDelegatedPrefixeRequest, dict] = None,
@@ -726,22 +829,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -786,6 +876,120 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertPublicDelegatedPrefixeRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ public_delegated_prefix_resource: compute.PublicDelegatedPrefix = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a PublicDelegatedPrefix in the specified
+ project in the given region using the parameters that
+ are included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertPublicDelegatedPrefixeRequest, dict]):
+ The request object. A request message for
+ PublicDelegatedPrefixes.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region of this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ public_delegated_prefix_resource (google.cloud.compute_v1.types.PublicDelegatedPrefix):
+ The body resource for this request
+ This corresponds to the ``public_delegated_prefix_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, public_delegated_prefix_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertPublicDelegatedPrefixeRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertPublicDelegatedPrefixeRequest):
+ request = compute.InsertPublicDelegatedPrefixeRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if public_delegated_prefix_resource is not None:
+ request.public_delegated_prefix_resource = (
+ public_delegated_prefix_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListPublicDelegatedPrefixesRequest, dict] = None,
@@ -925,22 +1129,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -989,6 +1180,133 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchPublicDelegatedPrefixeRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ public_delegated_prefix: str = None,
+ public_delegated_prefix_resource: compute.PublicDelegatedPrefix = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified PublicDelegatedPrefix resource
+ with the data included in the request. This method
+ supports PATCH semantics and uses JSON merge patch
+ format and processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchPublicDelegatedPrefixeRequest, dict]):
+ The request object. A request message for
+ PublicDelegatedPrefixes.Patch. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ public_delegated_prefix (str):
+ Name of the PublicDelegatedPrefix
+ resource to patch.
+
+ This corresponds to the ``public_delegated_prefix`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ public_delegated_prefix_resource (google.cloud.compute_v1.types.PublicDelegatedPrefix):
+ The body resource for this request
+ This corresponds to the ``public_delegated_prefix_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, public_delegated_prefix, public_delegated_prefix_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchPublicDelegatedPrefixeRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchPublicDelegatedPrefixeRequest):
+ request = compute.PatchPublicDelegatedPrefixeRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if public_delegated_prefix is not None:
+ request.public_delegated_prefix = public_delegated_prefix
+ if public_delegated_prefix_resource is not None:
+ request.public_delegated_prefix_resource = (
+ public_delegated_prefix_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/public_delegated_prefixes/transports/base.py b/google/cloud/compute_v1/services/public_delegated_prefixes/transports/base.py
index 8d7db3699..367c4215d 100644
--- a/google/cloud/compute_v1/services/public_delegated_prefixes/transports/base.py
+++ b/google/cloud/compute_v1/services/public_delegated_prefixes/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -224,5 +227,21 @@ def patch(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("PublicDelegatedPrefixesTransport",)
diff --git a/google/cloud/compute_v1/services/public_delegated_prefixes/transports/rest.py b/google/cloud/compute_v1/services/public_delegated_prefixes/transports/rest.py
index 21d842752..bcfba90e3 100644
--- a/google/cloud/compute_v1/services/public_delegated_prefixes/transports/rest.py
+++ b/google/cloud/compute_v1/services/public_delegated_prefixes/transports/rest.py
@@ -1047,6 +1047,10 @@ def patch(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_autoscalers/client.py b/google/cloud/compute_v1/services/region_autoscalers/client.py
index eef4699ce..ed2378fa6 100644
--- a/google/cloud/compute_v1/services/region_autoscalers/client.py
+++ b/google/cloud/compute_v1/services/region_autoscalers/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_autoscalers import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionAutoscalersTransport, DEFAULT_CLIENT_INFO
@@ -444,22 +447,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -502,6 +492,118 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteRegionAutoscalerRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ autoscaler: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified autoscaler.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteRegionAutoscalerRequest, dict]):
+ The request object. A request message for
+ RegionAutoscalers.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ autoscaler (str):
+ Name of the autoscaler to delete.
+ This corresponds to the ``autoscaler`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, autoscaler])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteRegionAutoscalerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteRegionAutoscalerRequest):
+ request = compute.DeleteRegionAutoscalerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if autoscaler is not None:
+ request.autoscaler = autoscaler
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetRegionAutoscalerRequest, dict] = None,
@@ -641,22 +743,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -699,6 +788,119 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertRegionAutoscalerRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ autoscaler_resource: compute.Autoscaler = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates an autoscaler in the specified project using
+ the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionAutoscalerRequest, dict]):
+ The request object. A request message for
+ RegionAutoscalers.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ autoscaler_resource (google.cloud.compute_v1.types.Autoscaler):
+ The body resource for this request
+ This corresponds to the ``autoscaler_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, autoscaler_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionAutoscalerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionAutoscalerRequest):
+ request = compute.InsertRegionAutoscalerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if autoscaler_resource is not None:
+ request.autoscaler_resource = autoscaler_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListRegionAutoscalersRequest, dict] = None,
@@ -835,22 +1037,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -893,6 +1082,121 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchRegionAutoscalerRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ autoscaler_resource: compute.Autoscaler = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates an autoscaler in the specified project using
+ the data included in the request. This method supports
+ PATCH semantics and uses the JSON merge patch format and
+ processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchRegionAutoscalerRequest, dict]):
+ The request object. A request message for
+ RegionAutoscalers.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ autoscaler_resource (google.cloud.compute_v1.types.Autoscaler):
+ The body resource for this request
+ This corresponds to the ``autoscaler_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, autoscaler_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchRegionAutoscalerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchRegionAutoscalerRequest):
+ request = compute.PatchRegionAutoscalerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if autoscaler_resource is not None:
+ request.autoscaler_resource = autoscaler_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def update_unary(
self,
request: Union[compute.UpdateRegionAutoscalerRequest, dict] = None,
@@ -936,22 +1240,9 @@ def update_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -994,6 +1285,119 @@ def update_unary(
# Done; return the response.
return response
+ def update(
+ self,
+ request: Union[compute.UpdateRegionAutoscalerRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ autoscaler_resource: compute.Autoscaler = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates an autoscaler in the specified project using
+ the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.UpdateRegionAutoscalerRequest, dict]):
+ The request object. A request message for
+ RegionAutoscalers.Update. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ autoscaler_resource (google.cloud.compute_v1.types.Autoscaler):
+ The body resource for this request
+ This corresponds to the ``autoscaler_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, autoscaler_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.UpdateRegionAutoscalerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.UpdateRegionAutoscalerRequest):
+ request = compute.UpdateRegionAutoscalerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if autoscaler_resource is not None:
+ request.autoscaler_resource = autoscaler_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.update]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/region_autoscalers/transports/base.py b/google/cloud/compute_v1/services/region_autoscalers/transports/base.py
index fbb6f0c70..37d0aafca 100644
--- a/google/cloud/compute_v1/services/region_autoscalers/transports/base.py
+++ b/google/cloud/compute_v1/services/region_autoscalers/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -218,5 +221,21 @@ def update(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionAutoscalersTransport",)
diff --git a/google/cloud/compute_v1/services/region_autoscalers/transports/rest.py b/google/cloud/compute_v1/services/region_autoscalers/transports/rest.py
index ecfbdebc1..40da6928d 100644
--- a/google/cloud/compute_v1/services/region_autoscalers/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_autoscalers/transports/rest.py
@@ -1052,6 +1052,10 @@ def update(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_backend_services/client.py b/google/cloud/compute_v1/services/region_backend_services/client.py
index 351bdd98a..277971f90 100644
--- a/google/cloud/compute_v1/services/region_backend_services/client.py
+++ b/google/cloud/compute_v1/services/region_backend_services/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_backend_services import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionBackendServicesTransport, DEFAULT_CLIENT_INFO
@@ -447,22 +450,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -505,6 +495,121 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteRegionBackendServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ backend_service: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified regional BackendService
+ resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteRegionBackendServiceRequest, dict]):
+ The request object. A request message for
+ RegionBackendServices.Delete. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_service (str):
+ Name of the BackendService resource
+ to delete.
+
+ This corresponds to the ``backend_service`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, backend_service])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteRegionBackendServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteRegionBackendServiceRequest):
+ request = compute.DeleteRegionBackendServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if backend_service is not None:
+ request.backend_service = backend_service
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetRegionBackendServiceRequest, dict] = None,
@@ -753,22 +858,99 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, backend_service_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionBackendServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionBackendServiceRequest):
+ request = compute.InsertRegionBackendServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if backend_service_resource is not None:
+ request.backend_service_resource = backend_service_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertRegionBackendServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ backend_service_resource: compute.BackendService = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a regional BackendService resource in the
+ specified project using the data included in the
+ request. For more information, see Backend services
+ overview.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionBackendServiceRequest, dict]):
+ The request object. A request message for
+ RegionBackendServices.Insert. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_service_resource (google.cloud.compute_v1.types.BackendService):
+ The body resource for this request
+ This corresponds to the ``backend_service_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -808,6 +990,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -958,22 +1165,112 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, backend_service, backend_service_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchRegionBackendServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchRegionBackendServiceRequest):
+ request = compute.PatchRegionBackendServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if backend_service is not None:
+ request.backend_service = backend_service
+ if backend_service_resource is not None:
+ request.backend_service_resource = backend_service_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch(
+ self,
+ request: Union[compute.PatchRegionBackendServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ backend_service: str = None,
+ backend_service_resource: compute.BackendService = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified regional BackendService
+ resource with the data included in the request. For more
+ information, see Understanding backend services This
+ method supports PATCH semantics and uses the JSON merge
+ patch format and processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchRegionBackendServiceRequest, dict]):
+ The request object. A request message for
+ RegionBackendServices.Patch. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_service (str):
+ Name of the BackendService resource
+ to patch.
+
+ This corresponds to the ``backend_service`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_service_resource (google.cloud.compute_v1.types.BackendService):
+ The body resource for this request
+ This corresponds to the ``backend_service_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1017,6 +1314,31 @@ def patch_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -1072,22 +1394,9 @@ def update_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1134,6 +1443,132 @@ def update_unary(
# Done; return the response.
return response
+ def update(
+ self,
+ request: Union[compute.UpdateRegionBackendServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ backend_service: str = None,
+ backend_service_resource: compute.BackendService = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified regional BackendService
+ resource with the data included in the request. For more
+ information, see Backend services overview .
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.UpdateRegionBackendServiceRequest, dict]):
+ The request object. A request message for
+ RegionBackendServices.Update. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_service (str):
+ Name of the BackendService resource
+ to update.
+
+ This corresponds to the ``backend_service`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ backend_service_resource (google.cloud.compute_v1.types.BackendService):
+ The body resource for this request
+ This corresponds to the ``backend_service_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, backend_service, backend_service_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.UpdateRegionBackendServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.UpdateRegionBackendServiceRequest):
+ request = compute.UpdateRegionBackendServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if backend_service is not None:
+ request.backend_service = backend_service
+ if backend_service_resource is not None:
+ request.backend_service_resource = backend_service_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.update]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/region_backend_services/transports/base.py b/google/cloud/compute_v1/services/region_backend_services/transports/base.py
index 3756f7197..71bb4d0ee 100644
--- a/google/cloud/compute_v1/services/region_backend_services/transports/base.py
+++ b/google/cloud/compute_v1/services/region_backend_services/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -235,5 +238,21 @@ def update(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionBackendServicesTransport",)
diff --git a/google/cloud/compute_v1/services/region_backend_services/transports/rest.py b/google/cloud/compute_v1/services/region_backend_services/transports/rest.py
index df06d91b2..23ff5c7b3 100644
--- a/google/cloud/compute_v1/services/region_backend_services/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_backend_services/transports/rest.py
@@ -1207,6 +1207,10 @@ def update(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_commitments/client.py b/google/cloud/compute_v1/services/region_commitments/client.py
index 6d5f66f70..5ea20d679 100644
--- a/google/cloud/compute_v1/services/region_commitments/client.py
+++ b/google/cloud/compute_v1/services/region_commitments/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_commitments import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionCommitmentsTransport, DEFAULT_CLIENT_INFO
@@ -617,22 +620,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -675,6 +665,117 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertRegionCommitmentRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ commitment_resource: compute.Commitment = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a commitment in the specified project using
+ the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionCommitmentRequest, dict]):
+ The request object. A request message for
+ RegionCommitments.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ commitment_resource (google.cloud.compute_v1.types.Commitment):
+ The body resource for this request
+ This corresponds to the ``commitment_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, commitment_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionCommitmentRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionCommitmentRequest):
+ request = compute.InsertRegionCommitmentRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if commitment_resource is not None:
+ request.commitment_resource = commitment_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListRegionCommitmentsRequest, dict] = None,
@@ -816,22 +917,107 @@ def update_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, commitment, commitment_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.UpdateRegionCommitmentRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.UpdateRegionCommitmentRequest):
+ request = compute.UpdateRegionCommitmentRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if commitment is not None:
+ request.commitment = commitment
+ if commitment_resource is not None:
+ request.commitment_resource = commitment_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.update]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def update(
+ self,
+ request: Union[compute.UpdateRegionCommitmentRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ commitment: str = None,
+ commitment_resource: compute.Commitment = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified commitment with the data included in the
+ request. Update is performed only on selected fields included as
+ part of update-mask. Only the following fields can be modified:
+ auto_renew.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.UpdateRegionCommitmentRequest, dict]):
+ The request object. A request message for
+ RegionCommitments.Update. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ commitment (str):
+ Name of the commitment for which auto
+ renew is being updated.
+
+ This corresponds to the ``commitment`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ commitment_resource (google.cloud.compute_v1.types.Commitment):
+ The body resource for this request
+ This corresponds to the ``commitment_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -873,6 +1059,31 @@ def update_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/region_commitments/transports/base.py b/google/cloud/compute_v1/services/region_commitments/transports/base.py
index 9de3ab268..8476ce024 100644
--- a/google/cloud/compute_v1/services/region_commitments/transports/base.py
+++ b/google/cloud/compute_v1/services/region_commitments/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -207,5 +210,21 @@ def update(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionCommitmentsTransport",)
diff --git a/google/cloud/compute_v1/services/region_commitments/transports/rest.py b/google/cloud/compute_v1/services/region_commitments/transports/rest.py
index dabbaa3f9..c3b53fd51 100644
--- a/google/cloud/compute_v1/services/region_commitments/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_commitments/transports/rest.py
@@ -889,6 +889,10 @@ def update(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_disk_types/client.py b/google/cloud/compute_v1/services/region_disk_types/client.py
index 6e21c70e2..f9c353e58 100644
--- a/google/cloud/compute_v1/services/region_disk_types/client.py
+++ b/google/cloud/compute_v1/services/region_disk_types/client.py
@@ -16,7 +16,7 @@
from collections import OrderedDict
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
diff --git a/google/cloud/compute_v1/services/region_disk_types/transports/base.py b/google/cloud/compute_v1/services/region_disk_types/transports/base.py
index b14adc21d..0339af72a 100644
--- a/google/cloud/compute_v1/services/region_disk_types/transports/base.py
+++ b/google/cloud/compute_v1/services/region_disk_types/transports/base.py
@@ -84,6 +84,7 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -163,5 +164,9 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
__all__ = ("RegionDiskTypesTransport",)
diff --git a/google/cloud/compute_v1/services/region_disk_types/transports/rest.py b/google/cloud/compute_v1/services/region_disk_types/transports/rest.py
index 1b11e20b1..864e96041 100644
--- a/google/cloud/compute_v1/services/region_disk_types/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_disk_types/transports/rest.py
@@ -443,6 +443,10 @@ def list(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_disks/client.py b/google/cloud/compute_v1/services/region_disks/client.py
index 9fddfbfac..2299dcf3e 100644
--- a/google/cloud/compute_v1/services/region_disks/client.py
+++ b/google/cloud/compute_v1/services/region_disks/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_disks import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionDisksTransport, DEFAULT_CLIENT_INFO
@@ -450,22 +453,9 @@ def add_resource_policies_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -514,49 +504,47 @@ def add_resource_policies_unary(
# Done; return the response.
return response
- def create_snapshot_unary(
+ def add_resource_policies(
self,
- request: Union[compute.CreateSnapshotRegionDiskRequest, dict] = None,
+ request: Union[compute.AddResourcePoliciesRegionDiskRequest, dict] = None,
*,
project: str = None,
region: str = None,
disk: str = None,
- snapshot_resource: compute.Snapshot = None,
+ region_disks_add_resource_policies_request_resource: compute.RegionDisksAddResourcePoliciesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Creates a snapshot of a specified persistent disk.
- For regular snapshot creation, consider using
- snapshots.insert instead, as that method supports more
- features, such as creating snapshots in a project
- different from the source disk project.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Adds existing resource policies to a regional disk.
+ You can only add one policy which will be applied to
+ this disk for scheduling snapshot creation.
Args:
- request (Union[google.cloud.compute_v1.types.CreateSnapshotRegionDiskRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.AddResourcePoliciesRegionDiskRequest, dict]):
The request object. A request message for
- RegionDisks.CreateSnapshot. See the method description
- for details.
+ RegionDisks.AddResourcePolicies. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
region (str):
- Name of the region for this request.
+ The name of the region for this
+ request.
+
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
disk (str):
- Name of the regional persistent disk
- to snapshot.
-
+ The disk name for this request.
This corresponds to the ``disk`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- snapshot_resource (google.cloud.compute_v1.types.Snapshot):
+ region_disks_add_resource_policies_request_resource (google.cloud.compute_v1.types.RegionDisksAddResourcePoliciesRequest):
The body resource for this request
- This corresponds to the ``snapshot_resource`` field
+ This corresponds to the ``region_disks_add_resource_policies_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -566,28 +554,17 @@ def create_snapshot_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, disk, snapshot_resource])
+ has_flattened_params = any(
+ [project, region, disk, region_disks_add_resource_policies_request_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -595,11 +572,11 @@ def create_snapshot_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.CreateSnapshotRegionDiskRequest.
+ # in a compute.AddResourcePoliciesRegionDiskRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.CreateSnapshotRegionDiskRequest):
- request = compute.CreateSnapshotRegionDiskRequest(request)
+ if not isinstance(request, compute.AddResourcePoliciesRegionDiskRequest):
+ request = compute.AddResourcePoliciesRegionDiskRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -608,12 +585,14 @@ def create_snapshot_unary(
request.region = region
if disk is not None:
request.disk = disk
- if snapshot_resource is not None:
- request.snapshot_resource = snapshot_resource
+ if region_disks_add_resource_policies_request_resource is not None:
+ request.region_disks_add_resource_policies_request_resource = (
+ region_disks_add_resource_policies_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.create_snapshot]
+ rpc = self._transport._wrapped_methods[self._transport.add_resource_policies]
# Send the request.
response = rpc(
@@ -623,31 +602,57 @@ def create_snapshot_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def delete_unary(
+ def create_snapshot_unary(
self,
- request: Union[compute.DeleteRegionDiskRequest, dict] = None,
+ request: Union[compute.CreateSnapshotRegionDiskRequest, dict] = None,
*,
project: str = None,
region: str = None,
disk: str = None,
+ snapshot_resource: compute.Snapshot = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Deletes the specified regional persistent disk.
- Deleting a regional disk removes all the replicas of its
- data permanently and is irreversible. However, deleting
- a disk does not delete any snapshots previously made
- from the disk. You must separately delete snapshots.
+ r"""Creates a snapshot of a specified persistent disk.
+ For regular snapshot creation, consider using
+ snapshots.insert instead, as that method supports more
+ features, such as creating snapshots in a project
+ different from the source disk project.
Args:
- request (Union[google.cloud.compute_v1.types.DeleteRegionDiskRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.CreateSnapshotRegionDiskRequest, dict]):
The request object. A request message for
- RegionDisks.Delete. See the method description for
- details.
+ RegionDisks.CreateSnapshot. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -660,11 +665,16 @@ def delete_unary(
should not be set.
disk (str):
Name of the regional persistent disk
- to delete.
+ to snapshot.
This corresponds to the ``disk`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ snapshot_resource (google.cloud.compute_v1.types.Snapshot):
+ The body resource for this request
+ This corresponds to the ``snapshot_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -672,28 +682,15 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, disk])
+ has_flattened_params = any([project, region, disk, snapshot_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -701,11 +698,11 @@ def delete_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.DeleteRegionDiskRequest.
+ # in a compute.CreateSnapshotRegionDiskRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.DeleteRegionDiskRequest):
- request = compute.DeleteRegionDiskRequest(request)
+ if not isinstance(request, compute.CreateSnapshotRegionDiskRequest):
+ request = compute.CreateSnapshotRegionDiskRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -714,10 +711,12 @@ def delete_unary(
request.region = region
if disk is not None:
request.disk = disk
+ if snapshot_resource is not None:
+ request.snapshot_resource = snapshot_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.delete]
+ rpc = self._transport._wrapped_methods[self._transport.create_snapshot]
# Send the request.
response = rpc(
@@ -730,23 +729,29 @@ def delete_unary(
# Done; return the response.
return response
- def get(
+ def create_snapshot(
self,
- request: Union[compute.GetRegionDiskRequest, dict] = None,
+ request: Union[compute.CreateSnapshotRegionDiskRequest, dict] = None,
*,
project: str = None,
region: str = None,
disk: str = None,
+ snapshot_resource: compute.Snapshot = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Disk:
- r"""Returns a specified regional persistent disk.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a snapshot of a specified persistent disk.
+ For regular snapshot creation, consider using
+ snapshots.insert instead, as that method supports more
+ features, such as creating snapshots in a project
+ different from the source disk project.
Args:
- request (Union[google.cloud.compute_v1.types.GetRegionDiskRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.CreateSnapshotRegionDiskRequest, dict]):
The request object. A request message for
- RegionDisks.Get. See the method description for details.
+ RegionDisks.CreateSnapshot. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -759,11 +764,16 @@ def get(
should not be set.
disk (str):
Name of the regional persistent disk
- to return.
+ to snapshot.
This corresponds to the ``disk`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ snapshot_resource (google.cloud.compute_v1.types.Snapshot):
+ The body resource for this request
+ This corresponds to the ``snapshot_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -771,25 +781,15 @@ def get(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Disk:
- Represents a Persistent Disk resource. Google Compute
- Engine has two Disk resources: \*
- [Zonal](/compute/docs/reference/rest/v1/disks) \*
- [Regional](/compute/docs/reference/rest/v1/regionDisks)
- Persistent disks are required for running your VM
- instances. Create both boot and non-boot (data)
- persistent disks. For more information, read Persistent
- Disks. For more storage options, read Storage options.
- The disks resource represents a zonal persistent disk.
- For more information, read Zonal persistent disks. The
- regionDisks resource represents a regional persistent
- disk. For more information, read Regional resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, disk])
+ has_flattened_params = any([project, region, disk, snapshot_resource])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -797,11 +797,11 @@ def get(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetRegionDiskRequest.
+ # in a compute.CreateSnapshotRegionDiskRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetRegionDiskRequest):
- request = compute.GetRegionDiskRequest(request)
+ if not isinstance(request, compute.CreateSnapshotRegionDiskRequest):
+ request = compute.CreateSnapshotRegionDiskRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -810,10 +810,12 @@ def get(
request.region = region
if disk is not None:
request.disk = disk
+ if snapshot_resource is not None:
+ request.snapshot_resource = snapshot_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get]
+ rpc = self._transport._wrapped_methods[self._transport.create_snapshot]
# Send the request.
response = rpc(
@@ -823,27 +825,55 @@ def get(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def get_iam_policy(
+ def delete_unary(
self,
- request: Union[compute.GetIamPolicyRegionDiskRequest, dict] = None,
+ request: Union[compute.DeleteRegionDiskRequest, dict] = None,
*,
project: str = None,
region: str = None,
- resource: str = None,
+ disk: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Policy:
- r"""Gets the access control policy for a resource. May be
- empty if no such policy or resource exists.
+ ) -> compute.Operation:
+ r"""Deletes the specified regional persistent disk.
+ Deleting a regional disk removes all the replicas of its
+ data permanently and is irreversible. However, deleting
+ a disk does not delete any snapshots previously made
+ from the disk. You must separately delete snapshots.
Args:
- request (Union[google.cloud.compute_v1.types.GetIamPolicyRegionDiskRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteRegionDiskRequest, dict]):
The request object. A request message for
- RegionDisks.GetIamPolicy. See the method description for
+ RegionDisks.Delete. See the method description for
details.
project (str):
Project ID for this request.
@@ -851,17 +881,15 @@ def get_iam_policy(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
region (str):
- The name of the region for this
- request.
-
+ Name of the region for this request.
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- resource (str):
- Name or id of the resource for this
- request.
+ disk (str):
+ Name of the regional persistent disk
+ to delete.
- This corresponds to the ``resource`` field
+ This corresponds to the ``disk`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -871,53 +899,15 @@ def get_iam_policy(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Policy:
- An Identity and Access Management (IAM) policy, which
- specifies access controls for Google Cloud resources. A
- Policy is a collection of bindings. A binding binds one
- or more members, or principals, to a single role.
- Principals can be user accounts, service accounts,
- Google groups, and domains (such as G Suite). A role is
- a named list of permissions; each role can be an IAM
- predefined role or a user-created custom role. For some
- types of Google Cloud resources, a binding can also
- specify a condition, which is a logical expression that
- allows access to a resource only if the expression
- evaluates to true. A condition can add constraints based
- on attributes of the request, the resource, or both. To
- learn which resources support conditions in their IAM
- policies, see the [IAM
- documentation](\ https://cloud.google.com/iam/help/conditions/resource-policies).
- **JSON example:** { "bindings": [ { "role":
- "roles/resourcemanager.organizationAdmin", "members": [
- "user:mike@example.com", "group:admins@example.com",
- "domain:google.com",
- "serviceAccount:my-project-id@appspot.gserviceaccount.com"
- ] }, { "role":
- "roles/resourcemanager.organizationViewer", "members": [
- "user:eve@example.com" ], "condition": { "title":
- "expirable access", "description": "Does not grant
- access after Sep 2020", "expression": "request.time <
- timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
- "BwWWja0YfJA=", "version": 3 } **YAML example:**
- bindings: - members: - user:\ mike@example.com -
- group:\ admins@example.com - domain:google.com -
- serviceAccount:\ my-project-id@appspot.gserviceaccount.com
- role: roles/resourcemanager.organizationAdmin - members:
- - user:\ eve@example.com role:
- roles/resourcemanager.organizationViewer condition:
- title: expirable access description: Does not grant
- access after Sep 2020 expression: request.time <
- timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
- version: 3 For a description of IAM and its features,
- see the [IAM
- documentation](\ https://cloud.google.com/iam/docs/).
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, resource])
+ has_flattened_params = any([project, region, disk])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -925,23 +915,23 @@ def get_iam_policy(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetIamPolicyRegionDiskRequest.
+ # in a compute.DeleteRegionDiskRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetIamPolicyRegionDiskRequest):
- request = compute.GetIamPolicyRegionDiskRequest(request)
+ if not isinstance(request, compute.DeleteRegionDiskRequest):
+ request = compute.DeleteRegionDiskRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if region is not None:
request.region = region
- if resource is not None:
- request.resource = resource
+ if disk is not None:
+ request.disk = disk
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_iam_policy]
+ rpc = self._transport._wrapped_methods[self._transport.delete]
# Send the request.
response = rpc(
@@ -954,24 +944,27 @@ def get_iam_policy(
# Done; return the response.
return response
- def insert_unary(
+ def delete(
self,
- request: Union[compute.InsertRegionDiskRequest, dict] = None,
+ request: Union[compute.DeleteRegionDiskRequest, dict] = None,
*,
project: str = None,
region: str = None,
- disk_resource: compute.Disk = None,
+ disk: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Creates a persistent regional disk in the specified
- project using the data included in the request.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified regional persistent disk.
+ Deleting a regional disk removes all the replicas of its
+ data permanently and is irreversible. However, deleting
+ a disk does not delete any snapshots previously made
+ from the disk. You must separately delete snapshots.
Args:
- request (Union[google.cloud.compute_v1.types.InsertRegionDiskRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteRegionDiskRequest, dict]):
The request object. A request message for
- RegionDisks.Insert. See the method description for
+ RegionDisks.Delete. See the method description for
details.
project (str):
Project ID for this request.
@@ -979,13 +972,643 @@ def insert_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
region (str):
- Name of the region for this request.
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ disk (str):
+ Name of the regional persistent disk
+ to delete.
+
+ This corresponds to the ``disk`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, disk])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteRegionDiskRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteRegionDiskRequest):
+ request = compute.DeleteRegionDiskRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if disk is not None:
+ request.disk = disk
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def get(
+ self,
+ request: Union[compute.GetRegionDiskRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ disk: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Disk:
+ r"""Returns a specified regional persistent disk.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetRegionDiskRequest, dict]):
+ The request object. A request message for
+ RegionDisks.Get. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ disk (str):
+ Name of the regional persistent disk
+ to return.
+
+ This corresponds to the ``disk`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.Disk:
+ Represents a Persistent Disk resource. Google Compute
+ Engine has two Disk resources: \*
+ [Zonal](/compute/docs/reference/rest/v1/disks) \*
+ [Regional](/compute/docs/reference/rest/v1/regionDisks)
+ Persistent disks are required for running your VM
+ instances. Create both boot and non-boot (data)
+ persistent disks. For more information, read Persistent
+ Disks. For more storage options, read Storage options.
+ The disks resource represents a zonal persistent disk.
+ For more information, read Zonal persistent disks. The
+ regionDisks resource represents a regional persistent
+ disk. For more information, read Regional resources.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, disk])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetRegionDiskRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetRegionDiskRequest):
+ request = compute.GetRegionDiskRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if disk is not None:
+ request.disk = disk
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_iam_policy(
+ self,
+ request: Union[compute.GetIamPolicyRegionDiskRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ resource: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Policy:
+ r"""Gets the access control policy for a resource. May be
+ empty if no such policy or resource exists.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetIamPolicyRegionDiskRequest, dict]):
+ The request object. A request message for
+ RegionDisks.GetIamPolicy. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ The name of the region for this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.Policy:
+ An Identity and Access Management (IAM) policy, which
+ specifies access controls for Google Cloud resources. A
+ Policy is a collection of bindings. A binding binds one
+ or more members, or principals, to a single role.
+ Principals can be user accounts, service accounts,
+ Google groups, and domains (such as G Suite). A role is
+ a named list of permissions; each role can be an IAM
+ predefined role or a user-created custom role. For some
+ types of Google Cloud resources, a binding can also
+ specify a condition, which is a logical expression that
+ allows access to a resource only if the expression
+ evaluates to true. A condition can add constraints based
+ on attributes of the request, the resource, or both. To
+ learn which resources support conditions in their IAM
+ policies, see the [IAM
+ documentation](\ https://cloud.google.com/iam/help/conditions/resource-policies).
+ **JSON example:** { "bindings": [ { "role":
+ "roles/resourcemanager.organizationAdmin", "members": [
+ "user:mike@example.com", "group:admins@example.com",
+ "domain:google.com",
+ "serviceAccount:my-project-id@appspot.gserviceaccount.com"
+ ] }, { "role":
+ "roles/resourcemanager.organizationViewer", "members": [
+ "user:eve@example.com" ], "condition": { "title":
+ "expirable access", "description": "Does not grant
+ access after Sep 2020", "expression": "request.time <
+ timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
+ "BwWWja0YfJA=", "version": 3 } **YAML example:**
+ bindings: - members: - user:\ mike@example.com -
+ group:\ admins@example.com - domain:google.com -
+ serviceAccount:\ my-project-id@appspot.gserviceaccount.com
+ role: roles/resourcemanager.organizationAdmin - members:
+ - user:\ eve@example.com role:
+ roles/resourcemanager.organizationViewer condition:
+ title: expirable access description: Does not grant
+ access after Sep 2020 expression: request.time <
+ timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
+ version: 3 For a description of IAM and its features,
+ see the [IAM
+ documentation](\ https://cloud.google.com/iam/docs/).
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetIamPolicyRegionDiskRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetIamPolicyRegionDiskRequest):
+ request = compute.GetIamPolicyRegionDiskRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if resource is not None:
+ request.resource = resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_iam_policy]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert_unary(
+ self,
+ request: Union[compute.InsertRegionDiskRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ disk_resource: compute.Disk = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Creates a persistent regional disk in the specified
+ project using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionDiskRequest, dict]):
+ The request object. A request message for
+ RegionDisks.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ disk_resource (google.cloud.compute_v1.types.Disk):
+ The body resource for this request
+ This corresponds to the ``disk_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, disk_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionDiskRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionDiskRequest):
+ request = compute.InsertRegionDiskRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if disk_resource is not None:
+ request.disk_resource = disk_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertRegionDiskRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ disk_resource: compute.Disk = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a persistent regional disk in the specified
+ project using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionDiskRequest, dict]):
+ The request object. A request message for
+ RegionDisks.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ disk_resource (google.cloud.compute_v1.types.Disk):
+ The body resource for this request
+ This corresponds to the ``disk_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, disk_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionDiskRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionDiskRequest):
+ request = compute.InsertRegionDiskRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if disk_resource is not None:
+ request.disk_resource = disk_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def list(
+ self,
+ request: Union[compute.ListRegionDisksRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListPager:
+ r"""Retrieves the list of persistent disks contained
+ within the specified region.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListRegionDisksRequest, dict]):
+ The request object. A request message for
+ RegionDisks.List. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.region_disks.pagers.ListPager:
+ A list of Disk resources.
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListRegionDisksRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ListRegionDisksRequest):
+ request = compute.ListRegionDisksRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def remove_resource_policies_unary(
+ self,
+ request: Union[compute.RemoveResourcePoliciesRegionDiskRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ disk: str = None,
+ region_disks_remove_resource_policies_request_resource: compute.RegionDisksRemoveResourcePoliciesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Removes resource policies from a regional disk.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.RemoveResourcePoliciesRegionDiskRequest, dict]):
+ The request object. A request message for
+ RegionDisks.RemoveResourcePolicies. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ The name of the region for this
+ request.
+
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- disk_resource (google.cloud.compute_v1.types.Disk):
+ disk (str):
+ The disk name for this request.
+ This corresponds to the ``disk`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region_disks_remove_resource_policies_request_resource (google.cloud.compute_v1.types.RegionDisksRemoveResourcePoliciesRequest):
The body resource for this request
- This corresponds to the ``disk_resource`` field
+ This corresponds to the ``region_disks_remove_resource_policies_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -995,28 +1618,22 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, disk_resource])
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ disk,
+ region_disks_remove_resource_policies_request_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1024,23 +1641,27 @@ def insert_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.InsertRegionDiskRequest.
+ # in a compute.RemoveResourcePoliciesRegionDiskRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.InsertRegionDiskRequest):
- request = compute.InsertRegionDiskRequest(request)
+ if not isinstance(request, compute.RemoveResourcePoliciesRegionDiskRequest):
+ request = compute.RemoveResourcePoliciesRegionDiskRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if region is not None:
request.region = region
- if disk_resource is not None:
- request.disk_resource = disk_resource
+ if disk is not None:
+ request.disk = disk
+ if region_disks_remove_resource_policies_request_resource is not None:
+ request.region_disks_remove_resource_policies_request_resource = (
+ region_disks_remove_resource_policies_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.insert]
+ rpc = self._transport._wrapped_methods[self._transport.remove_resource_policies]
# Send the request.
response = rpc(
@@ -1053,34 +1674,47 @@ def insert_unary(
# Done; return the response.
return response
- def list(
+ def remove_resource_policies(
self,
- request: Union[compute.ListRegionDisksRequest, dict] = None,
+ request: Union[compute.RemoveResourcePoliciesRegionDiskRequest, dict] = None,
*,
project: str = None,
region: str = None,
+ disk: str = None,
+ region_disks_remove_resource_policies_request_resource: compute.RegionDisksRemoveResourcePoliciesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListPager:
- r"""Retrieves the list of persistent disks contained
- within the specified region.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Removes resource policies from a regional disk.
Args:
- request (Union[google.cloud.compute_v1.types.ListRegionDisksRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.RemoveResourcePoliciesRegionDiskRequest, dict]):
The request object. A request message for
- RegionDisks.List. See the method description for
- details.
+ RegionDisks.RemoveResourcePolicies. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
region (str):
- Name of the region for this request.
+ The name of the region for this
+ request.
+
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ disk (str):
+ The disk name for this request.
+ This corresponds to the ``disk`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region_disks_remove_resource_policies_request_resource (google.cloud.compute_v1.types.RegionDisksRemoveResourcePoliciesRequest):
+ The body resource for this request
+ This corresponds to the ``region_disks_remove_resource_policies_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1088,17 +1722,22 @@ def list(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.region_disks.pagers.ListPager:
- A list of Disk resources.
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region])
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ disk,
+ region_disks_remove_resource_policies_request_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1106,21 +1745,27 @@ def list(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListRegionDisksRequest.
+ # in a compute.RemoveResourcePoliciesRegionDiskRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ListRegionDisksRequest):
- request = compute.ListRegionDisksRequest(request)
+ if not isinstance(request, compute.RemoveResourcePoliciesRegionDiskRequest):
+ request = compute.RemoveResourcePoliciesRegionDiskRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if region is not None:
request.region = region
+ if disk is not None:
+ request.disk = disk
+ if region_disks_remove_resource_policies_request_resource is not None:
+ request.region_disks_remove_resource_policies_request_resource = (
+ region_disks_remove_resource_policies_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list]
+ rpc = self._transport._wrapped_methods[self._transport.remove_resource_policies]
# Send the request.
response = rpc(
@@ -1130,57 +1775,71 @@ def list(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
# Done; return the response.
return response
- def remove_resource_policies_unary(
+ def resize_unary(
self,
- request: Union[compute.RemoveResourcePoliciesRegionDiskRequest, dict] = None,
+ request: Union[compute.ResizeRegionDiskRequest, dict] = None,
*,
project: str = None,
region: str = None,
disk: str = None,
- region_disks_remove_resource_policies_request_resource: compute.RegionDisksRemoveResourcePoliciesRequest = None,
+ region_disks_resize_request_resource: compute.RegionDisksResizeRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Removes resource policies from a regional disk.
+ r"""Resizes the specified regional persistent disk.
Args:
- request (Union[google.cloud.compute_v1.types.RemoveResourcePoliciesRegionDiskRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.ResizeRegionDiskRequest, dict]):
The request object. A request message for
- RegionDisks.RemoveResourcePolicies. See the method
- description for details.
+ RegionDisks.Resize. See the method description for
+ details.
project (str):
- Project ID for this request.
+ The project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
region (str):
- The name of the region for this
- request.
-
+ Name of the region for this request.
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
disk (str):
- The disk name for this request.
+ Name of the regional persistent disk.
This corresponds to the ``disk`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- region_disks_remove_resource_policies_request_resource (google.cloud.compute_v1.types.RegionDisksRemoveResourcePoliciesRequest):
+ region_disks_resize_request_resource (google.cloud.compute_v1.types.RegionDisksResizeRequest):
The body resource for this request
- This corresponds to the ``region_disks_remove_resource_policies_request_resource`` field
+ This corresponds to the ``region_disks_resize_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1190,34 +1849,16 @@ def remove_resource_policies_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
has_flattened_params = any(
- [
- project,
- region,
- disk,
- region_disks_remove_resource_policies_request_resource,
- ]
+ [project, region, disk, region_disks_resize_request_resource]
)
if request is not None and has_flattened_params:
raise ValueError(
@@ -1226,11 +1867,11 @@ def remove_resource_policies_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.RemoveResourcePoliciesRegionDiskRequest.
+ # in a compute.ResizeRegionDiskRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.RemoveResourcePoliciesRegionDiskRequest):
- request = compute.RemoveResourcePoliciesRegionDiskRequest(request)
+ if not isinstance(request, compute.ResizeRegionDiskRequest):
+ request = compute.ResizeRegionDiskRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1239,14 +1880,14 @@ def remove_resource_policies_unary(
request.region = region
if disk is not None:
request.disk = disk
- if region_disks_remove_resource_policies_request_resource is not None:
- request.region_disks_remove_resource_policies_request_resource = (
- region_disks_remove_resource_policies_request_resource
+ if region_disks_resize_request_resource is not None:
+ request.region_disks_resize_request_resource = (
+ region_disks_resize_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.remove_resource_policies]
+ rpc = self._transport._wrapped_methods[self._transport.resize]
# Send the request.
response = rpc(
@@ -1259,7 +1900,7 @@ def remove_resource_policies_unary(
# Done; return the response.
return response
- def resize_unary(
+ def resize(
self,
request: Union[compute.ResizeRegionDiskRequest, dict] = None,
*,
@@ -1270,7 +1911,7 @@ def resize_unary(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
+ ) -> extended_operation.ExtendedOperation:
r"""Resizes the specified regional persistent disk.
Args:
@@ -1305,22 +1946,9 @@ def resize_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1366,6 +1994,31 @@ def resize_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -1557,22 +2210,108 @@ def set_labels_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, resource, region_set_labels_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetLabelsRegionDiskRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetLabelsRegionDiskRequest):
+ request = compute.SetLabelsRegionDiskRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if resource is not None:
+ request.resource = resource
+ if region_set_labels_request_resource is not None:
+ request.region_set_labels_request_resource = (
+ region_set_labels_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_labels]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_labels(
+ self,
+ request: Union[compute.SetLabelsRegionDiskRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ resource: str = None,
+ region_set_labels_request_resource: compute.RegionSetLabelsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the labels on the target regional disk.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetLabelsRegionDiskRequest, dict]):
+ The request object. A request message for
+ RegionDisks.SetLabels. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ The region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest):
+ The body resource for this request
+ This corresponds to the ``region_set_labels_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1618,6 +2357,31 @@ def set_labels_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/region_disks/transports/base.py b/google/cloud/compute_v1/services/region_disks/transports/base.py
index d605c49f1..144a4051c 100644
--- a/google/cloud/compute_v1/services/region_disks/transports/base.py
+++ b/google/cloud/compute_v1/services/region_disks/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -303,5 +306,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionDisksTransport",)
diff --git a/google/cloud/compute_v1/services/region_disks/transports/rest.py b/google/cloud/compute_v1/services/region_disks/transports/rest.py
index e837c5a43..213b1e1bf 100644
--- a/google/cloud/compute_v1/services/region_disks/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_disks/transports/rest.py
@@ -2006,6 +2006,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_health_check_services/client.py b/google/cloud/compute_v1/services/region_health_check_services/client.py
index e95e5c052..6b78dc59e 100644
--- a/google/cloud/compute_v1/services/region_health_check_services/client.py
+++ b/google/cloud/compute_v1/services/region_health_check_services/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_health_check_services import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionHealthCheckServicesTransport, DEFAULT_CLIENT_INFO
@@ -447,22 +450,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -505,6 +495,121 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteRegionHealthCheckServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ health_check_service: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified regional HealthCheckService.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteRegionHealthCheckServiceRequest, dict]):
+ The request object. A request message for
+ RegionHealthCheckServices.Delete. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check_service (str):
+ Name of the HealthCheckService to
+ delete. The name must be 1-63 characters
+ long, and comply with RFC1035.
+
+ This corresponds to the ``health_check_service`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, health_check_service])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteRegionHealthCheckServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteRegionHealthCheckServiceRequest):
+ request = compute.DeleteRegionHealthCheckServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if health_check_service is not None:
+ request.health_check_service = health_check_service
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetRegionHealthCheckServiceRequest, dict] = None,
@@ -640,22 +745,98 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, health_check_service_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionHealthCheckServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionHealthCheckServiceRequest):
+ request = compute.InsertRegionHealthCheckServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if health_check_service_resource is not None:
+ request.health_check_service_resource = health_check_service_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertRegionHealthCheckServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ health_check_service_resource: compute.HealthCheckService = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a regional HealthCheckService resource in the
+ specified project and region using the data included in
+ the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionHealthCheckServiceRequest, dict]):
+ The request object. A request message for
+ RegionHealthCheckServices.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check_service_resource (google.cloud.compute_v1.types.HealthCheckService):
+ The body resource for this request
+ This corresponds to the ``health_check_service_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -695,6 +876,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -843,22 +1049,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -905,6 +1098,134 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchRegionHealthCheckServiceRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ health_check_service: str = None,
+ health_check_service_resource: compute.HealthCheckService = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified regional HealthCheckService
+ resource with the data included in the request. This
+ method supports PATCH semantics and uses the JSON merge
+ patch format and processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchRegionHealthCheckServiceRequest, dict]):
+ The request object. A request message for
+ RegionHealthCheckServices.Patch. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check_service (str):
+ Name of the HealthCheckService to
+ update. The name must be 1-63 characters
+ long, and comply with RFC1035.
+
+ This corresponds to the ``health_check_service`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check_service_resource (google.cloud.compute_v1.types.HealthCheckService):
+ The body resource for this request
+ This corresponds to the ``health_check_service_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, health_check_service, health_check_service_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchRegionHealthCheckServiceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchRegionHealthCheckServiceRequest):
+ request = compute.PatchRegionHealthCheckServiceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if health_check_service is not None:
+ request.health_check_service = health_check_service
+ if health_check_service_resource is not None:
+ request.health_check_service_resource = health_check_service_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/region_health_check_services/transports/base.py b/google/cloud/compute_v1/services/region_health_check_services/transports/base.py
index b8b9164f9..a28844ccd 100644
--- a/google/cloud/compute_v1/services/region_health_check_services/transports/base.py
+++ b/google/cloud/compute_v1/services/region_health_check_services/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -206,5 +209,21 @@ def patch(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionHealthCheckServicesTransport",)
diff --git a/google/cloud/compute_v1/services/region_health_check_services/transports/rest.py b/google/cloud/compute_v1/services/region_health_check_services/transports/rest.py
index 318579743..74caab092 100644
--- a/google/cloud/compute_v1/services/region_health_check_services/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_health_check_services/transports/rest.py
@@ -908,6 +908,10 @@ def patch(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_health_checks/client.py b/google/cloud/compute_v1/services/region_health_checks/client.py
index b28b09d15..129a23c0b 100644
--- a/google/cloud/compute_v1/services/region_health_checks/client.py
+++ b/google/cloud/compute_v1/services/region_health_checks/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_health_checks import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionHealthChecksTransport, DEFAULT_CLIENT_INFO
@@ -446,22 +449,98 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, health_check])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteRegionHealthCheckRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteRegionHealthCheckRequest):
+ request = compute.DeleteRegionHealthCheckRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if health_check is not None:
+ request.health_check = health_check
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def delete(
+ self,
+ request: Union[compute.DeleteRegionHealthCheckRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ health_check: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified HealthCheck resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteRegionHealthCheckRequest, dict]):
+ The request object. A request message for
+ RegionHealthChecks.Delete. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check (str):
+ Name of the HealthCheck resource to
+ delete.
+
+ This corresponds to the ``health_check`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -501,6 +580,31 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -655,22 +759,97 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, health_check_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionHealthCheckRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionHealthCheckRequest):
+ request = compute.InsertRegionHealthCheckRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if health_check_resource is not None:
+ request.health_check_resource = health_check_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertRegionHealthCheckRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ health_check_resource: compute.HealthCheck = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a HealthCheck resource in the specified
+ project using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionHealthCheckRequest, dict]):
+ The request object. A request message for
+ RegionHealthChecks.Insert. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check_resource (google.cloud.compute_v1.types.HealthCheck):
+ The body resource for this request
+ This corresponds to the ``health_check_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -710,6 +889,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -858,22 +1062,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -920,6 +1111,133 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchRegionHealthCheckRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ health_check: str = None,
+ health_check_resource: compute.HealthCheck = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates a HealthCheck resource in the specified
+ project using the data included in the request. This
+ method supports PATCH semantics and uses the JSON merge
+ patch format and processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchRegionHealthCheckRequest, dict]):
+ The request object. A request message for
+ RegionHealthChecks.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check (str):
+ Name of the HealthCheck resource to
+ patch.
+
+ This corresponds to the ``health_check`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check_resource (google.cloud.compute_v1.types.HealthCheck):
+ The body resource for this request
+ This corresponds to the ``health_check_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, health_check, health_check_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchRegionHealthCheckRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchRegionHealthCheckRequest):
+ request = compute.PatchRegionHealthCheckRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if health_check is not None:
+ request.health_check = health_check
+ if health_check_resource is not None:
+ request.health_check_resource = health_check_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def update_unary(
self,
request: Union[compute.UpdateRegionHealthCheckRequest, dict] = None,
@@ -971,22 +1289,9 @@ def update_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1033,6 +1338,131 @@ def update_unary(
# Done; return the response.
return response
+ def update(
+ self,
+ request: Union[compute.UpdateRegionHealthCheckRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ health_check: str = None,
+ health_check_resource: compute.HealthCheck = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates a HealthCheck resource in the specified
+ project using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.UpdateRegionHealthCheckRequest, dict]):
+ The request object. A request message for
+ RegionHealthChecks.Update. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check (str):
+ Name of the HealthCheck resource to
+ update.
+
+ This corresponds to the ``health_check`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ health_check_resource (google.cloud.compute_v1.types.HealthCheck):
+ The body resource for this request
+ This corresponds to the ``health_check_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, health_check, health_check_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.UpdateRegionHealthCheckRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.UpdateRegionHealthCheckRequest):
+ request = compute.UpdateRegionHealthCheckRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if health_check is not None:
+ request.health_check = health_check
+ if health_check_resource is not None:
+ request.health_check_resource = health_check_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.update]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/region_health_checks/transports/base.py b/google/cloud/compute_v1/services/region_health_checks/transports/base.py
index 282f49ffe..f65954e41 100644
--- a/google/cloud/compute_v1/services/region_health_checks/transports/base.py
+++ b/google/cloud/compute_v1/services/region_health_checks/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -218,5 +221,21 @@ def update(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionHealthChecksTransport",)
diff --git a/google/cloud/compute_v1/services/region_health_checks/transports/rest.py b/google/cloud/compute_v1/services/region_health_checks/transports/rest.py
index db0b80e76..d477cf490 100644
--- a/google/cloud/compute_v1/services/region_health_checks/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_health_checks/transports/rest.py
@@ -1062,6 +1062,10 @@ def update(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_instance_group_managers/client.py b/google/cloud/compute_v1/services/region_instance_group_managers/client.py
index dec49f4d4..8be61bc4c 100644
--- a/google/cloud/compute_v1/services/region_instance_group_managers/client.py
+++ b/google/cloud/compute_v1/services/region_instance_group_managers/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_instance_group_managers import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionInstanceGroupManagersTransport, DEFAULT_CLIENT_INFO
@@ -469,22 +472,9 @@ def abandon_instances_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -543,28 +533,42 @@ def abandon_instances_unary(
# Done; return the response.
return response
- def apply_updates_to_instances_unary(
+ def abandon_instances(
self,
request: Union[
- compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest, dict
+ compute.AbandonInstancesRegionInstanceGroupManagerRequest, dict
] = None,
*,
project: str = None,
region: str = None,
instance_group_manager: str = None,
- region_instance_group_managers_apply_updates_request_resource: compute.RegionInstanceGroupManagersApplyUpdatesRequest = None,
+ region_instance_group_managers_abandon_instances_request_resource: compute.RegionInstanceGroupManagersAbandonInstancesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Apply updates to selected instances the managed
- instance group.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Flags the specified instances to be immediately
+ removed from the managed instance group. Abandoning an
+ instance does not delete the instance, but it does
+ remove the instance from any target pools that are
+ applied by the managed instance group. This method
+ reduces the targetSize of the managed instance group by
+ the number of instances that you abandon. This operation
+ is marked as DONE when the action is scheduled even if
+ the instances have not yet been removed from the group.
+ You must separately verify the status of the abandoning
+ action with the listmanagedinstances method. If the
+ group is part of a backend service that has enabled
+ connection draining, it can take up to 60 seconds after
+ the connection draining duration has elapsed before the
+ VM instance is removed or deleted. You can specify a
+ maximum of 1000 instances with this method per request.
Args:
- request (Union[google.cloud.compute_v1.types.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.AbandonInstancesRegionInstanceGroupManagerRequest, dict]):
The request object. A request message for
- RegionInstanceGroupManagers.ApplyUpdatesToInstances. See
- the method description for details.
+ RegionInstanceGroupManagers.AbandonInstances. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -572,21 +576,19 @@ def apply_updates_to_instances_unary(
should not be set.
region (str):
Name of the region scoping this
- request, should conform to RFC1035.
+ request.
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
- The name of the managed instance
- group, should conform to RFC1035.
-
+ Name of the managed instance group.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- region_instance_group_managers_apply_updates_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersApplyUpdatesRequest):
+ region_instance_group_managers_abandon_instances_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersAbandonInstancesRequest):
The body resource for this request
- This corresponds to the ``region_instance_group_managers_apply_updates_request_resource`` field
+ This corresponds to the ``region_instance_group_managers_abandon_instances_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -596,22 +598,9 @@ def apply_updates_to_instances_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -622,7 +611,7 @@ def apply_updates_to_instances_unary(
project,
region,
instance_group_manager,
- region_instance_group_managers_apply_updates_request_resource,
+ region_instance_group_managers_abandon_instances_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -632,15 +621,13 @@ def apply_updates_to_instances_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest.
+ # in a compute.AbandonInstancesRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest
+ request, compute.AbandonInstancesRegionInstanceGroupManagerRequest
):
- request = compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest(
- request
- )
+ request = compute.AbandonInstancesRegionInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -650,18 +637,16 @@ def apply_updates_to_instances_unary(
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
if (
- region_instance_group_managers_apply_updates_request_resource
+ region_instance_group_managers_abandon_instances_request_resource
is not None
):
- request.region_instance_group_managers_apply_updates_request_resource = (
- region_instance_group_managers_apply_updates_request_resource
+ request.region_instance_group_managers_abandon_instances_request_resource = (
+ region_instance_group_managers_abandon_instances_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[
- self._transport.apply_updates_to_instances
- ]
+ rpc = self._transport._wrapped_methods[self._transport.abandon_instances]
# Send the request.
response = rpc(
@@ -671,60 +656,78 @@ def apply_updates_to_instances_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def create_instances_unary(
+ def apply_updates_to_instances_unary(
self,
request: Union[
- compute.CreateInstancesRegionInstanceGroupManagerRequest, dict
+ compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest, dict
] = None,
*,
project: str = None,
region: str = None,
instance_group_manager: str = None,
- region_instance_group_managers_create_instances_request_resource: compute.RegionInstanceGroupManagersCreateInstancesRequest = None,
+ region_instance_group_managers_apply_updates_request_resource: compute.RegionInstanceGroupManagersApplyUpdatesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Creates instances with per-instance configs in this
- regional managed instance group. Instances are created
- using the current instance template. The create
- instances operation is marked DONE if the
- createInstances request is successful. The underlying
- actions take additional time. You must separately verify
- the status of the creating or actions with the
- listmanagedinstances method.
+ r"""Apply updates to selected instances the managed
+ instance group.
Args:
- request (Union[google.cloud.compute_v1.types.CreateInstancesRegionInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest, dict]):
The request object. A request message for
- RegionInstanceGroupManagers.CreateInstances. See the
- method description for details.
+ RegionInstanceGroupManagers.ApplyUpdatesToInstances. See
+ the method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
region (str):
- The name of the region where the
- managed instance group is located. It
- should conform to RFC1035.
+ Name of the region scoping this
+ request, should conform to RFC1035.
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
The name of the managed instance
- group. It should conform to RFC1035.
+ group, should conform to RFC1035.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- region_instance_group_managers_create_instances_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersCreateInstancesRequest):
+ region_instance_group_managers_apply_updates_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersApplyUpdatesRequest):
The body resource for this request
- This corresponds to the ``region_instance_group_managers_create_instances_request_resource`` field
+ This corresponds to the ``region_instance_group_managers_apply_updates_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -734,22 +737,9 @@ def create_instances_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -760,7 +750,7 @@ def create_instances_unary(
project,
region,
instance_group_manager,
- region_instance_group_managers_create_instances_request_resource,
+ region_instance_group_managers_apply_updates_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -770,13 +760,15 @@ def create_instances_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.CreateInstancesRegionInstanceGroupManagerRequest.
+ # in a compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.CreateInstancesRegionInstanceGroupManagerRequest
+ request, compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest
):
- request = compute.CreateInstancesRegionInstanceGroupManagerRequest(request)
+ request = compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest(
+ request
+ )
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -786,16 +778,18 @@ def create_instances_unary(
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
if (
- region_instance_group_managers_create_instances_request_resource
+ region_instance_group_managers_apply_updates_request_resource
is not None
):
- request.region_instance_group_managers_create_instances_request_resource = (
- region_instance_group_managers_create_instances_request_resource
+ request.region_instance_group_managers_apply_updates_request_resource = (
+ region_instance_group_managers_apply_updates_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.create_instances]
+ rpc = self._transport._wrapped_methods[
+ self._transport.apply_updates_to_instances
+ ]
# Send the request.
response = rpc(
@@ -808,25 +802,28 @@ def create_instances_unary(
# Done; return the response.
return response
- def delete_unary(
+ def apply_updates_to_instances(
self,
- request: Union[compute.DeleteRegionInstanceGroupManagerRequest, dict] = None,
+ request: Union[
+ compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest, dict
+ ] = None,
*,
project: str = None,
region: str = None,
instance_group_manager: str = None,
+ region_instance_group_managers_apply_updates_request_resource: compute.RegionInstanceGroupManagersApplyUpdatesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Deletes the specified managed instance group and all
- of the instances in that group.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Apply updates to selected instances the managed
+ instance group.
Args:
- request (Union[google.cloud.compute_v1.types.DeleteRegionInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest, dict]):
The request object. A request message for
- RegionInstanceGroupManagers.Delete. See the method
- description for details.
+ RegionInstanceGroupManagers.ApplyUpdatesToInstances. See
+ the method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -834,18 +831,23 @@ def delete_unary(
should not be set.
region (str):
Name of the region scoping this
- request.
+ request, should conform to RFC1035.
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
- Name of the managed instance group to
- delete.
+ The name of the managed instance
+ group, should conform to RFC1035.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ region_instance_group_managers_apply_updates_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersApplyUpdatesRequest):
+ The body resource for this request
+ This corresponds to the ``region_instance_group_managers_apply_updates_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -853,28 +855,22 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, instance_group_manager])
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ instance_group_manager,
+ region_instance_group_managers_apply_updates_request_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -882,11 +878,15 @@ def delete_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.DeleteRegionInstanceGroupManagerRequest.
+ # in a compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.DeleteRegionInstanceGroupManagerRequest):
- request = compute.DeleteRegionInstanceGroupManagerRequest(request)
+ if not isinstance(
+ request, compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest
+ ):
+ request = compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest(
+ request
+ )
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -895,10 +895,19 @@ def delete_unary(
request.region = region
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
+ if (
+ region_instance_group_managers_apply_updates_request_resource
+ is not None
+ ):
+ request.region_instance_group_managers_apply_updates_request_resource = (
+ region_instance_group_managers_apply_updates_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.delete]
+ rpc = self._transport._wrapped_methods[
+ self._transport.apply_updates_to_instances
+ ]
# Send the request.
response = rpc(
@@ -908,43 +917,61 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def delete_instances_unary(
+ def create_instances_unary(
self,
request: Union[
- compute.DeleteInstancesRegionInstanceGroupManagerRequest, dict
+ compute.CreateInstancesRegionInstanceGroupManagerRequest, dict
] = None,
*,
project: str = None,
region: str = None,
instance_group_manager: str = None,
- region_instance_group_managers_delete_instances_request_resource: compute.RegionInstanceGroupManagersDeleteInstancesRequest = None,
+ region_instance_group_managers_create_instances_request_resource: compute.RegionInstanceGroupManagersCreateInstancesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Flags the specified instances in the managed instance
- group to be immediately deleted. The instances are also
- removed from any target pools of which they were a
- member. This method reduces the targetSize of the
- managed instance group by the number of instances that
- you delete. The deleteInstances operation is marked DONE
- if the deleteInstances request is successful. The
- underlying actions take additional time. You must
- separately verify the status of the deleting action with
- the listmanagedinstances method. If the group is part of
- a backend service that has enabled connection draining,
- it can take up to 60 seconds after the connection
- draining duration has elapsed before the VM instance is
- removed or deleted. You can specify a maximum of 1000
- instances with this method per request.
+ r"""Creates instances with per-instance configs in this
+ regional managed instance group. Instances are created
+ using the current instance template. The create
+ instances operation is marked DONE if the
+ createInstances request is successful. The underlying
+ actions take additional time. You must separately verify
+ the status of the creating or actions with the
+ listmanagedinstances method.
Args:
- request (Union[google.cloud.compute_v1.types.DeleteInstancesRegionInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.CreateInstancesRegionInstanceGroupManagerRequest, dict]):
The request object. A request message for
- RegionInstanceGroupManagers.DeleteInstances. See the
+ RegionInstanceGroupManagers.CreateInstances. See the
method description for details.
project (str):
Project ID for this request.
@@ -952,20 +979,23 @@ def delete_instances_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
region (str):
- Name of the region scoping this
- request.
+ The name of the region where the
+ managed instance group is located. It
+ should conform to RFC1035.
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
- Name of the managed instance group.
+ The name of the managed instance
+ group. It should conform to RFC1035.
+
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- region_instance_group_managers_delete_instances_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersDeleteInstancesRequest):
+ region_instance_group_managers_create_instances_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersCreateInstancesRequest):
The body resource for this request
- This corresponds to the ``region_instance_group_managers_delete_instances_request_resource`` field
+ This corresponds to the ``region_instance_group_managers_create_instances_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -975,22 +1005,9 @@ def delete_instances_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1001,7 +1018,7 @@ def delete_instances_unary(
project,
region,
instance_group_manager,
- region_instance_group_managers_delete_instances_request_resource,
+ region_instance_group_managers_create_instances_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -1011,13 +1028,13 @@ def delete_instances_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.DeleteInstancesRegionInstanceGroupManagerRequest.
+ # in a compute.CreateInstancesRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.DeleteInstancesRegionInstanceGroupManagerRequest
+ request, compute.CreateInstancesRegionInstanceGroupManagerRequest
):
- request = compute.DeleteInstancesRegionInstanceGroupManagerRequest(request)
+ request = compute.CreateInstancesRegionInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1027,16 +1044,16 @@ def delete_instances_unary(
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
if (
- region_instance_group_managers_delete_instances_request_resource
+ region_instance_group_managers_create_instances_request_resource
is not None
):
- request.region_instance_group_managers_delete_instances_request_resource = (
- region_instance_group_managers_delete_instances_request_resource
+ request.region_instance_group_managers_create_instances_request_resource = (
+ region_instance_group_managers_create_instances_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.delete_instances]
+ rpc = self._transport._wrapped_methods[self._transport.create_instances]
# Send the request.
response = rpc(
@@ -1049,36 +1066,43 @@ def delete_instances_unary(
# Done; return the response.
return response
- def delete_per_instance_configs_unary(
+ def create_instances(
self,
request: Union[
- compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest, dict
+ compute.CreateInstancesRegionInstanceGroupManagerRequest, dict
] = None,
*,
project: str = None,
region: str = None,
instance_group_manager: str = None,
- region_instance_group_manager_delete_instance_config_req_resource: compute.RegionInstanceGroupManagerDeleteInstanceConfigReq = None,
+ region_instance_group_managers_create_instances_request_resource: compute.RegionInstanceGroupManagersCreateInstancesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Deletes selected per-instance configs for the managed
- instance group.
-
- Args:
- request (Union[google.cloud.compute_v1.types.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest, dict]):
- The request object. A request message for
- RegionInstanceGroupManagers.DeletePerInstanceConfigs.
- See the method description for details.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates instances with per-instance configs in this
+ regional managed instance group. Instances are created
+ using the current instance template. The create
+ instances operation is marked DONE if the
+ createInstances request is successful. The underlying
+ actions take additional time. You must separately verify
+ the status of the creating or actions with the
+ listmanagedinstances method.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.CreateInstancesRegionInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.CreateInstances. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
region (str):
- Name of the region scoping this
- request, should conform to RFC1035.
+ The name of the region where the
+ managed instance group is located. It
+ should conform to RFC1035.
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
@@ -1090,9 +1114,9 @@ def delete_per_instance_configs_unary(
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- region_instance_group_manager_delete_instance_config_req_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagerDeleteInstanceConfigReq):
+ region_instance_group_managers_create_instances_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersCreateInstancesRequest):
The body resource for this request
- This corresponds to the ``region_instance_group_manager_delete_instance_config_req_resource`` field
+ This corresponds to the ``region_instance_group_managers_create_instances_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1102,22 +1126,9 @@ def delete_per_instance_configs_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1128,7 +1139,7 @@ def delete_per_instance_configs_unary(
project,
region,
instance_group_manager,
- region_instance_group_manager_delete_instance_config_req_resource,
+ region_instance_group_managers_create_instances_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -1138,15 +1149,13 @@ def delete_per_instance_configs_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest.
+ # in a compute.CreateInstancesRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest
+ request, compute.CreateInstancesRegionInstanceGroupManagerRequest
):
- request = compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest(
- request
- )
+ request = compute.CreateInstancesRegionInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1156,18 +1165,16 @@ def delete_per_instance_configs_unary(
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
if (
- region_instance_group_manager_delete_instance_config_req_resource
+ region_instance_group_managers_create_instances_request_resource
is not None
):
- request.region_instance_group_manager_delete_instance_config_req_resource = (
- region_instance_group_manager_delete_instance_config_req_resource
+ request.region_instance_group_managers_create_instances_request_resource = (
+ region_instance_group_managers_create_instances_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[
- self._transport.delete_per_instance_configs
- ]
+ rpc = self._transport._wrapped_methods[self._transport.create_instances]
# Send the request.
response = rpc(
@@ -1177,12 +1184,37 @@ def delete_per_instance_configs_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def get(
+ def delete_unary(
self,
- request: Union[compute.GetRegionInstanceGroupManagerRequest, dict] = None,
+ request: Union[compute.DeleteRegionInstanceGroupManagerRequest, dict] = None,
*,
project: str = None,
region: str = None,
@@ -1190,14 +1222,14 @@ def get(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.InstanceGroupManager:
- r"""Returns all of the details about the specified
- managed instance group.
+ ) -> compute.Operation:
+ r"""Deletes the specified managed instance group and all
+ of the instances in that group.
Args:
- request (Union[google.cloud.compute_v1.types.GetRegionInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteRegionInstanceGroupManagerRequest, dict]):
The request object. A request message for
- RegionInstanceGroupManagers.Get. See the method
+ RegionInstanceGroupManagers.Delete. See the method
description for details.
project (str):
Project ID for this request.
@@ -1213,7 +1245,7 @@ def get(
should not be set.
instance_group_manager (str):
Name of the managed instance group to
- return.
+ delete.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
@@ -1225,16 +1257,9 @@ def get(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.InstanceGroupManager:
- Represents a Managed Instance Group
- resource. An instance group is a
- collection of VM instances that you can
- manage as a single entity. For more
- information, read Instance groups. For
- zonal Managed Instance Group, use the
- instanceGroupManagers resource. For
- regional Managed Instance Group, use the
- regionInstanceGroupManagers resource.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1248,11 +1273,11 @@ def get(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetRegionInstanceGroupManagerRequest.
+ # in a compute.DeleteRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetRegionInstanceGroupManagerRequest):
- request = compute.GetRegionInstanceGroupManagerRequest(request)
+ if not isinstance(request, compute.DeleteRegionInstanceGroupManagerRequest):
+ request = compute.DeleteRegionInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1264,7 +1289,7 @@ def get(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get]
+ rpc = self._transport._wrapped_methods[self._transport.delete]
# Send the request.
response = rpc(
@@ -1277,32 +1302,24 @@ def get(
# Done; return the response.
return response
- def insert_unary(
+ def delete(
self,
- request: Union[compute.InsertRegionInstanceGroupManagerRequest, dict] = None,
+ request: Union[compute.DeleteRegionInstanceGroupManagerRequest, dict] = None,
*,
project: str = None,
region: str = None,
- instance_group_manager_resource: compute.InstanceGroupManager = None,
+ instance_group_manager: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Creates a managed instance group using the
- information that you specify in the request. After the
- group is created, instances in the group are created
- using the specified instance template. This operation is
- marked as DONE when the group is created even if the
- instances in the group have not yet been created. You
- must separately verify the status of the individual
- instances with the listmanagedinstances method. A
- regional managed instance group can contain up to 2000
- instances.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified managed instance group and all
+ of the instances in that group.
Args:
- request (Union[google.cloud.compute_v1.types.InsertRegionInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteRegionInstanceGroupManagerRequest, dict]):
The request object. A request message for
- RegionInstanceGroupManagers.Insert. See the method
+ RegionInstanceGroupManagers.Delete. See the method
description for details.
project (str):
Project ID for this request.
@@ -1316,9 +1333,11 @@ def insert_unary(
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
- The body resource for this request
- This corresponds to the ``instance_group_manager_resource`` field
+ instance_group_manager (str):
+ Name of the managed instance group to
+ delete.
+
+ This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1328,28 +1347,15 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, instance_group_manager_resource])
+ has_flattened_params = any([project, region, instance_group_manager])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1357,25 +1363,23 @@ def insert_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.InsertRegionInstanceGroupManagerRequest.
+ # in a compute.DeleteRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.InsertRegionInstanceGroupManagerRequest):
- request = compute.InsertRegionInstanceGroupManagerRequest(request)
+ if not isinstance(request, compute.DeleteRegionInstanceGroupManagerRequest):
+ request = compute.DeleteRegionInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if region is not None:
request.region = region
- if instance_group_manager_resource is not None:
- request.instance_group_manager_resource = (
- instance_group_manager_resource
- )
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.insert]
+ rpc = self._transport._wrapped_methods[self._transport.delete]
# Send the request.
response = rpc(
@@ -1385,27 +1389,69 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def list(
+ def delete_instances_unary(
self,
- request: Union[compute.ListRegionInstanceGroupManagersRequest, dict] = None,
+ request: Union[
+ compute.DeleteInstancesRegionInstanceGroupManagerRequest, dict
+ ] = None,
*,
project: str = None,
region: str = None,
+ instance_group_manager: str = None,
+ region_instance_group_managers_delete_instances_request_resource: compute.RegionInstanceGroupManagersDeleteInstancesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListPager:
- r"""Retrieves the list of managed instance groups that
- are contained within the specified region.
+ ) -> compute.Operation:
+ r"""Flags the specified instances in the managed instance
+ group to be immediately deleted. The instances are also
+ removed from any target pools of which they were a
+ member. This method reduces the targetSize of the
+ managed instance group by the number of instances that
+ you delete. The deleteInstances operation is marked DONE
+ if the deleteInstances request is successful. The
+ underlying actions take additional time. You must
+ separately verify the status of the deleting action with
+ the listmanagedinstances method. If the group is part of
+ a backend service that has enabled connection draining,
+ it can take up to 60 seconds after the connection
+ draining duration has elapsed before the VM instance is
+ removed or deleted. You can specify a maximum of 1000
+ instances with this method per request.
Args:
- request (Union[google.cloud.compute_v1.types.ListRegionInstanceGroupManagersRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteInstancesRegionInstanceGroupManagerRequest, dict]):
The request object. A request message for
- RegionInstanceGroupManagers.List. See the method
- description for details.
+ RegionInstanceGroupManagers.DeleteInstances. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1418,6 +1464,16 @@ def list(
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ instance_group_manager (str):
+ Name of the managed instance group.
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region_instance_group_managers_delete_instances_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersDeleteInstancesRequest):
+ The body resource for this request
+ This corresponds to the ``region_instance_group_managers_delete_instances_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1425,18 +1481,22 @@ def list(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.region_instance_group_managers.pagers.ListPager:
- Contains a list of managed instance
- groups.
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region])
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ instance_group_manager,
+ region_instance_group_managers_delete_instances_request_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1444,21 +1504,32 @@ def list(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListRegionInstanceGroupManagersRequest.
+ # in a compute.DeleteInstancesRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ListRegionInstanceGroupManagersRequest):
- request = compute.ListRegionInstanceGroupManagersRequest(request)
+ if not isinstance(
+ request, compute.DeleteInstancesRegionInstanceGroupManagerRequest
+ ):
+ request = compute.DeleteInstancesRegionInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if region is not None:
request.region = region
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if (
+ region_instance_group_managers_delete_instances_request_resource
+ is not None
+ ):
+ request.region_instance_group_managers_delete_instances_request_resource = (
+ region_instance_group_managers_delete_instances_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list]
+ rpc = self._transport._wrapped_methods[self._transport.delete_instances]
# Send the request.
response = rpc(
@@ -1468,40 +1539,44 @@ def list(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
-
# Done; return the response.
return response
- def list_errors(
+ def delete_instances(
self,
request: Union[
- compute.ListErrorsRegionInstanceGroupManagersRequest, dict
+ compute.DeleteInstancesRegionInstanceGroupManagerRequest, dict
] = None,
*,
project: str = None,
region: str = None,
instance_group_manager: str = None,
+ region_instance_group_managers_delete_instances_request_resource: compute.RegionInstanceGroupManagersDeleteInstancesRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListErrorsPager:
- r"""Lists all errors thrown by actions on instances for a
- given regional managed instance group. The filter and
- orderBy query parameters are not supported.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Flags the specified instances in the managed instance
+ group to be immediately deleted. The instances are also
+ removed from any target pools of which they were a
+ member. This method reduces the targetSize of the
+ managed instance group by the number of instances that
+ you delete. The deleteInstances operation is marked DONE
+ if the deleteInstances request is successful. The
+ underlying actions take additional time. You must
+ separately verify the status of the deleting action with
+ the listmanagedinstances method. If the group is part of
+ a backend service that has enabled connection draining,
+ it can take up to 60 seconds after the connection
+ draining duration has elapsed before the VM instance is
+ removed or deleted. You can specify a maximum of 1000
+ instances with this method per request.
Args:
- request (Union[google.cloud.compute_v1.types.ListErrorsRegionInstanceGroupManagersRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteInstancesRegionInstanceGroupManagerRequest, dict]):
The request object. A request message for
- RegionInstanceGroupManagers.ListErrors. See the method
- description for details.
+ RegionInstanceGroupManagers.DeleteInstances. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1509,20 +1584,21 @@ def list_errors(
should not be set.
region (str):
Name of the region scoping this
- request. This should conform to RFC1035.
+ request.
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
- The name of the managed instance group. It must be a
- string that meets the requirements in RFC1035, or an
- unsigned long integer: must match regexp pattern:
- (?:`a-z `__?)|1-9{0,19}.
-
+ Name of the managed instance group.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ region_instance_group_managers_delete_instances_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersDeleteInstancesRequest):
+ The body resource for this request
+ This corresponds to the ``region_instance_group_managers_delete_instances_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1530,16 +1606,22 @@ def list_errors(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.region_instance_group_managers.pagers.ListErrorsPager:
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, instance_group_manager])
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ instance_group_manager,
+ region_instance_group_managers_delete_instances_request_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1547,13 +1629,13 @@ def list_errors(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListErrorsRegionInstanceGroupManagersRequest.
+ # in a compute.DeleteInstancesRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.ListErrorsRegionInstanceGroupManagersRequest
+ request, compute.DeleteInstancesRegionInstanceGroupManagerRequest
):
- request = compute.ListErrorsRegionInstanceGroupManagersRequest(request)
+ request = compute.DeleteInstancesRegionInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1562,10 +1644,17 @@ def list_errors(
request.region = region
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
+ if (
+ region_instance_group_managers_delete_instances_request_resource
+ is not None
+ ):
+ request.region_instance_group_managers_delete_instances_request_resource = (
+ region_instance_group_managers_delete_instances_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list_errors]
+ rpc = self._transport._wrapped_methods[self._transport.delete_instances]
# Send the request.
response = rpc(
@@ -1575,42 +1664,56 @@ def list_errors(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListErrorsPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
# Done; return the response.
return response
- def list_managed_instances(
+ def delete_per_instance_configs_unary(
self,
request: Union[
- compute.ListManagedInstancesRegionInstanceGroupManagersRequest, dict
+ compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest, dict
] = None,
*,
project: str = None,
region: str = None,
instance_group_manager: str = None,
+ region_instance_group_manager_delete_instance_config_req_resource: compute.RegionInstanceGroupManagerDeleteInstanceConfigReq = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListManagedInstancesPager:
- r"""Lists the instances in the managed instance group and
- instances that are scheduled to be created. The list
- includes any current actions that the group has
- scheduled for its instances. The orderBy query parameter
- is not supported.
+ ) -> compute.Operation:
+ r"""Deletes selected per-instance configs for the managed
+ instance group.
Args:
- request (Union[google.cloud.compute_v1.types.ListManagedInstancesRegionInstanceGroupManagersRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest, dict]):
The request object. A request message for
- RegionInstanceGroupManagers.ListManagedInstances. See
- the method description for details.
+ RegionInstanceGroupManagers.DeletePerInstanceConfigs.
+ See the method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1618,18 +1721,23 @@ def list_managed_instances(
should not be set.
region (str):
Name of the region scoping this
- request.
+ request, should conform to RFC1035.
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
The name of the managed instance
- group.
+ group. It should conform to RFC1035.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ region_instance_group_manager_delete_instance_config_req_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagerDeleteInstanceConfigReq):
+ The body resource for this request
+ This corresponds to the ``region_instance_group_manager_delete_instance_config_req_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1637,16 +1745,22 @@ def list_managed_instances(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.region_instance_group_managers.pagers.ListManagedInstancesPager:
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, instance_group_manager])
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ instance_group_manager,
+ region_instance_group_manager_delete_instance_config_req_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1654,13 +1768,13 @@ def list_managed_instances(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListManagedInstancesRegionInstanceGroupManagersRequest.
+ # in a compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.ListManagedInstancesRegionInstanceGroupManagersRequest
+ request, compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest
):
- request = compute.ListManagedInstancesRegionInstanceGroupManagersRequest(
+ request = compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest(
request
)
# If we have keyword arguments corresponding to fields on the
@@ -1671,10 +1785,19 @@ def list_managed_instances(
request.region = region
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
+ if (
+ region_instance_group_manager_delete_instance_config_req_resource
+ is not None
+ ):
+ request.region_instance_group_manager_delete_instance_config_req_resource = (
+ region_instance_group_manager_delete_instance_config_req_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list_managed_instances]
+ rpc = self._transport._wrapped_methods[
+ self._transport.delete_per_instance_configs
+ ]
# Send the request.
response = rpc(
@@ -1684,40 +1807,31 @@ def list_managed_instances(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListManagedInstancesPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
-
# Done; return the response.
return response
- def list_per_instance_configs(
+ def delete_per_instance_configs(
self,
request: Union[
- compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest, dict
+ compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest, dict
] = None,
*,
project: str = None,
region: str = None,
instance_group_manager: str = None,
+ region_instance_group_manager_delete_instance_config_req_resource: compute.RegionInstanceGroupManagerDeleteInstanceConfigReq = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListPerInstanceConfigsPager:
- r"""Lists all of the per-instance configs defined for the
- managed instance group. The orderBy query parameter is
- not supported.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes selected per-instance configs for the managed
+ instance group.
Args:
- request (Union[google.cloud.compute_v1.types.ListPerInstanceConfigsRegionInstanceGroupManagersRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest, dict]):
The request object. A request message for
- RegionInstanceGroupManagers.ListPerInstanceConfigs. See
- the method description for details.
+ RegionInstanceGroupManagers.DeletePerInstanceConfigs.
+ See the method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1737,6 +1851,11 @@ def list_per_instance_configs(
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ region_instance_group_manager_delete_instance_config_req_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagerDeleteInstanceConfigReq):
+ The body resource for this request
+ This corresponds to the ``region_instance_group_manager_delete_instance_config_req_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1744,16 +1863,22 @@ def list_per_instance_configs(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.region_instance_group_managers.pagers.ListPerInstanceConfigsPager:
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, instance_group_manager])
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ instance_group_manager,
+ region_instance_group_manager_delete_instance_config_req_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1761,13 +1886,13 @@ def list_per_instance_configs(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest.
+ # in a compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest
+ request, compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest
):
- request = compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest(
+ request = compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest(
request
)
# If we have keyword arguments corresponding to fields on the
@@ -1778,11 +1903,18 @@ def list_per_instance_configs(
request.region = region
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
+ if (
+ region_instance_group_manager_delete_instance_config_req_resource
+ is not None
+ ):
+ request.region_instance_group_manager_delete_instance_config_req_resource = (
+ region_instance_group_manager_delete_instance_config_req_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
rpc = self._transport._wrapped_methods[
- self._transport.list_per_instance_configs
+ self._transport.delete_per_instance_configs
]
# Send the request.
@@ -1793,49 +1925,52 @@ def list_per_instance_configs(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListPerInstanceConfigsPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
# Done; return the response.
return response
- def patch_unary(
+ def get(
self,
- request: Union[compute.PatchRegionInstanceGroupManagerRequest, dict] = None,
+ request: Union[compute.GetRegionInstanceGroupManagerRequest, dict] = None,
*,
project: str = None,
region: str = None,
instance_group_manager: str = None,
- instance_group_manager_resource: compute.InstanceGroupManager = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Updates a managed instance group using the
- information that you specify in the request. This
- operation is marked as DONE when the group is patched
- even if the instances in the group are still in the
- process of being patched. You must separately verify the
- status of the individual instances with the
- listmanagedinstances method. This method supports PATCH
- semantics and uses the JSON merge patch format and
- processing rules. If you update your group to specify a
- new template or instance configuration, it's possible
- that your intended specification for each VM in the
- group is different from the current state of that VM. To
- learn how to apply an updated configuration to the VMs
- in a MIG, see Updating instances in a MIG.
+ ) -> compute.InstanceGroupManager:
+ r"""Returns all of the details about the specified
+ managed instance group.
Args:
- request (Union[google.cloud.compute_v1.types.PatchRegionInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.GetRegionInstanceGroupManagerRequest, dict]):
The request object. A request message for
- RegionInstanceGroupManagers.Patch. See the method
+ RegionInstanceGroupManagers.Get. See the method
description for details.
project (str):
Project ID for this request.
@@ -1850,17 +1985,12 @@ def patch_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
- The name of the instance group
- manager.
+ Name of the managed instance group to
+ return.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
- The body resource for this request
- This corresponds to the ``instance_group_manager_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1868,30 +1998,22 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.cloud.compute_v1.types.InstanceGroupManager:
+ Represents a Managed Instance Group
+ resource. An instance group is a
+ collection of VM instances that you can
+ manage as a single entity. For more
+ information, read Instance groups. For
+ zonal Managed Instance Group, use the
+ instanceGroupManagers resource. For
+ regional Managed Instance Group, use the
+ regionInstanceGroupManagers resource.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, region, instance_group_manager, instance_group_manager_resource]
- )
+ has_flattened_params = any([project, region, instance_group_manager])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1899,11 +2021,11 @@ def patch_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.PatchRegionInstanceGroupManagerRequest.
+ # in a compute.GetRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.PatchRegionInstanceGroupManagerRequest):
- request = compute.PatchRegionInstanceGroupManagerRequest(request)
+ if not isinstance(request, compute.GetRegionInstanceGroupManagerRequest):
+ request = compute.GetRegionInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1912,14 +2034,10 @@ def patch_unary(
request.region = region
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
- if instance_group_manager_resource is not None:
- request.instance_group_manager_resource = (
- instance_group_manager_resource
- )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.patch]
+ rpc = self._transport._wrapped_methods[self._transport.get]
# Send the request.
response = rpc(
@@ -1932,30 +2050,1699 @@ def patch_unary(
# Done; return the response.
return response
- def patch_per_instance_configs_unary(
+ def insert_unary(
self,
- request: Union[
- compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest, dict
- ] = None,
+ request: Union[compute.InsertRegionInstanceGroupManagerRequest, dict] = None,
*,
project: str = None,
region: str = None,
- instance_group_manager: str = None,
- region_instance_group_manager_patch_instance_config_req_resource: compute.RegionInstanceGroupManagerPatchInstanceConfigReq = None,
+ instance_group_manager_resource: compute.InstanceGroupManager = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Inserts or patches per-instance configs for the
- managed instance group. perInstanceConfig.name serves as
- a key used to distinguish whether to perform insert or
- patch.
-
- Args:
- request (Union[google.cloud.compute_v1.types.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest, dict]):
- The request object. A request message for
- RegionInstanceGroupManagers.PatchPerInstanceConfigs. See
- the method description for details.
+ r"""Creates a managed instance group using the
+ information that you specify in the request. After the
+ group is created, instances in the group are created
+ using the specified instance template. This operation is
+ marked as DONE when the group is created even if the
+ instances in the group have not yet been created. You
+ must separately verify the status of the individual
+ instances with the listmanagedinstances method. A
+ regional managed instance group can contain up to 2000
+ instances.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
+ The body resource for this request
+ This corresponds to the ``instance_group_manager_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, instance_group_manager_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionInstanceGroupManagerRequest):
+ request = compute.InsertRegionInstanceGroupManagerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if instance_group_manager_resource is not None:
+ request.instance_group_manager_resource = (
+ instance_group_manager_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertRegionInstanceGroupManagerRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ instance_group_manager_resource: compute.InstanceGroupManager = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a managed instance group using the
+ information that you specify in the request. After the
+ group is created, instances in the group are created
+ using the specified instance template. This operation is
+ marked as DONE when the group is created even if the
+ instances in the group have not yet been created. You
+ must separately verify the status of the individual
+ instances with the listmanagedinstances method. A
+ regional managed instance group can contain up to 2000
+ instances.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
+ The body resource for this request
+ This corresponds to the ``instance_group_manager_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, instance_group_manager_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionInstanceGroupManagerRequest):
+ request = compute.InsertRegionInstanceGroupManagerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if instance_group_manager_resource is not None:
+ request.instance_group_manager_resource = (
+ instance_group_manager_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def list(
+ self,
+ request: Union[compute.ListRegionInstanceGroupManagersRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListPager:
+ r"""Retrieves the list of managed instance groups that
+ are contained within the specified region.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListRegionInstanceGroupManagersRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.List. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.region_instance_group_managers.pagers.ListPager:
+ Contains a list of managed instance
+ groups.
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListRegionInstanceGroupManagersRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ListRegionInstanceGroupManagersRequest):
+ request = compute.ListRegionInstanceGroupManagersRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def list_errors(
+ self,
+ request: Union[
+ compute.ListErrorsRegionInstanceGroupManagersRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ instance_group_manager: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListErrorsPager:
+ r"""Lists all errors thrown by actions on instances for a
+ given regional managed instance group. The filter and
+ orderBy query parameters are not supported.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListErrorsRegionInstanceGroupManagersRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.ListErrors. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request. This should conform to RFC1035.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the managed instance group. It must be a
+ string that meets the requirements in RFC1035, or an
+ unsigned long integer: must match regexp pattern:
+ (?:`a-z `__?)|1-9{0,19}.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.region_instance_group_managers.pagers.ListErrorsPager:
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, instance_group_manager])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListErrorsRegionInstanceGroupManagersRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.ListErrorsRegionInstanceGroupManagersRequest
+ ):
+ request = compute.ListErrorsRegionInstanceGroupManagersRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list_errors]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListErrorsPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def list_managed_instances(
+ self,
+ request: Union[
+ compute.ListManagedInstancesRegionInstanceGroupManagersRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ instance_group_manager: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListManagedInstancesPager:
+ r"""Lists the instances in the managed instance group and
+ instances that are scheduled to be created. The list
+ includes any current actions that the group has
+ scheduled for its instances. The orderBy query parameter
+ is not supported.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListManagedInstancesRegionInstanceGroupManagersRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.ListManagedInstances. See
+ the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the managed instance
+ group.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.region_instance_group_managers.pagers.ListManagedInstancesPager:
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, instance_group_manager])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListManagedInstancesRegionInstanceGroupManagersRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.ListManagedInstancesRegionInstanceGroupManagersRequest
+ ):
+ request = compute.ListManagedInstancesRegionInstanceGroupManagersRequest(
+ request
+ )
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list_managed_instances]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListManagedInstancesPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def list_per_instance_configs(
+ self,
+ request: Union[
+ compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ instance_group_manager: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListPerInstanceConfigsPager:
+ r"""Lists all of the per-instance configs defined for the
+ managed instance group. The orderBy query parameter is
+ not supported.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListPerInstanceConfigsRegionInstanceGroupManagersRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.ListPerInstanceConfigs. See
+ the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request, should conform to RFC1035.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the managed instance
+ group. It should conform to RFC1035.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.region_instance_group_managers.pagers.ListPerInstanceConfigsPager:
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, instance_group_manager])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest
+ ):
+ request = compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest(
+ request
+ )
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[
+ self._transport.list_per_instance_configs
+ ]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListPerInstanceConfigsPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch_unary(
+ self,
+ request: Union[compute.PatchRegionInstanceGroupManagerRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ instance_group_manager: str = None,
+ instance_group_manager_resource: compute.InstanceGroupManager = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Updates a managed instance group using the
+ information that you specify in the request. This
+ operation is marked as DONE when the group is patched
+ even if the instances in the group are still in the
+ process of being patched. You must separately verify the
+ status of the individual instances with the
+ listmanagedinstances method. This method supports PATCH
+ semantics and uses the JSON merge patch format and
+ processing rules. If you update your group to specify a
+ new template or instance configuration, it's possible
+ that your intended specification for each VM in the
+ group is different from the current state of that VM. To
+ learn how to apply an updated configuration to the VMs
+ in a MIG, see Updating instances in a MIG.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchRegionInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.Patch. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the instance group
+ manager.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
+ The body resource for this request
+ This corresponds to the ``instance_group_manager_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, instance_group_manager, instance_group_manager_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchRegionInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchRegionInstanceGroupManagerRequest):
+ request = compute.PatchRegionInstanceGroupManagerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if instance_group_manager_resource is not None:
+ request.instance_group_manager_resource = (
+ instance_group_manager_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch(
+ self,
+ request: Union[compute.PatchRegionInstanceGroupManagerRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ instance_group_manager: str = None,
+ instance_group_manager_resource: compute.InstanceGroupManager = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates a managed instance group using the
+ information that you specify in the request. This
+ operation is marked as DONE when the group is patched
+ even if the instances in the group are still in the
+ process of being patched. You must separately verify the
+ status of the individual instances with the
+ listmanagedinstances method. This method supports PATCH
+ semantics and uses the JSON merge patch format and
+ processing rules. If you update your group to specify a
+ new template or instance configuration, it's possible
+ that your intended specification for each VM in the
+ group is different from the current state of that VM. To
+ learn how to apply an updated configuration to the VMs
+ in a MIG, see Updating instances in a MIG.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchRegionInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.Patch. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the instance group
+ manager.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager_resource (google.cloud.compute_v1.types.InstanceGroupManager):
+ The body resource for this request
+ This corresponds to the ``instance_group_manager_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, instance_group_manager, instance_group_manager_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchRegionInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchRegionInstanceGroupManagerRequest):
+ request = compute.PatchRegionInstanceGroupManagerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if instance_group_manager_resource is not None:
+ request.instance_group_manager_resource = (
+ instance_group_manager_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def patch_per_instance_configs_unary(
+ self,
+ request: Union[
+ compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ instance_group_manager: str = None,
+ region_instance_group_manager_patch_instance_config_req_resource: compute.RegionInstanceGroupManagerPatchInstanceConfigReq = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Inserts or patches per-instance configs for the
+ managed instance group. perInstanceConfig.name serves as
+ a key used to distinguish whether to perform insert or
+ patch.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.PatchPerInstanceConfigs. See
+ the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request, should conform to RFC1035.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the managed instance
+ group. It should conform to RFC1035.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region_instance_group_manager_patch_instance_config_req_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagerPatchInstanceConfigReq):
+ The body resource for this request
+ This corresponds to the ``region_instance_group_manager_patch_instance_config_req_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ instance_group_manager,
+ region_instance_group_manager_patch_instance_config_req_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest
+ ):
+ request = compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest(
+ request
+ )
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if (
+ region_instance_group_manager_patch_instance_config_req_resource
+ is not None
+ ):
+ request.region_instance_group_manager_patch_instance_config_req_resource = (
+ region_instance_group_manager_patch_instance_config_req_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[
+ self._transport.patch_per_instance_configs
+ ]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch_per_instance_configs(
+ self,
+ request: Union[
+ compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ instance_group_manager: str = None,
+ region_instance_group_manager_patch_instance_config_req_resource: compute.RegionInstanceGroupManagerPatchInstanceConfigReq = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Inserts or patches per-instance configs for the
+ managed instance group. perInstanceConfig.name serves as
+ a key used to distinguish whether to perform insert or
+ patch.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.PatchPerInstanceConfigs. See
+ the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request, should conform to RFC1035.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ The name of the managed instance
+ group. It should conform to RFC1035.
+
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region_instance_group_manager_patch_instance_config_req_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagerPatchInstanceConfigReq):
+ The body resource for this request
+ This corresponds to the ``region_instance_group_manager_patch_instance_config_req_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ instance_group_manager,
+ region_instance_group_manager_patch_instance_config_req_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest
+ ):
+ request = compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest(
+ request
+ )
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if (
+ region_instance_group_manager_patch_instance_config_req_resource
+ is not None
+ ):
+ request.region_instance_group_manager_patch_instance_config_req_resource = (
+ region_instance_group_manager_patch_instance_config_req_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[
+ self._transport.patch_per_instance_configs
+ ]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def recreate_instances_unary(
+ self,
+ request: Union[
+ compute.RecreateInstancesRegionInstanceGroupManagerRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ instance_group_manager: str = None,
+ region_instance_group_managers_recreate_request_resource: compute.RegionInstanceGroupManagersRecreateRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Flags the specified VM instances in the managed
+ instance group to be immediately recreated. Each
+ instance is recreated using the group's current
+ configuration. This operation is marked as DONE when the
+ flag is set even if the instances have not yet been
+ recreated. You must separately verify the status of each
+ instance by checking its currentAction field; for more
+ information, see Checking the status of managed
+ instances. If the group is part of a backend service
+ that has enabled connection draining, it can take up to
+ 60 seconds after the connection draining duration has
+ elapsed before the VM instance is removed or deleted.
+ You can specify a maximum of 1000 instances with this
+ method per request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.RecreateInstancesRegionInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.RecreateInstances. See the
+ method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ Name of the managed instance group.
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region_instance_group_managers_recreate_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersRecreateRequest):
+ The body resource for this request
+ This corresponds to the ``region_instance_group_managers_recreate_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ instance_group_manager,
+ region_instance_group_managers_recreate_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.RecreateInstancesRegionInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.RecreateInstancesRegionInstanceGroupManagerRequest
+ ):
+ request = compute.RecreateInstancesRegionInstanceGroupManagerRequest(
+ request
+ )
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if region_instance_group_managers_recreate_request_resource is not None:
+ request.region_instance_group_managers_recreate_request_resource = (
+ region_instance_group_managers_recreate_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.recreate_instances]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def recreate_instances(
+ self,
+ request: Union[
+ compute.RecreateInstancesRegionInstanceGroupManagerRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ instance_group_manager: str = None,
+ region_instance_group_managers_recreate_request_resource: compute.RegionInstanceGroupManagersRecreateRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Flags the specified VM instances in the managed
+ instance group to be immediately recreated. Each
+ instance is recreated using the group's current
+ configuration. This operation is marked as DONE when the
+ flag is set even if the instances have not yet been
+ recreated. You must separately verify the status of each
+ instance by checking its currentAction field; for more
+ information, see Checking the status of managed
+ instances. If the group is part of a backend service
+ that has enabled connection draining, it can take up to
+ 60 seconds after the connection draining duration has
+ elapsed before the VM instance is removed or deleted.
+ You can specify a maximum of 1000 instances with this
+ method per request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.RecreateInstancesRegionInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.RecreateInstances. See the
+ method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ Name of the managed instance group.
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region_instance_group_managers_recreate_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersRecreateRequest):
+ The body resource for this request
+ This corresponds to the ``region_instance_group_managers_recreate_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ instance_group_manager,
+ region_instance_group_managers_recreate_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.RecreateInstancesRegionInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.RecreateInstancesRegionInstanceGroupManagerRequest
+ ):
+ request = compute.RecreateInstancesRegionInstanceGroupManagerRequest(
+ request
+ )
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if region_instance_group_managers_recreate_request_resource is not None:
+ request.region_instance_group_managers_recreate_request_resource = (
+ region_instance_group_managers_recreate_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.recreate_instances]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def resize_unary(
+ self,
+ request: Union[compute.ResizeRegionInstanceGroupManagerRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ instance_group_manager: str = None,
+ size: int = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Changes the intended size of the managed instance
+ group. If you increase the size, the group creates new
+ instances using the current instance template. If you
+ decrease the size, the group deletes one or more
+ instances. The resize operation is marked DONE if the
+ resize request is successful. The underlying actions
+ take additional time. You must separately verify the
+ status of the creating or deleting actions with the
+ listmanagedinstances method. If the group is part of a
+ backend service that has enabled connection draining, it
+ can take up to 60 seconds after the connection draining
+ duration has elapsed before the VM instance is removed
+ or deleted.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ResizeRegionInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.Resize. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ Name of the managed instance group.
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ size (int):
+ Number of instances that should exist
+ in this instance group manager.
+
+ This corresponds to the ``size`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, instance_group_manager, size])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ResizeRegionInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ResizeRegionInstanceGroupManagerRequest):
+ request = compute.ResizeRegionInstanceGroupManagerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if size is not None:
+ request.size = size
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.resize]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def resize(
+ self,
+ request: Union[compute.ResizeRegionInstanceGroupManagerRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ instance_group_manager: str = None,
+ size: int = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Changes the intended size of the managed instance
+ group. If you increase the size, the group creates new
+ instances using the current instance template. If you
+ decrease the size, the group deletes one or more
+ instances. The resize operation is marked DONE if the
+ resize request is successful. The underlying actions
+ take additional time. You must separately verify the
+ status of the creating or deleting actions with the
+ listmanagedinstances method. If the group is part of a
+ backend service that has enabled connection draining, it
+ can take up to 60 seconds after the connection draining
+ duration has elapsed before the VM instance is removed
+ or deleted.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ResizeRegionInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.Resize. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group_manager (str):
+ Name of the managed instance group.
+ This corresponds to the ``instance_group_manager`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ size (int):
+ Number of instances that should exist
+ in this instance group manager.
+
+ This corresponds to the ``size`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, instance_group_manager, size])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ResizeRegionInstanceGroupManagerRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ResizeRegionInstanceGroupManagerRequest):
+ request = compute.ResizeRegionInstanceGroupManagerRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if instance_group_manager is not None:
+ request.instance_group_manager = instance_group_manager
+ if size is not None:
+ request.size = size
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.resize]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def set_instance_template_unary(
+ self,
+ request: Union[
+ compute.SetInstanceTemplateRegionInstanceGroupManagerRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ instance_group_manager: str = None,
+ region_instance_group_managers_set_template_request_resource: compute.RegionInstanceGroupManagersSetTemplateRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Sets the instance template to use when creating new
+ instances or recreating instances in this group.
+ Existing instances are not affected.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetInstanceTemplateRegionInstanceGroupManagerRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroupManagers.SetInstanceTemplate. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1963,21 +3750,21 @@ def patch_per_instance_configs_unary(
should not be set.
region (str):
Name of the region scoping this
- request, should conform to RFC1035.
+ request.
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
The name of the managed instance
- group. It should conform to RFC1035.
+ group.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- region_instance_group_manager_patch_instance_config_req_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagerPatchInstanceConfigReq):
+ region_instance_group_managers_set_template_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersSetTemplateRequest):
The body resource for this request
- This corresponds to the ``region_instance_group_manager_patch_instance_config_req_resource`` field
+ This corresponds to the ``region_instance_group_managers_set_template_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1987,22 +3774,9 @@ def patch_per_instance_configs_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -2013,7 +3787,7 @@ def patch_per_instance_configs_unary(
project,
region,
instance_group_manager,
- region_instance_group_manager_patch_instance_config_req_resource,
+ region_instance_group_managers_set_template_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -2023,13 +3797,13 @@ def patch_per_instance_configs_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest.
+ # in a compute.SetInstanceTemplateRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest
+ request, compute.SetInstanceTemplateRegionInstanceGroupManagerRequest
):
- request = compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest(
+ request = compute.SetInstanceTemplateRegionInstanceGroupManagerRequest(
request
)
# If we have keyword arguments corresponding to fields on the
@@ -2040,19 +3814,14 @@ def patch_per_instance_configs_unary(
request.region = region
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
- if (
- region_instance_group_manager_patch_instance_config_req_resource
- is not None
- ):
- request.region_instance_group_manager_patch_instance_config_req_resource = (
- region_instance_group_manager_patch_instance_config_req_resource
+ if region_instance_group_managers_set_template_request_resource is not None:
+ request.region_instance_group_managers_set_template_request_resource = (
+ region_instance_group_managers_set_template_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[
- self._transport.patch_per_instance_configs
- ]
+ rpc = self._transport._wrapped_methods[self._transport.set_instance_template]
# Send the request.
response = rpc(
@@ -2065,39 +3834,28 @@ def patch_per_instance_configs_unary(
# Done; return the response.
return response
- def recreate_instances_unary(
+ def set_instance_template(
self,
request: Union[
- compute.RecreateInstancesRegionInstanceGroupManagerRequest, dict
+ compute.SetInstanceTemplateRegionInstanceGroupManagerRequest, dict
] = None,
*,
project: str = None,
region: str = None,
instance_group_manager: str = None,
- region_instance_group_managers_recreate_request_resource: compute.RegionInstanceGroupManagersRecreateRequest = None,
+ region_instance_group_managers_set_template_request_resource: compute.RegionInstanceGroupManagersSetTemplateRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Flags the specified VM instances in the managed
- instance group to be immediately recreated. Each
- instance is recreated using the group's current
- configuration. This operation is marked as DONE when the
- flag is set even if the instances have not yet been
- recreated. You must separately verify the status of each
- instance by checking its currentAction field; for more
- information, see Checking the status of managed
- instances. If the group is part of a backend service
- that has enabled connection draining, it can take up to
- 60 seconds after the connection draining duration has
- elapsed before the VM instance is removed or deleted.
- You can specify a maximum of 1000 instances with this
- method per request.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the instance template to use when creating new
+ instances or recreating instances in this group.
+ Existing instances are not affected.
Args:
- request (Union[google.cloud.compute_v1.types.RecreateInstancesRegionInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetInstanceTemplateRegionInstanceGroupManagerRequest, dict]):
The request object. A request message for
- RegionInstanceGroupManagers.RecreateInstances. See the
+ RegionInstanceGroupManagers.SetInstanceTemplate. See the
method description for details.
project (str):
Project ID for this request.
@@ -2112,13 +3870,15 @@ def recreate_instances_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
- Name of the managed instance group.
+ The name of the managed instance
+ group.
+
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- region_instance_group_managers_recreate_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersRecreateRequest):
+ region_instance_group_managers_set_template_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersSetTemplateRequest):
The body resource for this request
- This corresponds to the ``region_instance_group_managers_recreate_request_resource`` field
+ This corresponds to the ``region_instance_group_managers_set_template_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -2128,22 +3888,9 @@ def recreate_instances_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -2154,7 +3901,7 @@ def recreate_instances_unary(
project,
region,
instance_group_manager,
- region_instance_group_managers_recreate_request_resource,
+ region_instance_group_managers_set_template_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -2164,13 +3911,13 @@ def recreate_instances_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.RecreateInstancesRegionInstanceGroupManagerRequest.
+ # in a compute.SetInstanceTemplateRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.RecreateInstancesRegionInstanceGroupManagerRequest
+ request, compute.SetInstanceTemplateRegionInstanceGroupManagerRequest
):
- request = compute.RecreateInstancesRegionInstanceGroupManagerRequest(
+ request = compute.SetInstanceTemplateRegionInstanceGroupManagerRequest(
request
)
# If we have keyword arguments corresponding to fields on the
@@ -2181,14 +3928,14 @@ def recreate_instances_unary(
request.region = region
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
- if region_instance_group_managers_recreate_request_resource is not None:
- request.region_instance_group_managers_recreate_request_resource = (
- region_instance_group_managers_recreate_request_resource
+ if region_instance_group_managers_set_template_request_resource is not None:
+ request.region_instance_group_managers_set_template_request_resource = (
+ region_instance_group_managers_set_template_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.recreate_instances]
+ rpc = self._transport._wrapped_methods[self._transport.set_instance_template]
# Send the request.
response = rpc(
@@ -2198,40 +3945,57 @@ def recreate_instances_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def resize_unary(
+ def set_target_pools_unary(
self,
- request: Union[compute.ResizeRegionInstanceGroupManagerRequest, dict] = None,
+ request: Union[
+ compute.SetTargetPoolsRegionInstanceGroupManagerRequest, dict
+ ] = None,
*,
project: str = None,
region: str = None,
instance_group_manager: str = None,
- size: int = None,
+ region_instance_group_managers_set_target_pools_request_resource: compute.RegionInstanceGroupManagersSetTargetPoolsRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Changes the intended size of the managed instance
- group. If you increase the size, the group creates new
- instances using the current instance template. If you
- decrease the size, the group deletes one or more
- instances. The resize operation is marked DONE if the
- resize request is successful. The underlying actions
- take additional time. You must separately verify the
- status of the creating or deleting actions with the
- listmanagedinstances method. If the group is part of a
- backend service that has enabled connection draining, it
- can take up to 60 seconds after the connection draining
- duration has elapsed before the VM instance is removed
- or deleted.
+ r"""Modifies the target pools to which all new instances
+ in this group are assigned. Existing instances in the
+ group are not affected.
Args:
- request (Union[google.cloud.compute_v1.types.ResizeRegionInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetTargetPoolsRegionInstanceGroupManagerRequest, dict]):
The request object. A request message for
- RegionInstanceGroupManagers.Resize. See the method
- description for details.
+ RegionInstanceGroupManagers.SetTargetPools. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -2249,11 +4013,9 @@ def resize_unary(
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- size (int):
- Number of instances that should exist
- in this instance group manager.
-
- This corresponds to the ``size`` field
+ region_instance_group_managers_set_target_pools_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersSetTargetPoolsRequest):
+ The body resource for this request
+ This corresponds to the ``region_instance_group_managers_set_target_pools_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -2263,28 +4025,22 @@ def resize_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, instance_group_manager, size])
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ instance_group_manager,
+ region_instance_group_managers_set_target_pools_request_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -2292,11 +4048,13 @@ def resize_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ResizeRegionInstanceGroupManagerRequest.
+ # in a compute.SetTargetPoolsRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ResizeRegionInstanceGroupManagerRequest):
- request = compute.ResizeRegionInstanceGroupManagerRequest(request)
+ if not isinstance(
+ request, compute.SetTargetPoolsRegionInstanceGroupManagerRequest
+ ):
+ request = compute.SetTargetPoolsRegionInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -2305,12 +4063,17 @@ def resize_unary(
request.region = region
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
- if size is not None:
- request.size = size
+ if (
+ region_instance_group_managers_set_target_pools_request_resource
+ is not None
+ ):
+ request.region_instance_group_managers_set_target_pools_request_resource = (
+ region_instance_group_managers_set_target_pools_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.resize]
+ rpc = self._transport._wrapped_methods[self._transport.set_target_pools]
# Send the request.
response = rpc(
@@ -2323,28 +4086,28 @@ def resize_unary(
# Done; return the response.
return response
- def set_instance_template_unary(
+ def set_target_pools(
self,
request: Union[
- compute.SetInstanceTemplateRegionInstanceGroupManagerRequest, dict
+ compute.SetTargetPoolsRegionInstanceGroupManagerRequest, dict
] = None,
*,
project: str = None,
region: str = None,
instance_group_manager: str = None,
- region_instance_group_managers_set_template_request_resource: compute.RegionInstanceGroupManagersSetTemplateRequest = None,
+ region_instance_group_managers_set_target_pools_request_resource: compute.RegionInstanceGroupManagersSetTargetPoolsRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Sets the instance template to use when creating new
- instances or recreating instances in this group.
- Existing instances are not affected.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Modifies the target pools to which all new instances
+ in this group are assigned. Existing instances in the
+ group are not affected.
Args:
- request (Union[google.cloud.compute_v1.types.SetInstanceTemplateRegionInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetTargetPoolsRegionInstanceGroupManagerRequest, dict]):
The request object. A request message for
- RegionInstanceGroupManagers.SetInstanceTemplate. See the
+ RegionInstanceGroupManagers.SetTargetPools. See the
method description for details.
project (str):
Project ID for this request.
@@ -2359,15 +4122,13 @@ def set_instance_template_unary(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
- The name of the managed instance
- group.
-
+ Name of the managed instance group.
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- region_instance_group_managers_set_template_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersSetTemplateRequest):
+ region_instance_group_managers_set_target_pools_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersSetTargetPoolsRequest):
The body resource for this request
- This corresponds to the ``region_instance_group_managers_set_template_request_resource`` field
+ This corresponds to the ``region_instance_group_managers_set_target_pools_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -2377,22 +4138,9 @@ def set_instance_template_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -2403,7 +4151,7 @@ def set_instance_template_unary(
project,
region,
instance_group_manager,
- region_instance_group_managers_set_template_request_resource,
+ region_instance_group_managers_set_target_pools_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -2413,15 +4161,13 @@ def set_instance_template_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetInstanceTemplateRegionInstanceGroupManagerRequest.
+ # in a compute.SetTargetPoolsRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.SetInstanceTemplateRegionInstanceGroupManagerRequest
+ request, compute.SetTargetPoolsRegionInstanceGroupManagerRequest
):
- request = compute.SetInstanceTemplateRegionInstanceGroupManagerRequest(
- request
- )
+ request = compute.SetTargetPoolsRegionInstanceGroupManagerRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -2430,14 +4176,17 @@ def set_instance_template_unary(
request.region = region
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
- if region_instance_group_managers_set_template_request_resource is not None:
- request.region_instance_group_managers_set_template_request_resource = (
- region_instance_group_managers_set_template_request_resource
+ if (
+ region_instance_group_managers_set_target_pools_request_resource
+ is not None
+ ):
+ request.region_instance_group_managers_set_target_pools_request_resource = (
+ region_instance_group_managers_set_target_pools_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_instance_template]
+ rpc = self._transport._wrapped_methods[self._transport.set_target_pools]
# Send the request.
response = rpc(
@@ -2447,32 +4196,58 @@ def set_instance_template_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def set_target_pools_unary(
+ def update_per_instance_configs_unary(
self,
request: Union[
- compute.SetTargetPoolsRegionInstanceGroupManagerRequest, dict
+ compute.UpdatePerInstanceConfigsRegionInstanceGroupManagerRequest, dict
] = None,
*,
project: str = None,
region: str = None,
instance_group_manager: str = None,
- region_instance_group_managers_set_target_pools_request_resource: compute.RegionInstanceGroupManagersSetTargetPoolsRequest = None,
+ region_instance_group_manager_update_instance_config_req_resource: compute.RegionInstanceGroupManagerUpdateInstanceConfigReq = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Modifies the target pools to which all new instances
- in this group are assigned. Existing instances in the
- group are not affected.
+ r"""Inserts or updates per-instance configs for the
+ managed instance group. perInstanceConfig.name serves as
+ a key used to distinguish whether to perform insert or
+ patch.
Args:
- request (Union[google.cloud.compute_v1.types.SetTargetPoolsRegionInstanceGroupManagerRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.UpdatePerInstanceConfigsRegionInstanceGroupManagerRequest, dict]):
The request object. A request message for
- RegionInstanceGroupManagers.SetTargetPools. See the
- method description for details.
+ RegionInstanceGroupManagers.UpdatePerInstanceConfigs.
+ See the method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -2480,19 +4255,21 @@ def set_target_pools_unary(
should not be set.
region (str):
Name of the region scoping this
- request.
+ request, should conform to RFC1035.
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
instance_group_manager (str):
- Name of the managed instance group.
+ The name of the managed instance
+ group. It should conform to RFC1035.
+
This corresponds to the ``instance_group_manager`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- region_instance_group_managers_set_target_pools_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagersSetTargetPoolsRequest):
+ region_instance_group_manager_update_instance_config_req_resource (google.cloud.compute_v1.types.RegionInstanceGroupManagerUpdateInstanceConfigReq):
The body resource for this request
- This corresponds to the ``region_instance_group_managers_set_target_pools_request_resource`` field
+ This corresponds to the ``region_instance_group_manager_update_instance_config_req_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -2502,22 +4279,9 @@ def set_target_pools_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -2528,7 +4292,7 @@ def set_target_pools_unary(
project,
region,
instance_group_manager,
- region_instance_group_managers_set_target_pools_request_resource,
+ region_instance_group_manager_update_instance_config_req_resource,
]
)
if request is not None and has_flattened_params:
@@ -2538,13 +4302,15 @@ def set_target_pools_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetTargetPoolsRegionInstanceGroupManagerRequest.
+ # in a compute.UpdatePerInstanceConfigsRegionInstanceGroupManagerRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.SetTargetPoolsRegionInstanceGroupManagerRequest
+ request, compute.UpdatePerInstanceConfigsRegionInstanceGroupManagerRequest
):
- request = compute.SetTargetPoolsRegionInstanceGroupManagerRequest(request)
+ request = compute.UpdatePerInstanceConfigsRegionInstanceGroupManagerRequest(
+ request
+ )
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -2554,16 +4320,18 @@ def set_target_pools_unary(
if instance_group_manager is not None:
request.instance_group_manager = instance_group_manager
if (
- region_instance_group_managers_set_target_pools_request_resource
+ region_instance_group_manager_update_instance_config_req_resource
is not None
):
- request.region_instance_group_managers_set_target_pools_request_resource = (
- region_instance_group_managers_set_target_pools_request_resource
+ request.region_instance_group_manager_update_instance_config_req_resource = (
+ region_instance_group_manager_update_instance_config_req_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_target_pools]
+ rpc = self._transport._wrapped_methods[
+ self._transport.update_per_instance_configs
+ ]
# Send the request.
response = rpc(
@@ -2576,7 +4344,7 @@ def set_target_pools_unary(
# Done; return the response.
return response
- def update_per_instance_configs_unary(
+ def update_per_instance_configs(
self,
request: Union[
compute.UpdatePerInstanceConfigsRegionInstanceGroupManagerRequest, dict
@@ -2589,7 +4357,7 @@ def update_per_instance_configs_unary(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
+ ) -> extended_operation.ExtendedOperation:
r"""Inserts or updates per-instance configs for the
managed instance group. perInstanceConfig.name serves as
a key used to distinguish whether to perform insert or
@@ -2631,22 +4399,9 @@ def update_per_instance_configs_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -2706,6 +4461,31 @@ def update_per_instance_configs_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/region_instance_group_managers/transports/base.py b/google/cloud/compute_v1/services/region_instance_group_managers/transports/base.py
index 9fc17b64f..5f803d6c8 100644
--- a/google/cloud/compute_v1/services/region_instance_group_managers/transports/base.py
+++ b/google/cloud/compute_v1/services/region_instance_group_managers/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -412,5 +415,21 @@ def update_per_instance_configs(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionInstanceGroupManagersTransport",)
diff --git a/google/cloud/compute_v1/services/region_instance_group_managers/transports/rest.py b/google/cloud/compute_v1/services/region_instance_group_managers/transports/rest.py
index 95cf03d60..1b340c7c1 100644
--- a/google/cloud/compute_v1/services/region_instance_group_managers/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_instance_group_managers/transports/rest.py
@@ -3193,6 +3193,10 @@ def update_per_instance_configs(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_instance_groups/client.py b/google/cloud/compute_v1/services/region_instance_groups/client.py
index 1f16f7060..7e3af5537 100644
--- a/google/cloud/compute_v1/services/region_instance_groups/client.py
+++ b/google/cloud/compute_v1/services/region_instance_groups/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_instance_groups import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionInstanceGroupsTransport, DEFAULT_CLIENT_INFO
@@ -766,22 +769,9 @@ def set_named_ports_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -835,6 +825,138 @@ def set_named_ports_unary(
# Done; return the response.
return response
+ def set_named_ports(
+ self,
+ request: Union[compute.SetNamedPortsRegionInstanceGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ instance_group: str = None,
+ region_instance_groups_set_named_ports_request_resource: compute.RegionInstanceGroupsSetNamedPortsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the named ports for the specified regional
+ instance group.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetNamedPortsRegionInstanceGroupRequest, dict]):
+ The request object. A request message for
+ RegionInstanceGroups.SetNamedPorts. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_group (str):
+ The name of the regional instance
+ group where the named ports are updated.
+
+ This corresponds to the ``instance_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region_instance_groups_set_named_ports_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupsSetNamedPortsRequest):
+ The body resource for this request
+ This corresponds to the ``region_instance_groups_set_named_ports_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ instance_group,
+ region_instance_groups_set_named_ports_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetNamedPortsRegionInstanceGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetNamedPortsRegionInstanceGroupRequest):
+ request = compute.SetNamedPortsRegionInstanceGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if instance_group is not None:
+ request.instance_group = instance_group
+ if region_instance_groups_set_named_ports_request_resource is not None:
+ request.region_instance_groups_set_named_ports_request_resource = (
+ region_instance_groups_set_named_ports_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_named_ports]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/region_instance_groups/transports/base.py b/google/cloud/compute_v1/services/region_instance_groups/transports/base.py
index f662225cf..09f64a5f4 100644
--- a/google/cloud/compute_v1/services/region_instance_groups/transports/base.py
+++ b/google/cloud/compute_v1/services/region_instance_groups/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -195,5 +198,21 @@ def set_named_ports(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionInstanceGroupsTransport",)
diff --git a/google/cloud/compute_v1/services/region_instance_groups/transports/rest.py b/google/cloud/compute_v1/services/region_instance_groups/transports/rest.py
index c09fe53a2..ba0246dc0 100644
--- a/google/cloud/compute_v1/services/region_instance_groups/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_instance_groups/transports/rest.py
@@ -762,6 +762,10 @@ def set_named_ports(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_instances/client.py b/google/cloud/compute_v1/services/region_instances/client.py
index 2d9aafca7..8c186bb5f 100644
--- a/google/cloud/compute_v1/services/region_instances/client.py
+++ b/google/cloud/compute_v1/services/region_instances/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.types import compute
from .transports.base import RegionInstancesTransport, DEFAULT_CLIENT_INFO
from .transports.rest import RegionInstancesRestTransport
@@ -444,22 +447,9 @@ def bulk_insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -506,6 +496,123 @@ def bulk_insert_unary(
# Done; return the response.
return response
+ def bulk_insert(
+ self,
+ request: Union[compute.BulkInsertRegionInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ bulk_insert_instance_resource_resource: compute.BulkInsertInstanceResource = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates multiple instances in a given region. Count
+ specifies the number of instances to create.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.BulkInsertRegionInstanceRequest, dict]):
+ The request object. A request message for
+ RegionInstances.BulkInsert. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ The name of the region for this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ bulk_insert_instance_resource_resource (google.cloud.compute_v1.types.BulkInsertInstanceResource):
+ The body resource for this request
+ This corresponds to the ``bulk_insert_instance_resource_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, bulk_insert_instance_resource_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.BulkInsertRegionInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.BulkInsertRegionInstanceRequest):
+ request = compute.BulkInsertRegionInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if bulk_insert_instance_resource_resource is not None:
+ request.bulk_insert_instance_resource_resource = (
+ bulk_insert_instance_resource_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.bulk_insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/region_instances/transports/base.py b/google/cloud/compute_v1/services/region_instances/transports/base.py
index 03b8a6229..adfcd3fd3 100644
--- a/google/cloud/compute_v1/services/region_instances/transports/base.py
+++ b/google/cloud/compute_v1/services/region_instances/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -148,5 +151,21 @@ def bulk_insert(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionInstancesTransport",)
diff --git a/google/cloud/compute_v1/services/region_instances/transports/rest.py b/google/cloud/compute_v1/services/region_instances/transports/rest.py
index c9a7ca2c7..19eda7df6 100644
--- a/google/cloud/compute_v1/services/region_instances/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_instances/transports/rest.py
@@ -324,6 +324,10 @@ def bulk_insert(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_network_endpoint_groups/client.py b/google/cloud/compute_v1/services/region_network_endpoint_groups/client.py
index 558018ce6..0af33692d 100644
--- a/google/cloud/compute_v1/services/region_network_endpoint_groups/client.py
+++ b/google/cloud/compute_v1/services/region_network_endpoint_groups/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_network_endpoint_groups import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionNetworkEndpointGroupsTransport, DEFAULT_CLIENT_INFO
@@ -452,22 +455,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -510,6 +500,124 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteRegionNetworkEndpointGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ network_endpoint_group: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified network endpoint group. Note
+ that the NEG cannot be deleted if it is configured as a
+ backend of a backend service.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteRegionNetworkEndpointGroupRequest, dict]):
+ The request object. A request message for
+ RegionNetworkEndpointGroups.Delete. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ The name of the region where the
+ network endpoint group is located. It
+ should comply with RFC1035.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_endpoint_group (str):
+ The name of the network endpoint
+ group to delete. It should comply with
+ RFC1035.
+
+ This corresponds to the ``network_endpoint_group`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, network_endpoint_group])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteRegionNetworkEndpointGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteRegionNetworkEndpointGroupRequest):
+ request = compute.DeleteRegionNetworkEndpointGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if network_endpoint_group is not None:
+ request.network_endpoint_group = network_endpoint_group
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetRegionNetworkEndpointGroupRequest, dict] = None,
@@ -656,22 +764,101 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, network_endpoint_group_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionNetworkEndpointGroupRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionNetworkEndpointGroupRequest):
+ request = compute.InsertRegionNetworkEndpointGroupRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if network_endpoint_group_resource is not None:
+ request.network_endpoint_group_resource = (
+ network_endpoint_group_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertRegionNetworkEndpointGroupRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ network_endpoint_group_resource: compute.NetworkEndpointGroup = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a network endpoint group in the specified
+ project using the parameters that are included in the
+ request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionNetworkEndpointGroupRequest, dict]):
+ The request object. A request message for
+ RegionNetworkEndpointGroups.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ The name of the region where you want
+ to create the network endpoint group. It
+ should comply with RFC1035.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network_endpoint_group_resource (google.cloud.compute_v1.types.NetworkEndpointGroup):
+ The body resource for this request
+ This corresponds to the ``network_endpoint_group_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -713,6 +900,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/region_network_endpoint_groups/transports/base.py b/google/cloud/compute_v1/services/region_network_endpoint_groups/transports/base.py
index 90ce19ec3..0c0455105 100644
--- a/google/cloud/compute_v1/services/region_network_endpoint_groups/transports/base.py
+++ b/google/cloud/compute_v1/services/region_network_endpoint_groups/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -193,5 +196,21 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionNetworkEndpointGroupsTransport",)
diff --git a/google/cloud/compute_v1/services/region_network_endpoint_groups/transports/rest.py b/google/cloud/compute_v1/services/region_network_endpoint_groups/transports/rest.py
index f69d72d42..dff0dcc32 100644
--- a/google/cloud/compute_v1/services/region_network_endpoint_groups/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_network_endpoint_groups/transports/rest.py
@@ -766,6 +766,10 @@ def list(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_network_firewall_policies/client.py b/google/cloud/compute_v1/services/region_network_firewall_policies/client.py
index 479d617e1..c23a0512f 100644
--- a/google/cloud/compute_v1/services/region_network_firewall_policies/client.py
+++ b/google/cloud/compute_v1/services/region_network_firewall_policies/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_network_firewall_policies import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionNetworkFirewallPoliciesTransport, DEFAULT_CLIENT_INFO
@@ -457,22 +460,9 @@ def add_association_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -523,25 +513,28 @@ def add_association_unary(
# Done; return the response.
return response
- def add_rule_unary(
+ def add_association(
self,
- request: Union[compute.AddRuleRegionNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[
+ compute.AddAssociationRegionNetworkFirewallPolicyRequest, dict
+ ] = None,
*,
project: str = None,
region: str = None,
firewall_policy: str = None,
- firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
+ firewall_policy_association_resource: compute.FirewallPolicyAssociation = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Inserts a rule into a network firewall policy.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Inserts an association for the specified network
+ firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.AddRuleRegionNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.AddAssociationRegionNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- RegionNetworkFirewallPolicies.AddRule. See the method
- description for details.
+ RegionNetworkFirewallPolicies.AddAssociation. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -561,9 +554,9 @@ def add_rule_unary(
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
+ firewall_policy_association_resource (google.cloud.compute_v1.types.FirewallPolicyAssociation):
The body resource for this request
- This corresponds to the ``firewall_policy_rule_resource`` field
+ This corresponds to the ``firewall_policy_association_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -573,29 +566,16 @@ def add_rule_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
has_flattened_params = any(
- [project, region, firewall_policy, firewall_policy_rule_resource]
+ [project, region, firewall_policy, firewall_policy_association_resource]
)
if request is not None and has_flattened_params:
raise ValueError(
@@ -604,11 +584,13 @@ def add_rule_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.AddRuleRegionNetworkFirewallPolicyRequest.
+ # in a compute.AddAssociationRegionNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.AddRuleRegionNetworkFirewallPolicyRequest):
- request = compute.AddRuleRegionNetworkFirewallPolicyRequest(request)
+ if not isinstance(
+ request, compute.AddAssociationRegionNetworkFirewallPolicyRequest
+ ):
+ request = compute.AddAssociationRegionNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -617,12 +599,14 @@ def add_rule_unary(
request.region = region
if firewall_policy is not None:
request.firewall_policy = firewall_policy
- if firewall_policy_rule_resource is not None:
- request.firewall_policy_rule_resource = firewall_policy_rule_resource
+ if firewall_policy_association_resource is not None:
+ request.firewall_policy_association_resource = (
+ firewall_policy_association_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.add_rule]
+ rpc = self._transport._wrapped_methods[self._transport.add_association]
# Send the request.
response = rpc(
@@ -632,29 +616,52 @@ def add_rule_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def clone_rules_unary(
+ def add_rule_unary(
self,
- request: Union[
- compute.CloneRulesRegionNetworkFirewallPolicyRequest, dict
- ] = None,
+ request: Union[compute.AddRuleRegionNetworkFirewallPolicyRequest, dict] = None,
*,
project: str = None,
region: str = None,
firewall_policy: str = None,
+ firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Copies rules to the specified network firewall
- policy.
+ r"""Inserts a rule into a network firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.CloneRulesRegionNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.AddRuleRegionNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- RegionNetworkFirewallPolicies.CloneRules. See the method
+ RegionNetworkFirewallPolicies.AddRule. See the method
description for details.
project (str):
Project ID for this request.
@@ -675,6 +682,11 @@ def clone_rules_unary(
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -682,28 +694,17 @@ def clone_rules_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, firewall_policy])
+ has_flattened_params = any(
+ [project, region, firewall_policy, firewall_policy_rule_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -711,13 +712,11 @@ def clone_rules_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.CloneRulesRegionNetworkFirewallPolicyRequest.
+ # in a compute.AddRuleRegionNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(
- request, compute.CloneRulesRegionNetworkFirewallPolicyRequest
- ):
- request = compute.CloneRulesRegionNetworkFirewallPolicyRequest(request)
+ if not isinstance(request, compute.AddRuleRegionNetworkFirewallPolicyRequest):
+ request = compute.AddRuleRegionNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -726,10 +725,12 @@ def clone_rules_unary(
request.region = region
if firewall_policy is not None:
request.firewall_policy = firewall_policy
+ if firewall_policy_rule_resource is not None:
+ request.firewall_policy_rule_resource = firewall_policy_rule_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.clone_rules]
+ rpc = self._transport._wrapped_methods[self._transport.add_rule]
# Send the request.
response = rpc(
@@ -742,23 +743,24 @@ def clone_rules_unary(
# Done; return the response.
return response
- def delete_unary(
+ def add_rule(
self,
- request: Union[compute.DeleteRegionNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[compute.AddRuleRegionNetworkFirewallPolicyRequest, dict] = None,
*,
project: str = None,
region: str = None,
firewall_policy: str = None,
+ firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Deletes the specified network firewall policy.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Inserts a rule into a network firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.DeleteRegionNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.AddRuleRegionNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- RegionNetworkFirewallPolicies.Delete. See the method
+ RegionNetworkFirewallPolicies.AddRule. See the method
description for details.
project (str):
Project ID for this request.
@@ -774,11 +776,16 @@ def delete_unary(
should not be set.
firewall_policy (str):
Name of the firewall policy to
- delete.
+ update.
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -786,28 +793,17 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, firewall_policy])
+ has_flattened_params = any(
+ [project, region, firewall_policy, firewall_policy_rule_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -815,11 +811,11 @@ def delete_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.DeleteRegionNetworkFirewallPolicyRequest.
+ # in a compute.AddRuleRegionNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.DeleteRegionNetworkFirewallPolicyRequest):
- request = compute.DeleteRegionNetworkFirewallPolicyRequest(request)
+ if not isinstance(request, compute.AddRuleRegionNetworkFirewallPolicyRequest):
+ request = compute.AddRuleRegionNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -828,10 +824,12 @@ def delete_unary(
request.region = region
if firewall_policy is not None:
request.firewall_policy = firewall_policy
+ if firewall_policy_rule_resource is not None:
+ request.firewall_policy_rule_resource = firewall_policy_rule_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.delete]
+ rpc = self._transport._wrapped_methods[self._transport.add_rule]
# Send the request.
response = rpc(
@@ -841,12 +839,39 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def get(
+ def clone_rules_unary(
self,
- request: Union[compute.GetRegionNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[
+ compute.CloneRulesRegionNetworkFirewallPolicyRequest, dict
+ ] = None,
*,
project: str = None,
region: str = None,
@@ -854,13 +879,14 @@ def get(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.FirewallPolicy:
- r"""Returns the specified network firewall policy.
+ ) -> compute.Operation:
+ r"""Copies rules to the specified network firewall
+ policy.
Args:
- request (Union[google.cloud.compute_v1.types.GetRegionNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.CloneRulesRegionNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- RegionNetworkFirewallPolicies.Get. See the method
+ RegionNetworkFirewallPolicies.CloneRules. See the method
description for details.
project (str):
Project ID for this request.
@@ -875,7 +901,9 @@ def get(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
firewall_policy (str):
- Name of the firewall policy to get.
+ Name of the firewall policy to
+ update.
+
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
@@ -886,9 +914,9 @@ def get(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.FirewallPolicy:
- Represents a Firewall Policy
- resource.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -902,11 +930,13 @@ def get(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetRegionNetworkFirewallPolicyRequest.
+ # in a compute.CloneRulesRegionNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetRegionNetworkFirewallPolicyRequest):
- request = compute.GetRegionNetworkFirewallPolicyRequest(request)
+ if not isinstance(
+ request, compute.CloneRulesRegionNetworkFirewallPolicyRequest
+ ):
+ request = compute.CloneRulesRegionNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -918,7 +948,7 @@ def get(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get]
+ rpc = self._transport._wrapped_methods[self._transport.clone_rules]
# Send the request.
response = rpc(
@@ -931,10 +961,10 @@ def get(
# Done; return the response.
return response
- def get_association(
+ def clone_rules(
self,
request: Union[
- compute.GetAssociationRegionNetworkFirewallPolicyRequest, dict
+ compute.CloneRulesRegionNetworkFirewallPolicyRequest, dict
] = None,
*,
project: str = None,
@@ -943,14 +973,15 @@ def get_association(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.FirewallPolicyAssociation:
- r"""Gets an association with the specified name.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Copies rules to the specified network firewall
+ policy.
Args:
- request (Union[google.cloud.compute_v1.types.GetAssociationRegionNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.CloneRulesRegionNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- RegionNetworkFirewallPolicies.GetAssociation. See the
- method description for details.
+ RegionNetworkFirewallPolicies.CloneRules. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -964,8 +995,8 @@ def get_association(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
firewall_policy (str):
- Name of the firewall policy to which
- the queried association belongs.
+ Name of the firewall policy to
+ update.
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
@@ -977,7 +1008,9 @@ def get_association(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.FirewallPolicyAssociation:
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -991,13 +1024,13 @@ def get_association(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetAssociationRegionNetworkFirewallPolicyRequest.
+ # in a compute.CloneRulesRegionNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.GetAssociationRegionNetworkFirewallPolicyRequest
+ request, compute.CloneRulesRegionNetworkFirewallPolicyRequest
):
- request = compute.GetAssociationRegionNetworkFirewallPolicyRequest(request)
+ request = compute.CloneRulesRegionNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1009,7 +1042,7 @@ def get_association(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_association]
+ rpc = self._transport._wrapped_methods[self._transport.clone_rules]
# Send the request.
response = rpc(
@@ -1019,29 +1052,52 @@ def get_association(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def get_effective_firewalls(
+ def delete_unary(
self,
- request: Union[
- compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest, dict
- ] = None,
+ request: Union[compute.DeleteRegionNetworkFirewallPolicyRequest, dict] = None,
*,
project: str = None,
region: str = None,
- network: str = None,
+ firewall_policy: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse:
- r"""Returns the effective firewalls on a given network.
+ ) -> compute.Operation:
+ r"""Deletes the specified network firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteRegionNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- RegionNetworkFirewallPolicies.GetEffectiveFirewalls. See
- the method description for details.
+ RegionNetworkFirewallPolicies.Delete. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1054,9 +1110,11 @@ def get_effective_firewalls(
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- network (str):
- Network reference
- This corresponds to the ``network`` field
+ firewall_policy (str):
+ Name of the firewall policy to
+ delete.
+
+ This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1066,13 +1124,15 @@ def get_effective_firewalls(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse:
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, network])
+ has_flattened_params = any([project, region, firewall_policy])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1080,27 +1140,23 @@ def get_effective_firewalls(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest.
+ # in a compute.DeleteRegionNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(
- request, compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest
- ):
- request = compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest(
- request
- )
+ if not isinstance(request, compute.DeleteRegionNetworkFirewallPolicyRequest):
+ request = compute.DeleteRegionNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if region is not None:
request.region = region
- if network is not None:
- request.network = network
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_effective_firewalls]
+ rpc = self._transport._wrapped_methods[self._transport.delete]
# Send the request.
response = rpc(
@@ -1113,44 +1169,41 @@ def get_effective_firewalls(
# Done; return the response.
return response
- def get_iam_policy(
+ def delete(
self,
- request: Union[
- compute.GetIamPolicyRegionNetworkFirewallPolicyRequest, dict
- ] = None,
+ request: Union[compute.DeleteRegionNetworkFirewallPolicyRequest, dict] = None,
*,
project: str = None,
region: str = None,
- resource: str = None,
+ firewall_policy: str = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Policy:
- r"""Gets the access control policy for a resource. May be
- empty if no such policy or resource exists.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified network firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.GetIamPolicyRegionNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteRegionNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- RegionNetworkFirewallPolicies.GetIamPolicy. See the
- method description for details.
+ RegionNetworkFirewallPolicies.Delete. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
region (str):
- The name of the region for this
+ Name of the region scoping this
request.
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- resource (str):
- Name or id of the resource for this
- request.
+ firewall_policy (str):
+ Name of the firewall policy to
+ delete.
- This corresponds to the ``resource`` field
+ This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1160,53 +1213,15 @@ def get_iam_policy(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Policy:
- An Identity and Access Management (IAM) policy, which
- specifies access controls for Google Cloud resources. A
- Policy is a collection of bindings. A binding binds one
- or more members, or principals, to a single role.
- Principals can be user accounts, service accounts,
- Google groups, and domains (such as G Suite). A role is
- a named list of permissions; each role can be an IAM
- predefined role or a user-created custom role. For some
- types of Google Cloud resources, a binding can also
- specify a condition, which is a logical expression that
- allows access to a resource only if the expression
- evaluates to true. A condition can add constraints based
- on attributes of the request, the resource, or both. To
- learn which resources support conditions in their IAM
- policies, see the [IAM
- documentation](\ https://cloud.google.com/iam/help/conditions/resource-policies).
- **JSON example:** { "bindings": [ { "role":
- "roles/resourcemanager.organizationAdmin", "members": [
- "user:mike@example.com", "group:admins@example.com",
- "domain:google.com",
- "serviceAccount:my-project-id@appspot.gserviceaccount.com"
- ] }, { "role":
- "roles/resourcemanager.organizationViewer", "members": [
- "user:eve@example.com" ], "condition": { "title":
- "expirable access", "description": "Does not grant
- access after Sep 2020", "expression": "request.time <
- timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
- "BwWWja0YfJA=", "version": 3 } **YAML example:**
- bindings: - members: - user:\ mike@example.com -
- group:\ admins@example.com - domain:google.com -
- serviceAccount:\ my-project-id@appspot.gserviceaccount.com
- role: roles/resourcemanager.organizationAdmin - members:
- - user:\ eve@example.com role:
- roles/resourcemanager.organizationViewer condition:
- title: expirable access description: Does not grant
- access after Sep 2020 expression: request.time <
- timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
- version: 3 For a description of IAM and its features,
- see the [IAM
- documentation](\ https://cloud.google.com/iam/docs/).
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, resource])
+ has_flattened_params = any([project, region, firewall_policy])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1214,25 +1229,931 @@ def get_iam_policy(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetIamPolicyRegionNetworkFirewallPolicyRequest.
+ # in a compute.DeleteRegionNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteRegionNetworkFirewallPolicyRequest):
+ request = compute.DeleteRegionNetworkFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def get(
+ self,
+ request: Union[compute.GetRegionNetworkFirewallPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ firewall_policy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.FirewallPolicy:
+ r"""Returns the specified network firewall policy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetRegionNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ RegionNetworkFirewallPolicies.Get. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy (str):
+ Name of the firewall policy to get.
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.FirewallPolicy:
+ Represents a Firewall Policy
+ resource.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, firewall_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetRegionNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetRegionNetworkFirewallPolicyRequest):
+ request = compute.GetRegionNetworkFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_association(
+ self,
+ request: Union[
+ compute.GetAssociationRegionNetworkFirewallPolicyRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ firewall_policy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.FirewallPolicyAssociation:
+ r"""Gets an association with the specified name.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetAssociationRegionNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ RegionNetworkFirewallPolicies.GetAssociation. See the
+ method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy (str):
+ Name of the firewall policy to which
+ the queried association belongs.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.FirewallPolicyAssociation:
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, firewall_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetAssociationRegionNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.GetIamPolicyRegionNetworkFirewallPolicyRequest
+ request, compute.GetAssociationRegionNetworkFirewallPolicyRequest
):
- request = compute.GetIamPolicyRegionNetworkFirewallPolicyRequest(request)
+ request = compute.GetAssociationRegionNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if region is not None:
request.region = region
- if resource is not None:
- request.resource = resource
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_iam_policy]
+ rpc = self._transport._wrapped_methods[self._transport.get_association]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_effective_firewalls(
+ self,
+ request: Union[
+ compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ network: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse:
+ r"""Returns the effective firewalls on a given network.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ RegionNetworkFirewallPolicies.GetEffectiveFirewalls. See
+ the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ network (str):
+ Network reference
+ This corresponds to the ``network`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse:
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, network])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest
+ ):
+ request = compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest(
+ request
+ )
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if network is not None:
+ request.network = network
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_effective_firewalls]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_iam_policy(
+ self,
+ request: Union[
+ compute.GetIamPolicyRegionNetworkFirewallPolicyRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ resource: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Policy:
+ r"""Gets the access control policy for a resource. May be
+ empty if no such policy or resource exists.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetIamPolicyRegionNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ RegionNetworkFirewallPolicies.GetIamPolicy. See the
+ method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ The name of the region for this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.Policy:
+ An Identity and Access Management (IAM) policy, which
+ specifies access controls for Google Cloud resources. A
+ Policy is a collection of bindings. A binding binds one
+ or more members, or principals, to a single role.
+ Principals can be user accounts, service accounts,
+ Google groups, and domains (such as G Suite). A role is
+ a named list of permissions; each role can be an IAM
+ predefined role or a user-created custom role. For some
+ types of Google Cloud resources, a binding can also
+ specify a condition, which is a logical expression that
+ allows access to a resource only if the expression
+ evaluates to true. A condition can add constraints based
+ on attributes of the request, the resource, or both. To
+ learn which resources support conditions in their IAM
+ policies, see the [IAM
+ documentation](\ https://cloud.google.com/iam/help/conditions/resource-policies).
+ **JSON example:** { "bindings": [ { "role":
+ "roles/resourcemanager.organizationAdmin", "members": [
+ "user:mike@example.com", "group:admins@example.com",
+ "domain:google.com",
+ "serviceAccount:my-project-id@appspot.gserviceaccount.com"
+ ] }, { "role":
+ "roles/resourcemanager.organizationViewer", "members": [
+ "user:eve@example.com" ], "condition": { "title":
+ "expirable access", "description": "Does not grant
+ access after Sep 2020", "expression": "request.time <
+ timestamp('2020-10-01T00:00:00.000Z')", } } ], "etag":
+ "BwWWja0YfJA=", "version": 3 } **YAML example:**
+ bindings: - members: - user:\ mike@example.com -
+ group:\ admins@example.com - domain:google.com -
+ serviceAccount:\ my-project-id@appspot.gserviceaccount.com
+ role: roles/resourcemanager.organizationAdmin - members:
+ - user:\ eve@example.com role:
+ roles/resourcemanager.organizationViewer condition:
+ title: expirable access description: Does not grant
+ access after Sep 2020 expression: request.time <
+ timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA=
+ version: 3 For a description of IAM and its features,
+ see the [IAM
+ documentation](\ https://cloud.google.com/iam/docs/).
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetIamPolicyRegionNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.GetIamPolicyRegionNetworkFirewallPolicyRequest
+ ):
+ request = compute.GetIamPolicyRegionNetworkFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if resource is not None:
+ request.resource = resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_iam_policy]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_rule(
+ self,
+ request: Union[compute.GetRuleRegionNetworkFirewallPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ firewall_policy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.FirewallPolicyRule:
+ r"""Gets a rule of the specified priority.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetRuleRegionNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ RegionNetworkFirewallPolicies.GetRule. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy (str):
+ Name of the firewall policy to which
+ the queried rule belongs.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.FirewallPolicyRule:
+ Represents a rule that describes one
+ or more match conditions along with the
+ action to be taken when traffic matches
+ this condition (allow or deny).
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, firewall_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetRuleRegionNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetRuleRegionNetworkFirewallPolicyRequest):
+ request = compute.GetRuleRegionNetworkFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_rule]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert_unary(
+ self,
+ request: Union[compute.InsertRegionNetworkFirewallPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ firewall_policy_resource: compute.FirewallPolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Creates a new network firewall policy in the
+ specified project and region.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ RegionNetworkFirewallPolicies.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, firewall_policy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionNetworkFirewallPolicyRequest):
+ request = compute.InsertRegionNetworkFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if firewall_policy_resource is not None:
+ request.firewall_policy_resource = firewall_policy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertRegionNetworkFirewallPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ firewall_policy_resource: compute.FirewallPolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a new network firewall policy in the
+ specified project and region.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ RegionNetworkFirewallPolicies.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, firewall_policy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionNetworkFirewallPolicyRequest):
+ request = compute.InsertRegionNetworkFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if firewall_policy_resource is not None:
+ request.firewall_policy_resource = firewall_policy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def list(
+ self,
+ request: Union[compute.ListRegionNetworkFirewallPoliciesRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListPager:
+ r"""Lists all the network firewall policies that have
+ been configured for the specified project in the given
+ region.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListRegionNetworkFirewallPoliciesRequest, dict]):
+ The request object. A request message for
+ RegionNetworkFirewallPolicies.List. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.region_network_firewall_policies.pagers.ListPager:
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListRegionNetworkFirewallPoliciesRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ListRegionNetworkFirewallPoliciesRequest):
+ request = compute.ListRegionNetworkFirewallPoliciesRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch_unary(
+ self,
+ request: Union[compute.PatchRegionNetworkFirewallPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ firewall_policy: str = None,
+ firewall_policy_resource: compute.FirewallPolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Patches the specified network firewall policy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchRegionNetworkFirewallPolicyRequest, dict]):
+ The request object. A request message for
+ RegionNetworkFirewallPolicies.Patch. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy (str):
+ Name of the firewall policy to
+ update.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, firewall_policy, firewall_policy_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchRegionNetworkFirewallPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchRegionNetworkFirewallPolicyRequest):
+ request = compute.PatchRegionNetworkFirewallPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+ if firewall_policy_resource is not None:
+ request.firewall_policy_resource = firewall_policy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
# Send the request.
response = rpc(
@@ -1245,23 +2166,24 @@ def get_iam_policy(
# Done; return the response.
return response
- def get_rule(
+ def patch(
self,
- request: Union[compute.GetRuleRegionNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[compute.PatchRegionNetworkFirewallPolicyRequest, dict] = None,
*,
project: str = None,
region: str = None,
firewall_policy: str = None,
+ firewall_policy_resource: compute.FirewallPolicy = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.FirewallPolicyRule:
- r"""Gets a rule of the specified priority.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified network firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.GetRuleRegionNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.PatchRegionNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- RegionNetworkFirewallPolicies.GetRule. See the method
+ RegionNetworkFirewallPolicies.Patch. See the method
description for details.
project (str):
Project ID for this request.
@@ -1276,12 +2198,17 @@ def get_rule(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
firewall_policy (str):
- Name of the firewall policy to which
- the queried rule belongs.
+ Name of the firewall policy to
+ update.
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1289,17 +2216,17 @@ def get_rule(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.FirewallPolicyRule:
- Represents a rule that describes one
- or more match conditions along with the
- action to be taken when traffic matches
- this condition (allow or deny).
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, firewall_policy])
+ has_flattened_params = any(
+ [project, region, firewall_policy, firewall_policy_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1307,11 +2234,11 @@ def get_rule(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetRuleRegionNetworkFirewallPolicyRequest.
+ # in a compute.PatchRegionNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetRuleRegionNetworkFirewallPolicyRequest):
- request = compute.GetRuleRegionNetworkFirewallPolicyRequest(request)
+ if not isinstance(request, compute.PatchRegionNetworkFirewallPolicyRequest):
+ request = compute.PatchRegionNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1320,10 +2247,12 @@ def get_rule(
request.region = region
if firewall_policy is not None:
request.firewall_policy = firewall_policy
+ if firewall_policy_resource is not None:
+ request.firewall_policy_resource = firewall_policy_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_rule]
+ rpc = self._transport._wrapped_methods[self._transport.patch]
# Send the request.
response = rpc(
@@ -1333,27 +2262,54 @@ def get_rule(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def insert_unary(
+ def patch_rule_unary(
self,
- request: Union[compute.InsertRegionNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[
+ compute.PatchRuleRegionNetworkFirewallPolicyRequest, dict
+ ] = None,
*,
project: str = None,
region: str = None,
- firewall_policy_resource: compute.FirewallPolicy = None,
+ firewall_policy: str = None,
+ firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Creates a new network firewall policy in the
- specified project and region.
+ r"""Patches a rule of the specified priority.
Args:
- request (Union[google.cloud.compute_v1.types.InsertRegionNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.PatchRuleRegionNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- RegionNetworkFirewallPolicies.Insert. See the method
+ RegionNetworkFirewallPolicies.PatchRule. See the method
description for details.
project (str):
Project ID for this request.
@@ -1367,9 +2323,16 @@ def insert_unary(
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
+ firewall_policy (str):
+ Name of the firewall policy to
+ update.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
The body resource for this request
- This corresponds to the ``firewall_policy_resource`` field
+ This corresponds to the ``firewall_policy_rule_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1379,28 +2342,17 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, firewall_policy_resource])
+ has_flattened_params = any(
+ [project, region, firewall_policy, firewall_policy_rule_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1408,23 +2360,25 @@ def insert_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.InsertRegionNetworkFirewallPolicyRequest.
+ # in a compute.PatchRuleRegionNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.InsertRegionNetworkFirewallPolicyRequest):
- request = compute.InsertRegionNetworkFirewallPolicyRequest(request)
+ if not isinstance(request, compute.PatchRuleRegionNetworkFirewallPolicyRequest):
+ request = compute.PatchRuleRegionNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if region is not None:
request.region = region
- if firewall_policy_resource is not None:
- request.firewall_policy_resource = firewall_policy_resource
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+ if firewall_policy_rule_resource is not None:
+ request.firewall_policy_rule_resource = firewall_policy_rule_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.insert]
+ rpc = self._transport._wrapped_methods[self._transport.patch_rule]
# Send the request.
response = rpc(
@@ -1437,24 +2391,26 @@ def insert_unary(
# Done; return the response.
return response
- def list(
+ def patch_rule(
self,
- request: Union[compute.ListRegionNetworkFirewallPoliciesRequest, dict] = None,
+ request: Union[
+ compute.PatchRuleRegionNetworkFirewallPolicyRequest, dict
+ ] = None,
*,
project: str = None,
region: str = None,
+ firewall_policy: str = None,
+ firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListPager:
- r"""Lists all the network firewall policies that have
- been configured for the specified project in the given
- region.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches a rule of the specified priority.
Args:
- request (Union[google.cloud.compute_v1.types.ListRegionNetworkFirewallPoliciesRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.PatchRuleRegionNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- RegionNetworkFirewallPolicies.List. See the method
+ RegionNetworkFirewallPolicies.PatchRule. See the method
description for details.
project (str):
Project ID for this request.
@@ -1468,6 +2424,18 @@ def list(
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ firewall_policy (str):
+ Name of the firewall policy to
+ update.
+
+ This corresponds to the ``firewall_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
+ The body resource for this request
+ This corresponds to the ``firewall_policy_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1475,16 +2443,17 @@ def list(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.region_network_firewall_policies.pagers.ListPager:
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region])
+ has_flattened_params = any(
+ [project, region, firewall_policy, firewall_policy_rule_resource]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1492,21 +2461,25 @@ def list(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListRegionNetworkFirewallPoliciesRequest.
+ # in a compute.PatchRuleRegionNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ListRegionNetworkFirewallPoliciesRequest):
- request = compute.ListRegionNetworkFirewallPoliciesRequest(request)
+ if not isinstance(request, compute.PatchRuleRegionNetworkFirewallPolicyRequest):
+ request = compute.PatchRuleRegionNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if region is not None:
request.region = region
+ if firewall_policy is not None:
+ request.firewall_policy = firewall_policy
+ if firewall_policy_rule_resource is not None:
+ request.firewall_policy_rule_resource = firewall_policy_rule_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list]
+ rpc = self._transport._wrapped_methods[self._transport.patch_rule]
# Send the request.
response = rpc(
@@ -1516,37 +2489,55 @@ def list(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
# Done; return the response.
return response
- def patch_unary(
+ def remove_association_unary(
self,
- request: Union[compute.PatchRegionNetworkFirewallPolicyRequest, dict] = None,
+ request: Union[
+ compute.RemoveAssociationRegionNetworkFirewallPolicyRequest, dict
+ ] = None,
*,
project: str = None,
region: str = None,
firewall_policy: str = None,
- firewall_policy_resource: compute.FirewallPolicy = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Patches the specified network firewall policy.
+ r"""Removes an association for the specified network
+ firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.PatchRegionNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.RemoveAssociationRegionNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- RegionNetworkFirewallPolicies.Patch. See the method
- description for details.
+ RegionNetworkFirewallPolicies.RemoveAssociation. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1566,11 +2557,6 @@ def patch_unary(
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy):
- The body resource for this request
- This corresponds to the ``firewall_policy_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1578,30 +2564,15 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, region, firewall_policy, firewall_policy_resource]
- )
+ has_flattened_params = any([project, region, firewall_policy])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1609,11 +2580,15 @@ def patch_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.PatchRegionNetworkFirewallPolicyRequest.
+ # in a compute.RemoveAssociationRegionNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.PatchRegionNetworkFirewallPolicyRequest):
- request = compute.PatchRegionNetworkFirewallPolicyRequest(request)
+ if not isinstance(
+ request, compute.RemoveAssociationRegionNetworkFirewallPolicyRequest
+ ):
+ request = compute.RemoveAssociationRegionNetworkFirewallPolicyRequest(
+ request
+ )
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1622,12 +2597,10 @@ def patch_unary(
request.region = region
if firewall_policy is not None:
request.firewall_policy = firewall_policy
- if firewall_policy_resource is not None:
- request.firewall_policy_resource = firewall_policy_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.patch]
+ rpc = self._transport._wrapped_methods[self._transport.remove_association]
# Send the request.
response = rpc(
@@ -1640,27 +2613,27 @@ def patch_unary(
# Done; return the response.
return response
- def patch_rule_unary(
+ def remove_association(
self,
request: Union[
- compute.PatchRuleRegionNetworkFirewallPolicyRequest, dict
+ compute.RemoveAssociationRegionNetworkFirewallPolicyRequest, dict
] = None,
*,
project: str = None,
region: str = None,
firewall_policy: str = None,
- firewall_policy_rule_resource: compute.FirewallPolicyRule = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Patches a rule of the specified priority.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Removes an association for the specified network
+ firewall policy.
Args:
- request (Union[google.cloud.compute_v1.types.PatchRuleRegionNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.RemoveAssociationRegionNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- RegionNetworkFirewallPolicies.PatchRule. See the method
- description for details.
+ RegionNetworkFirewallPolicies.RemoveAssociation. See the
+ method description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1680,11 +2653,6 @@ def patch_rule_unary(
This corresponds to the ``firewall_policy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- firewall_policy_rule_resource (google.cloud.compute_v1.types.FirewallPolicyRule):
- The body resource for this request
- This corresponds to the ``firewall_policy_rule_resource`` field
- on the ``request`` instance; if ``request`` is provided, this
- should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1692,30 +2660,15 @@ def patch_rule_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any(
- [project, region, firewall_policy, firewall_policy_rule_resource]
- )
+ has_flattened_params = any([project, region, firewall_policy])
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1723,11 +2676,15 @@ def patch_rule_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.PatchRuleRegionNetworkFirewallPolicyRequest.
+ # in a compute.RemoveAssociationRegionNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.PatchRuleRegionNetworkFirewallPolicyRequest):
- request = compute.PatchRuleRegionNetworkFirewallPolicyRequest(request)
+ if not isinstance(
+ request, compute.RemoveAssociationRegionNetworkFirewallPolicyRequest
+ ):
+ request = compute.RemoveAssociationRegionNetworkFirewallPolicyRequest(
+ request
+ )
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1736,12 +2693,10 @@ def patch_rule_unary(
request.region = region
if firewall_policy is not None:
request.firewall_policy = firewall_policy
- if firewall_policy_rule_resource is not None:
- request.firewall_policy_rule_resource = firewall_policy_rule_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.patch_rule]
+ rpc = self._transport._wrapped_methods[self._transport.remove_association]
# Send the request.
response = rpc(
@@ -1751,13 +2706,38 @@ def patch_rule_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def remove_association_unary(
+ def remove_rule_unary(
self,
request: Union[
- compute.RemoveAssociationRegionNetworkFirewallPolicyRequest, dict
+ compute.RemoveRuleRegionNetworkFirewallPolicyRequest, dict
] = None,
*,
project: str = None,
@@ -1767,14 +2747,13 @@ def remove_association_unary(
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Removes an association for the specified network
- firewall policy.
+ r"""Deletes a rule of the specified priority.
Args:
- request (Union[google.cloud.compute_v1.types.RemoveAssociationRegionNetworkFirewallPolicyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.RemoveRuleRegionNetworkFirewallPolicyRequest, dict]):
The request object. A request message for
- RegionNetworkFirewallPolicies.RemoveAssociation. See the
- method description for details.
+ RegionNetworkFirewallPolicies.RemoveRule. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1801,22 +2780,9 @@ def remove_association_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1830,15 +2796,13 @@ def remove_association_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.RemoveAssociationRegionNetworkFirewallPolicyRequest.
+ # in a compute.RemoveRuleRegionNetworkFirewallPolicyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
if not isinstance(
- request, compute.RemoveAssociationRegionNetworkFirewallPolicyRequest
+ request, compute.RemoveRuleRegionNetworkFirewallPolicyRequest
):
- request = compute.RemoveAssociationRegionNetworkFirewallPolicyRequest(
- request
- )
+ request = compute.RemoveRuleRegionNetworkFirewallPolicyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1850,7 +2814,7 @@ def remove_association_unary(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.remove_association]
+ rpc = self._transport._wrapped_methods[self._transport.remove_rule]
# Send the request.
response = rpc(
@@ -1863,7 +2827,7 @@ def remove_association_unary(
# Done; return the response.
return response
- def remove_rule_unary(
+ def remove_rule(
self,
request: Union[
compute.RemoveRuleRegionNetworkFirewallPolicyRequest, dict
@@ -1875,7 +2839,7 @@ def remove_rule_unary(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
+ ) -> extended_operation.ExtendedOperation:
r"""Deletes a rule of the specified priority.
Args:
@@ -1909,22 +2873,9 @@ def remove_rule_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1966,6 +2917,31 @@ def remove_rule_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/region_network_firewall_policies/transports/base.py b/google/cloud/compute_v1/services/region_network_firewall_policies/transports/base.py
index c6f22d6f6..50d78fcf6 100644
--- a/google/cloud/compute_v1/services/region_network_firewall_policies/transports/base.py
+++ b/google/cloud/compute_v1/services/region_network_firewall_policies/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -382,5 +385,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionNetworkFirewallPoliciesTransport",)
diff --git a/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest.py b/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest.py
index c7846c043..03fbb1bb8 100644
--- a/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest.py
@@ -2819,6 +2819,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_notification_endpoints/client.py b/google/cloud/compute_v1/services/region_notification_endpoints/client.py
index 4092e1de8..f718e53fe 100644
--- a/google/cloud/compute_v1/services/region_notification_endpoints/client.py
+++ b/google/cloud/compute_v1/services/region_notification_endpoints/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_notification_endpoints import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionNotificationEndpointsTransport, DEFAULT_CLIENT_INFO
@@ -449,22 +452,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -507,6 +497,121 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteRegionNotificationEndpointRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ notification_endpoint: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified NotificationEndpoint in the
+ given region
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteRegionNotificationEndpointRequest, dict]):
+ The request object. A request message for
+ RegionNotificationEndpoints.Delete. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ notification_endpoint (str):
+ Name of the NotificationEndpoint
+ resource to delete.
+
+ This corresponds to the ``notification_endpoint`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, notification_endpoint])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteRegionNotificationEndpointRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteRegionNotificationEndpointRequest):
+ request = compute.DeleteRegionNotificationEndpointRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if notification_endpoint is not None:
+ request.notification_endpoint = notification_endpoint
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetRegionNotificationEndpointRequest, dict] = None,
@@ -646,22 +751,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -704,6 +796,120 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertRegionNotificationEndpointRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ notification_endpoint_resource: compute.NotificationEndpoint = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Create a NotificationEndpoint in the specified
+ project in the given region using the parameters that
+ are included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionNotificationEndpointRequest, dict]):
+ The request object. A request message for
+ RegionNotificationEndpoints.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ notification_endpoint_resource (google.cloud.compute_v1.types.NotificationEndpoint):
+ The body resource for this request
+ This corresponds to the ``notification_endpoint_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, notification_endpoint_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionNotificationEndpointRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionNotificationEndpointRequest):
+ request = compute.InsertRegionNotificationEndpointRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if notification_endpoint_resource is not None:
+ request.notification_endpoint_resource = notification_endpoint_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListRegionNotificationEndpointsRequest, dict] = None,
diff --git a/google/cloud/compute_v1/services/region_notification_endpoints/transports/base.py b/google/cloud/compute_v1/services/region_notification_endpoints/transports/base.py
index 02db60bd4..270a4e4d2 100644
--- a/google/cloud/compute_v1/services/region_notification_endpoints/transports/base.py
+++ b/google/cloud/compute_v1/services/region_notification_endpoints/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -193,5 +196,21 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionNotificationEndpointsTransport",)
diff --git a/google/cloud/compute_v1/services/region_notification_endpoints/transports/rest.py b/google/cloud/compute_v1/services/region_notification_endpoints/transports/rest.py
index 81d6c49e2..4f33b6285 100644
--- a/google/cloud/compute_v1/services/region_notification_endpoints/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_notification_endpoints/transports/rest.py
@@ -762,6 +762,10 @@ def list(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_operations/client.py b/google/cloud/compute_v1/services/region_operations/client.py
index 4e4e8e48b..e24167d1f 100644
--- a/google/cloud/compute_v1/services/region_operations/client.py
+++ b/google/cloud/compute_v1/services/region_operations/client.py
@@ -16,7 +16,7 @@
from collections import OrderedDict
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
diff --git a/google/cloud/compute_v1/services/region_operations/transports/base.py b/google/cloud/compute_v1/services/region_operations/transports/base.py
index eac98d922..28d578dad 100644
--- a/google/cloud/compute_v1/services/region_operations/transports/base.py
+++ b/google/cloud/compute_v1/services/region_operations/transports/base.py
@@ -83,6 +83,7 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -193,5 +194,9 @@ def wait(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
__all__ = ("RegionOperationsTransport",)
diff --git a/google/cloud/compute_v1/services/region_operations/transports/rest.py b/google/cloud/compute_v1/services/region_operations/transports/rest.py
index 2d5c83702..64d6f9452 100644
--- a/google/cloud/compute_v1/services/region_operations/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_operations/transports/rest.py
@@ -729,6 +729,10 @@ def wait(self) -> Callable[[compute.WaitRegionOperationRequest], compute.Operati
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_security_policies/client.py b/google/cloud/compute_v1/services/region_security_policies/client.py
index 1cd602d99..f628795d2 100644
--- a/google/cloud/compute_v1/services/region_security_policies/client.py
+++ b/google/cloud/compute_v1/services/region_security_policies/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_security_policies import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionSecurityPoliciesTransport, DEFAULT_CLIENT_INFO
@@ -446,22 +449,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -504,6 +494,120 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteRegionSecurityPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ security_policy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified policy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteRegionSecurityPolicyRequest, dict]):
+ The request object. A request message for
+ RegionSecurityPolicies.Delete. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy (str):
+ Name of the security policy to
+ delete.
+
+ This corresponds to the ``security_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, security_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteRegionSecurityPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteRegionSecurityPolicyRequest):
+ request = compute.DeleteRegionSecurityPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if security_policy is not None:
+ request.security_policy = security_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetRegionSecurityPolicyRequest, dict] = None,
@@ -639,22 +743,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -697,6 +788,119 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertRegionSecurityPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ security_policy_resource: compute.SecurityPolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a new policy in the specified project using
+ the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionSecurityPolicyRequest, dict]):
+ The request object. A request message for
+ RegionSecurityPolicies.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy_resource (google.cloud.compute_v1.types.SecurityPolicy):
+ The body resource for this request
+ This corresponds to the ``security_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, security_policy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionSecurityPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionSecurityPolicyRequest):
+ request = compute.InsertRegionSecurityPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if security_policy_resource is not None:
+ request.security_policy_resource = security_policy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListRegionSecurityPoliciesRequest, dict] = None,
@@ -838,22 +1042,109 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, security_policy, security_policy_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchRegionSecurityPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchRegionSecurityPolicyRequest):
+ request = compute.PatchRegionSecurityPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if security_policy is not None:
+ request.security_policy = security_policy
+ if security_policy_resource is not None:
+ request.security_policy_resource = security_policy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch(
+ self,
+ request: Union[compute.PatchRegionSecurityPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ security_policy: str = None,
+ security_policy_resource: compute.SecurityPolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified policy with the data included
+ in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchRegionSecurityPolicyRequest, dict]):
+ The request object. A request message for
+ RegionSecurityPolicies.Patch. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy (str):
+ Name of the security policy to
+ update.
+
+ This corresponds to the ``security_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy_resource (google.cloud.compute_v1.types.SecurityPolicy):
+ The body resource for this request
+ This corresponds to the ``security_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -897,6 +1188,31 @@ def patch_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/region_security_policies/transports/base.py b/google/cloud/compute_v1/services/region_security_policies/transports/base.py
index da0e94071..38f4f56c1 100644
--- a/google/cloud/compute_v1/services/region_security_policies/transports/base.py
+++ b/google/cloud/compute_v1/services/region_security_policies/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -204,5 +207,21 @@ def patch(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionSecurityPoliciesTransport",)
diff --git a/google/cloud/compute_v1/services/region_security_policies/transports/rest.py b/google/cloud/compute_v1/services/region_security_policies/transports/rest.py
index 71cb5fae5..bbd6127b9 100644
--- a/google/cloud/compute_v1/services/region_security_policies/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_security_policies/transports/rest.py
@@ -896,6 +896,10 @@ def patch(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_ssl_certificates/client.py b/google/cloud/compute_v1/services/region_ssl_certificates/client.py
index 5ef1778c5..c1930b8ad 100644
--- a/google/cloud/compute_v1/services/region_ssl_certificates/client.py
+++ b/google/cloud/compute_v1/services/region_ssl_certificates/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_ssl_certificates import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionSslCertificatesTransport, DEFAULT_CLIENT_INFO
@@ -447,22 +450,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -505,6 +495,121 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteRegionSslCertificateRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ ssl_certificate: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified SslCertificate resource in the
+ region.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteRegionSslCertificateRequest, dict]):
+ The request object. A request message for
+ RegionSslCertificates.Delete. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ ssl_certificate (str):
+ Name of the SslCertificate resource
+ to delete.
+
+ This corresponds to the ``ssl_certificate`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, ssl_certificate])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteRegionSslCertificateRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteRegionSslCertificateRequest):
+ request = compute.DeleteRegionSslCertificateRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if ssl_certificate is not None:
+ request.ssl_certificate = ssl_certificate
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetRegionSslCertificateRequest, dict] = None,
@@ -654,22 +759,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -712,6 +804,120 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertRegionSslCertificateRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ ssl_certificate_resource: compute.SslCertificate = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a SslCertificate resource in the specified
+ project and region using the data included in the
+ request
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionSslCertificateRequest, dict]):
+ The request object. A request message for
+ RegionSslCertificates.Insert. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ ssl_certificate_resource (google.cloud.compute_v1.types.SslCertificate):
+ The body resource for this request
+ This corresponds to the ``ssl_certificate_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, ssl_certificate_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionSslCertificateRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionSslCertificateRequest):
+ request = compute.InsertRegionSslCertificateRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if ssl_certificate_resource is not None:
+ request.ssl_certificate_resource = ssl_certificate_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListRegionSslCertificatesRequest, dict] = None,
diff --git a/google/cloud/compute_v1/services/region_ssl_certificates/transports/base.py b/google/cloud/compute_v1/services/region_ssl_certificates/transports/base.py
index f47c8d4f7..613b6e896 100644
--- a/google/cloud/compute_v1/services/region_ssl_certificates/transports/base.py
+++ b/google/cloud/compute_v1/services/region_ssl_certificates/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -190,5 +193,21 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionSslCertificatesTransport",)
diff --git a/google/cloud/compute_v1/services/region_ssl_certificates/transports/rest.py b/google/cloud/compute_v1/services/region_ssl_certificates/transports/rest.py
index 691b9ace3..5f99e8394 100644
--- a/google/cloud/compute_v1/services/region_ssl_certificates/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_ssl_certificates/transports/rest.py
@@ -754,6 +754,10 @@ def list(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_target_http_proxies/client.py b/google/cloud/compute_v1/services/region_target_http_proxies/client.py
index 0e490db98..02c1d51a2 100644
--- a/google/cloud/compute_v1/services/region_target_http_proxies/client.py
+++ b/google/cloud/compute_v1/services/region_target_http_proxies/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_target_http_proxies import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionTargetHttpProxiesTransport, DEFAULT_CLIENT_INFO
@@ -446,22 +449,98 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, target_http_proxy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteRegionTargetHttpProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteRegionTargetHttpProxyRequest):
+ request = compute.DeleteRegionTargetHttpProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_http_proxy is not None:
+ request.target_http_proxy = target_http_proxy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def delete(
+ self,
+ request: Union[compute.DeleteRegionTargetHttpProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_http_proxy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified TargetHttpProxy resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteRegionTargetHttpProxyRequest, dict]):
+ The request object. A request message for
+ RegionTargetHttpProxies.Delete. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_http_proxy (str):
+ Name of the TargetHttpProxy resource
+ to delete.
+
+ This corresponds to the ``target_http_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -501,6 +580,31 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -650,22 +754,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -708,6 +799,120 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertRegionTargetHttpProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_http_proxy_resource: compute.TargetHttpProxy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a TargetHttpProxy resource in the specified
+ project and region using the data included in the
+ request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionTargetHttpProxyRequest, dict]):
+ The request object. A request message for
+ RegionTargetHttpProxies.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_http_proxy_resource (google.cloud.compute_v1.types.TargetHttpProxy):
+ The body resource for this request
+ This corresponds to the ``target_http_proxy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, target_http_proxy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionTargetHttpProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionTargetHttpProxyRequest):
+ request = compute.InsertRegionTargetHttpProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_http_proxy_resource is not None:
+ request.target_http_proxy_resource = target_http_proxy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListRegionTargetHttpProxiesRequest, dict] = None,
@@ -850,22 +1055,9 @@ def set_url_map_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -912,6 +1104,130 @@ def set_url_map_unary(
# Done; return the response.
return response
+ def set_url_map(
+ self,
+ request: Union[compute.SetUrlMapRegionTargetHttpProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_http_proxy: str = None,
+ url_map_reference_resource: compute.UrlMapReference = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Changes the URL map for TargetHttpProxy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetUrlMapRegionTargetHttpProxyRequest, dict]):
+ The request object. A request message for
+ RegionTargetHttpProxies.SetUrlMap. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_http_proxy (str):
+ Name of the TargetHttpProxy to set a
+ URL map for.
+
+ This corresponds to the ``target_http_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map_reference_resource (google.cloud.compute_v1.types.UrlMapReference):
+ The body resource for this request
+ This corresponds to the ``url_map_reference_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, target_http_proxy, url_map_reference_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetUrlMapRegionTargetHttpProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetUrlMapRegionTargetHttpProxyRequest):
+ request = compute.SetUrlMapRegionTargetHttpProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_http_proxy is not None:
+ request.target_http_proxy = target_http_proxy
+ if url_map_reference_resource is not None:
+ request.url_map_reference_resource = url_map_reference_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_url_map]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/region_target_http_proxies/transports/base.py b/google/cloud/compute_v1/services/region_target_http_proxies/transports/base.py
index daa159152..04ba9ca5a 100644
--- a/google/cloud/compute_v1/services/region_target_http_proxies/transports/base.py
+++ b/google/cloud/compute_v1/services/region_target_http_proxies/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -204,5 +207,21 @@ def set_url_map(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionTargetHttpProxiesTransport",)
diff --git a/google/cloud/compute_v1/services/region_target_http_proxies/transports/rest.py b/google/cloud/compute_v1/services/region_target_http_proxies/transports/rest.py
index b478c9191..540ccd81a 100644
--- a/google/cloud/compute_v1/services/region_target_http_proxies/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_target_http_proxies/transports/rest.py
@@ -907,6 +907,10 @@ def set_url_map(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_target_https_proxies/client.py b/google/cloud/compute_v1/services/region_target_https_proxies/client.py
index 98e6f0dd7..c640065ee 100644
--- a/google/cloud/compute_v1/services/region_target_https_proxies/client.py
+++ b/google/cloud/compute_v1/services/region_target_https_proxies/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_target_https_proxies import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionTargetHttpsProxiesTransport, DEFAULT_CLIENT_INFO
@@ -446,22 +449,98 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, target_https_proxy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteRegionTargetHttpsProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteRegionTargetHttpsProxyRequest):
+ request = compute.DeleteRegionTargetHttpsProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_https_proxy is not None:
+ request.target_https_proxy = target_https_proxy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def delete(
+ self,
+ request: Union[compute.DeleteRegionTargetHttpsProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_https_proxy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified TargetHttpsProxy resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteRegionTargetHttpsProxyRequest, dict]):
+ The request object. A request message for
+ RegionTargetHttpsProxies.Delete. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxy (str):
+ Name of the TargetHttpsProxy resource
+ to delete.
+
+ This corresponds to the ``target_https_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -501,6 +580,31 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -649,22 +753,98 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, target_https_proxy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionTargetHttpsProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionTargetHttpsProxyRequest):
+ request = compute.InsertRegionTargetHttpsProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_https_proxy_resource is not None:
+ request.target_https_proxy_resource = target_https_proxy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertRegionTargetHttpsProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_https_proxy_resource: compute.TargetHttpsProxy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a TargetHttpsProxy resource in the specified
+ project and region using the data included in the
+ request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionTargetHttpsProxyRequest, dict]):
+ The request object. A request message for
+ RegionTargetHttpsProxies.Insert. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxy_resource (google.cloud.compute_v1.types.TargetHttpsProxy):
+ The body resource for this request
+ This corresponds to the ``target_https_proxy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -704,6 +884,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -851,22 +1056,109 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, target_https_proxy, target_https_proxy_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchRegionTargetHttpsProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchRegionTargetHttpsProxyRequest):
+ request = compute.PatchRegionTargetHttpsProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_https_proxy is not None:
+ request.target_https_proxy = target_https_proxy
+ if target_https_proxy_resource is not None:
+ request.target_https_proxy_resource = target_https_proxy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch(
+ self,
+ request: Union[compute.PatchRegionTargetHttpsProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_https_proxy: str = None,
+ target_https_proxy_resource: compute.TargetHttpsProxy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified regional TargetHttpsProxy
+ resource with the data included in the request. This
+ method supports PATCH semantics and uses JSON merge
+ patch format and processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchRegionTargetHttpsProxyRequest, dict]):
+ The request object. A request message for
+ RegionTargetHttpsProxies.Patch. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxy (str):
+ Name of the TargetHttpsProxy resource
+ to patch.
+
+ This corresponds to the ``target_https_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxy_resource (google.cloud.compute_v1.types.TargetHttpsProxy):
+ The body resource for this request
+ This corresponds to the ``target_https_proxy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -910,6 +1202,31 @@ def patch_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -965,22 +1282,122 @@ def set_ssl_certificates_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ target_https_proxy,
+ region_target_https_proxies_set_ssl_certificates_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetSslCertificatesRegionTargetHttpsProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(
+ request, compute.SetSslCertificatesRegionTargetHttpsProxyRequest
+ ):
+ request = compute.SetSslCertificatesRegionTargetHttpsProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_https_proxy is not None:
+ request.target_https_proxy = target_https_proxy
+ if (
+ region_target_https_proxies_set_ssl_certificates_request_resource
+ is not None
+ ):
+ request.region_target_https_proxies_set_ssl_certificates_request_resource = (
+ region_target_https_proxies_set_ssl_certificates_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_ssl_certificates]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_ssl_certificates(
+ self,
+ request: Union[
+ compute.SetSslCertificatesRegionTargetHttpsProxyRequest, dict
+ ] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_https_proxy: str = None,
+ region_target_https_proxies_set_ssl_certificates_request_resource: compute.RegionTargetHttpsProxiesSetSslCertificatesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Replaces SslCertificates for TargetHttpsProxy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetSslCertificatesRegionTargetHttpsProxyRequest, dict]):
+ The request object. A request message for
+ RegionTargetHttpsProxies.SetSslCertificates. See the
+ method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxy (str):
+ Name of the TargetHttpsProxy resource
+ to set an SslCertificates resource for.
+
+ This corresponds to the ``target_https_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region_target_https_proxies_set_ssl_certificates_request_resource (google.cloud.compute_v1.types.RegionTargetHttpsProxiesSetSslCertificatesRequest):
+ The body resource for this request
+ This corresponds to the ``region_target_https_proxies_set_ssl_certificates_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1036,6 +1453,31 @@ def set_ssl_certificates_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -1089,22 +1531,108 @@ def set_url_map_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, target_https_proxy, url_map_reference_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetUrlMapRegionTargetHttpsProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetUrlMapRegionTargetHttpsProxyRequest):
+ request = compute.SetUrlMapRegionTargetHttpsProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_https_proxy is not None:
+ request.target_https_proxy = target_https_proxy
+ if url_map_reference_resource is not None:
+ request.url_map_reference_resource = url_map_reference_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_url_map]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_url_map(
+ self,
+ request: Union[compute.SetUrlMapRegionTargetHttpsProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_https_proxy: str = None,
+ url_map_reference_resource: compute.UrlMapReference = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Changes the URL map for TargetHttpsProxy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetUrlMapRegionTargetHttpsProxyRequest, dict]):
+ The request object. A request message for
+ RegionTargetHttpsProxies.SetUrlMap. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxy (str):
+ Name of the TargetHttpsProxy to set a
+ URL map for.
+
+ This corresponds to the ``target_https_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map_reference_resource (google.cloud.compute_v1.types.UrlMapReference):
+ The body resource for this request
+ This corresponds to the ``url_map_reference_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1148,6 +1676,31 @@ def set_url_map_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/region_target_https_proxies/transports/base.py b/google/cloud/compute_v1/services/region_target_https_proxies/transports/base.py
index b54453137..e742a83a0 100644
--- a/google/cloud/compute_v1/services/region_target_https_proxies/transports/base.py
+++ b/google/cloud/compute_v1/services/region_target_https_proxies/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -232,5 +235,21 @@ def set_url_map(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionTargetHttpsProxiesTransport",)
diff --git a/google/cloud/compute_v1/services/region_target_https_proxies/transports/rest.py b/google/cloud/compute_v1/services/region_target_https_proxies/transports/rest.py
index 289d7fa83..c52230907 100644
--- a/google/cloud/compute_v1/services/region_target_https_proxies/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_target_https_proxies/transports/rest.py
@@ -1235,6 +1235,10 @@ def set_url_map(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/region_url_maps/client.py b/google/cloud/compute_v1/services/region_url_maps/client.py
index 1c433158b..a80e841f2 100644
--- a/google/cloud/compute_v1/services/region_url_maps/client.py
+++ b/google/cloud/compute_v1/services/region_url_maps/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.region_url_maps import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RegionUrlMapsTransport, DEFAULT_CLIENT_INFO
@@ -444,22 +447,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -502,6 +492,120 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteRegionUrlMapRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ url_map: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified UrlMap resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteRegionUrlMapRequest, dict]):
+ The request object. A request message for
+ RegionUrlMaps.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map (str):
+ Name of the UrlMap resource to
+ delete.
+
+ This corresponds to the ``url_map`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, url_map])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteRegionUrlMapRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteRegionUrlMapRequest):
+ request = compute.DeleteRegionUrlMapRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if url_map is not None:
+ request.url_map = url_map
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetRegionUrlMapRequest, dict] = None,
@@ -654,22 +758,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -712,6 +803,119 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertRegionUrlMapRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ url_map_resource: compute.UrlMap = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a UrlMap resource in the specified project
+ using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRegionUrlMapRequest, dict]):
+ The request object. A request message for
+ RegionUrlMaps.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map_resource (google.cloud.compute_v1.types.UrlMap):
+ The body resource for this request
+ This corresponds to the ``url_map_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, url_map_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRegionUrlMapRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRegionUrlMapRequest):
+ request = compute.InsertRegionUrlMapRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if url_map_resource is not None:
+ request.url_map_resource = url_map_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListRegionUrlMapsRequest, dict] = None,
@@ -854,22 +1058,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -914,6 +1105,129 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchRegionUrlMapRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ url_map: str = None,
+ url_map_resource: compute.UrlMap = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified UrlMap resource with the data
+ included in the request. This method supports PATCH
+ semantics and uses JSON merge patch format and
+ processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchRegionUrlMapRequest, dict]):
+ The request object. A request message for
+ RegionUrlMaps.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map (str):
+ Name of the UrlMap resource to patch.
+ This corresponds to the ``url_map`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map_resource (google.cloud.compute_v1.types.UrlMap):
+ The body resource for this request
+ This corresponds to the ``url_map_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, url_map, url_map_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchRegionUrlMapRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchRegionUrlMapRequest):
+ request = compute.PatchRegionUrlMapRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if url_map is not None:
+ request.url_map = url_map
+ if url_map_resource is not None:
+ request.url_map_resource = url_map_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def update_unary(
self,
request: Union[compute.UpdateRegionUrlMapRequest, dict] = None,
@@ -965,22 +1279,107 @@ def update_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, url_map, url_map_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.UpdateRegionUrlMapRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.UpdateRegionUrlMapRequest):
+ request = compute.UpdateRegionUrlMapRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if url_map is not None:
+ request.url_map = url_map
+ if url_map_resource is not None:
+ request.url_map_resource = url_map_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.update]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def update(
+ self,
+ request: Union[compute.UpdateRegionUrlMapRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ url_map: str = None,
+ url_map_resource: compute.UrlMap = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified UrlMap resource with the data
+ included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.UpdateRegionUrlMapRequest, dict]):
+ The request object. A request message for
+ RegionUrlMaps.Update. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map (str):
+ Name of the UrlMap resource to
+ update.
+
+ This corresponds to the ``url_map`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map_resource (google.cloud.compute_v1.types.UrlMap):
+ The body resource for this request
+ This corresponds to the ``url_map_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1022,6 +1421,31 @@ def update_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/region_url_maps/transports/base.py b/google/cloud/compute_v1/services/region_url_maps/transports/base.py
index 6c1f1b458..283b1e958 100644
--- a/google/cloud/compute_v1/services/region_url_maps/transports/base.py
+++ b/google/cloud/compute_v1/services/region_url_maps/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -234,5 +237,21 @@ def validate(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RegionUrlMapsTransport",)
diff --git a/google/cloud/compute_v1/services/region_url_maps/transports/rest.py b/google/cloud/compute_v1/services/region_url_maps/transports/rest.py
index d60f4b122..50a83939d 100644
--- a/google/cloud/compute_v1/services/region_url_maps/transports/rest.py
+++ b/google/cloud/compute_v1/services/region_url_maps/transports/rest.py
@@ -1196,6 +1196,10 @@ def validate(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/regions/client.py b/google/cloud/compute_v1/services/regions/client.py
index 3e4f0f7b2..a6ad1b783 100644
--- a/google/cloud/compute_v1/services/regions/client.py
+++ b/google/cloud/compute_v1/services/regions/client.py
@@ -16,7 +16,7 @@
from collections import OrderedDict
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
diff --git a/google/cloud/compute_v1/services/regions/transports/base.py b/google/cloud/compute_v1/services/regions/transports/base.py
index 771e8ae33..e11530b25 100644
--- a/google/cloud/compute_v1/services/regions/transports/base.py
+++ b/google/cloud/compute_v1/services/regions/transports/base.py
@@ -84,6 +84,7 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -162,5 +163,9 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
__all__ = ("RegionsTransport",)
diff --git a/google/cloud/compute_v1/services/regions/transports/rest.py b/google/cloud/compute_v1/services/regions/transports/rest.py
index 22c63f479..3bf181442 100644
--- a/google/cloud/compute_v1/services/regions/transports/rest.py
+++ b/google/cloud/compute_v1/services/regions/transports/rest.py
@@ -419,6 +419,10 @@ def list(self) -> Callable[[compute.ListRegionsRequest], compute.RegionList]:
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/reservations/client.py b/google/cloud/compute_v1/services/reservations/client.py
index b4c5f50c5..35b175e2f 100644
--- a/google/cloud/compute_v1/services/reservations/client.py
+++ b/google/cloud/compute_v1/services/reservations/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.reservations import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import ReservationsTransport, DEFAULT_CLIENT_INFO
@@ -520,22 +523,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -578,6 +568,116 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteReservationRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ reservation: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified reservation.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteReservationRequest, dict]):
+ The request object. A request message for
+ Reservations.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ Name of the zone for this request.
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ reservation (str):
+ Name of the reservation to delete.
+ This corresponds to the ``reservation`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, reservation])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteReservationRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteReservationRequest):
+ request = compute.DeleteReservationRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if reservation is not None:
+ request.reservation = reservation
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetReservationRequest, dict] = None,
@@ -837,22 +937,95 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, reservation_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertReservationRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertReservationRequest):
+ request = compute.InsertReservationRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if reservation_resource is not None:
+ request.reservation_resource = reservation_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertReservationRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ reservation_resource: compute.Reservation = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a new reservation. For more information, read
+ Reserving zonal resources.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertReservationRequest, dict]):
+ The request object. A request message for
+ Reservations.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ Name of the zone for this request.
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ reservation_resource (google.cloud.compute_v1.types.Reservation):
+ The body resource for this request
+ This corresponds to the ``reservation_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -892,6 +1065,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -1031,22 +1229,9 @@ def resize_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1095,6 +1280,130 @@ def resize_unary(
# Done; return the response.
return response
+ def resize(
+ self,
+ request: Union[compute.ResizeReservationRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ reservation: str = None,
+ reservations_resize_request_resource: compute.ReservationsResizeRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Resizes the reservation (applicable to standalone
+ reservations only). For more information, read Modifying
+ reservations.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ResizeReservationRequest, dict]):
+ The request object. A request message for
+ Reservations.Resize. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ Name of the zone for this request.
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ reservation (str):
+ Name of the reservation to update.
+ This corresponds to the ``reservation`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ reservations_resize_request_resource (google.cloud.compute_v1.types.ReservationsResizeRequest):
+ The body resource for this request
+ This corresponds to the ``reservations_resize_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, zone, reservation, reservations_resize_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ResizeReservationRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ResizeReservationRequest):
+ request = compute.ResizeReservationRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if reservation is not None:
+ request.reservation = reservation
+ if reservations_resize_request_resource is not None:
+ request.reservations_resize_request_resource = (
+ reservations_resize_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.resize]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def set_iam_policy(
self,
request: Union[compute.SetIamPolicyReservationRequest, dict] = None,
@@ -1381,22 +1690,9 @@ def update_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1441,6 +1737,124 @@ def update_unary(
# Done; return the response.
return response
+ def update(
+ self,
+ request: Union[compute.UpdateReservationRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ reservation: str = None,
+ reservation_resource: compute.Reservation = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Update share settings of the reservation.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.UpdateReservationRequest, dict]):
+ The request object. A request message for
+ Reservations.Update. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ Name of the zone for this request.
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ reservation (str):
+ Name of the reservation to update.
+ This corresponds to the ``reservation`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ reservation_resource (google.cloud.compute_v1.types.Reservation):
+ The body resource for this request
+ This corresponds to the ``reservation_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, reservation, reservation_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.UpdateReservationRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.UpdateReservationRequest):
+ request = compute.UpdateReservationRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if reservation is not None:
+ request.reservation = reservation
+ if reservation_resource is not None:
+ request.reservation_resource = reservation_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.update]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/reservations/transports/base.py b/google/cloud/compute_v1/services/reservations/transports/base.py
index 4a114b0bc..c5937df15 100644
--- a/google/cloud/compute_v1/services/reservations/transports/base.py
+++ b/google/cloud/compute_v1/services/reservations/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import zone_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -279,5 +282,21 @@ def update(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _zone_operations_client(self) -> zone_operations.ZoneOperationsClient:
+ ex_op_service = self._extended_operations_services.get("zone_operations")
+ if not ex_op_service:
+ ex_op_service = zone_operations.ZoneOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["zone_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("ReservationsTransport",)
diff --git a/google/cloud/compute_v1/services/reservations/transports/rest.py b/google/cloud/compute_v1/services/reservations/transports/rest.py
index 56b8bea9f..b38c6a6cb 100644
--- a/google/cloud/compute_v1/services/reservations/transports/rest.py
+++ b/google/cloud/compute_v1/services/reservations/transports/rest.py
@@ -1663,6 +1663,10 @@ def update(self) -> Callable[[compute.UpdateReservationRequest], compute.Operati
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/resource_policies/client.py b/google/cloud/compute_v1/services/resource_policies/client.py
index 0fbbc6463..5f32ba2ef 100644
--- a/google/cloud/compute_v1/services/resource_policies/client.py
+++ b/google/cloud/compute_v1/services/resource_policies/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.resource_policies import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import ResourcePoliciesTransport, DEFAULT_CLIENT_INFO
@@ -524,22 +527,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -582,6 +572,118 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteResourcePolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ resource_policy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified resource policy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteResourcePolicyRequest, dict]):
+ The request object. A request message for
+ ResourcePolicies.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource_policy (str):
+ Name of the resource policy to
+ delete.
+
+ This corresponds to the ``resource_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, resource_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteResourcePolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteResourcePolicyRequest):
+ request = compute.DeleteResourcePolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if resource_policy is not None:
+ request.resource_policy = resource_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetResourcePolicyRequest, dict] = None,
@@ -842,22 +944,94 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, resource_policy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertResourcePolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertResourcePolicyRequest):
+ request = compute.InsertResourcePolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if resource_policy_resource is not None:
+ request.resource_policy_resource = resource_policy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertResourcePolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ resource_policy_resource: compute.ResourcePolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a new resource policy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertResourcePolicyRequest, dict]):
+ The request object. A request message for
+ ResourcePolicies.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource_policy_resource (google.cloud.compute_v1.types.ResourcePolicy):
+ The body resource for this request
+ This corresponds to the ``resource_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -897,6 +1071,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/resource_policies/transports/base.py b/google/cloud/compute_v1/services/resource_policies/transports/base.py
index f72efc16b..559ae713c 100644
--- a/google/cloud/compute_v1/services/resource_policies/transports/base.py
+++ b/google/cloud/compute_v1/services/resource_policies/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -251,5 +254,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("ResourcePoliciesTransport",)
diff --git a/google/cloud/compute_v1/services/resource_policies/transports/rest.py b/google/cloud/compute_v1/services/resource_policies/transports/rest.py
index 999868e3d..b225c8e6f 100644
--- a/google/cloud/compute_v1/services/resource_policies/transports/rest.py
+++ b/google/cloud/compute_v1/services/resource_policies/transports/rest.py
@@ -1382,6 +1382,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/routers/client.py b/google/cloud/compute_v1/services/routers/client.py
index bbcad487a..da903af54 100644
--- a/google/cloud/compute_v1/services/routers/client.py
+++ b/google/cloud/compute_v1/services/routers/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.routers import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RoutersTransport, DEFAULT_CLIENT_INFO
@@ -521,22 +524,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -579,6 +569,117 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteRouterRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ router: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified Router resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteRouterRequest, dict]):
+ The request object. A request message for
+ Routers.Delete. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ router (str):
+ Name of the Router resource to
+ delete.
+
+ This corresponds to the ``router`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, router])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteRouterRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteRouterRequest):
+ request = compute.DeleteRouterRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if router is not None:
+ request.router = router
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetRouterRequest, dict] = None,
@@ -892,22 +993,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -950,6 +1038,116 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertRouterRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ router_resource: compute.Router = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a Router resource in the specified project
+ and region using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRouterRequest, dict]):
+ The request object. A request message for
+ Routers.Insert. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ router_resource (google.cloud.compute_v1.types.Router):
+ The body resource for this request
+ This corresponds to the ``router_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, router_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRouterRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRouterRequest):
+ request = compute.InsertRouterRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if router_resource is not None:
+ request.router_resource = router_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListRoutersRequest, dict] = None,
@@ -1086,22 +1284,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1146,6 +1331,126 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchRouterRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ router: str = None,
+ router_resource: compute.Router = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified Router resource with the data
+ included in the request. This method supports PATCH
+ semantics and uses JSON merge patch format and
+ processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchRouterRequest, dict]):
+ The request object. A request message for Routers.Patch.
+ See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ router (str):
+ Name of the Router resource to patch.
+ This corresponds to the ``router`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ router_resource (google.cloud.compute_v1.types.Router):
+ The body resource for this request
+ This corresponds to the ``router_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, router, router_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchRouterRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchRouterRequest):
+ request = compute.PatchRouterRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if router is not None:
+ request.router = router
+ if router_resource is not None:
+ request.router_resource = router_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def preview(
self,
request: Union[compute.PreviewRouterRequest, dict] = None,
@@ -1290,22 +1595,108 @@ def update_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, router, router_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.UpdateRouterRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.UpdateRouterRequest):
+ request = compute.UpdateRouterRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if router is not None:
+ request.router = router
+ if router_resource is not None:
+ request.router_resource = router_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.update]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def update(
+ self,
+ request: Union[compute.UpdateRouterRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ router: str = None,
+ router_resource: compute.Router = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified Router resource with the data
+ included in the request. This method conforms to PUT
+ semantics, which requests that the state of the target
+ resource be created or replaced with the state defined
+ by the representation enclosed in the request message
+ payload.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.UpdateRouterRequest, dict]):
+ The request object. A request message for
+ Routers.Update. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ router (str):
+ Name of the Router resource to
+ update.
+
+ This corresponds to the ``router`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ router_resource (google.cloud.compute_v1.types.Router):
+ The body resource for this request
+ This corresponds to the ``router_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1347,6 +1738,31 @@ def update_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/routers/transports/base.py b/google/cloud/compute_v1/services/routers/transports/base.py
index e348facb2..279ad2b9b 100644
--- a/google/cloud/compute_v1/services/routers/transports/base.py
+++ b/google/cloud/compute_v1/services/routers/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -278,5 +281,21 @@ def update(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RoutersTransport",)
diff --git a/google/cloud/compute_v1/services/routers/transports/rest.py b/google/cloud/compute_v1/services/routers/transports/rest.py
index 7a3bfb899..e1973631b 100644
--- a/google/cloud/compute_v1/services/routers/transports/rest.py
+++ b/google/cloud/compute_v1/services/routers/transports/rest.py
@@ -1542,6 +1542,10 @@ def update(self) -> Callable[[compute.UpdateRouterRequest], compute.Operation]:
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/routes/client.py b/google/cloud/compute_v1/services/routes/client.py
index 1ecb7da9f..54c4fbbfd 100644
--- a/google/cloud/compute_v1/services/routes/client.py
+++ b/google/cloud/compute_v1/services/routes/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.routes import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import RoutesTransport, DEFAULT_CLIENT_INFO
@@ -433,22 +436,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -489,6 +479,106 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteRouteRequest, dict] = None,
+ *,
+ project: str = None,
+ route: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified Route resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteRouteRequest, dict]):
+ The request object. A request message for Routes.Delete.
+ See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ route (str):
+ Name of the Route resource to delete.
+ This corresponds to the ``route`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, route])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteRouteRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteRouteRequest):
+ request = compute.DeleteRouteRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if route is not None:
+ request.route = route
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetRouteRequest, dict] = None,
@@ -604,22 +694,86 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, route_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertRouteRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertRouteRequest):
+ request = compute.InsertRouteRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if route_resource is not None:
+ request.route_resource = route_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertRouteRequest, dict] = None,
+ *,
+ project: str = None,
+ route_resource: compute.Route = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a Route resource in the specified project
+ using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertRouteRequest, dict]):
+ The request object. A request message for Routes.Insert.
+ See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ route_resource (google.cloud.compute_v1.types.Route):
+ The body resource for this request
+ This corresponds to the ``route_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -657,6 +811,30 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/routes/transports/base.py b/google/cloud/compute_v1/services/routes/transports/base.py
index d1bc3a327..47c8f2d4e 100644
--- a/google/cloud/compute_v1/services/routes/transports/base.py
+++ b/google/cloud/compute_v1/services/routes/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -189,5 +192,21 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("RoutesTransport",)
diff --git a/google/cloud/compute_v1/services/routes/transports/rest.py b/google/cloud/compute_v1/services/routes/transports/rest.py
index c2e5fc1cf..cfa77728b 100644
--- a/google/cloud/compute_v1/services/routes/transports/rest.py
+++ b/google/cloud/compute_v1/services/routes/transports/rest.py
@@ -705,6 +705,10 @@ def list(self) -> Callable[[compute.ListRoutesRequest], compute.RouteList]:
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/security_policies/client.py b/google/cloud/compute_v1/services/security_policies/client.py
index e966031e9..4b852d483 100644
--- a/google/cloud/compute_v1/services/security_policies/client.py
+++ b/google/cloud/compute_v1/services/security_policies/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.security_policies import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import SecurityPoliciesTransport, DEFAULT_CLIENT_INFO
@@ -444,22 +447,9 @@ def add_rule_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -504,6 +494,119 @@ def add_rule_unary(
# Done; return the response.
return response
+ def add_rule(
+ self,
+ request: Union[compute.AddRuleSecurityPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ security_policy: str = None,
+ security_policy_rule_resource: compute.SecurityPolicyRule = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Inserts a rule into a security policy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.AddRuleSecurityPolicyRequest, dict]):
+ The request object. A request message for
+ SecurityPolicies.AddRule. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy (str):
+ Name of the security policy to
+ update.
+
+ This corresponds to the ``security_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy_rule_resource (google.cloud.compute_v1.types.SecurityPolicyRule):
+ The body resource for this request
+ This corresponds to the ``security_policy_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, security_policy, security_policy_rule_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.AddRuleSecurityPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.AddRuleSecurityPolicyRequest):
+ request = compute.AddRuleSecurityPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if security_policy is not None:
+ request.security_policy = security_policy
+ if security_policy_rule_resource is not None:
+ request.security_policy_rule_resource = security_policy_rule_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.add_rule]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def aggregated_list(
self,
request: Union[compute.AggregatedListSecurityPoliciesRequest, dict] = None,
@@ -622,22 +725,88 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, security_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteSecurityPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteSecurityPolicyRequest):
+ request = compute.DeleteSecurityPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if security_policy is not None:
+ request.security_policy = security_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def delete(
+ self,
+ request: Union[compute.DeleteSecurityPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ security_policy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified policy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteSecurityPolicyRequest, dict]):
+ The request object. A request message for
+ SecurityPolicies.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy (str):
+ Name of the security policy to
+ delete.
+
+ This corresponds to the ``security_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -675,6 +844,30 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -876,22 +1069,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -932,6 +1112,108 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertSecurityPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ security_policy_resource: compute.SecurityPolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a new policy in the specified project using
+ the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertSecurityPolicyRequest, dict]):
+ The request object. A request message for
+ SecurityPolicies.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy_resource (google.cloud.compute_v1.types.SecurityPolicy):
+ The body resource for this request
+ This corresponds to the ``security_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, security_policy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertSecurityPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertSecurityPolicyRequest):
+ request = compute.InsertSecurityPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if security_policy_resource is not None:
+ request.security_policy_resource = security_policy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListSecurityPoliciesRequest, dict] = None,
@@ -1133,22 +1415,99 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, security_policy, security_policy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchSecurityPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchSecurityPolicyRequest):
+ request = compute.PatchSecurityPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if security_policy is not None:
+ request.security_policy = security_policy
+ if security_policy_resource is not None:
+ request.security_policy_resource = security_policy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch(
+ self,
+ request: Union[compute.PatchSecurityPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ security_policy: str = None,
+ security_policy_resource: compute.SecurityPolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified policy with the data included
+ in the request. This cannot be used to be update the
+ rules in the policy. Please use the per rule methods
+ like addRule, patchRule, and removeRule instead.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchSecurityPolicyRequest, dict]):
+ The request object. A request message for
+ SecurityPolicies.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy (str):
+ Name of the security policy to
+ update.
+
+ This corresponds to the ``security_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy_resource (google.cloud.compute_v1.types.SecurityPolicy):
+ The body resource for this request
+ This corresponds to the ``security_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1188,6 +1547,30 @@ def patch_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -1233,22 +1616,98 @@ def patch_rule_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, security_policy, security_policy_rule_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchRuleSecurityPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchRuleSecurityPolicyRequest):
+ request = compute.PatchRuleSecurityPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if security_policy is not None:
+ request.security_policy = security_policy
+ if security_policy_rule_resource is not None:
+ request.security_policy_rule_resource = security_policy_rule_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch_rule]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch_rule(
+ self,
+ request: Union[compute.PatchRuleSecurityPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ security_policy: str = None,
+ security_policy_rule_resource: compute.SecurityPolicyRule = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches a rule at the specified priority.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchRuleSecurityPolicyRequest, dict]):
+ The request object. A request message for
+ SecurityPolicies.PatchRule. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy (str):
+ Name of the security policy to
+ update.
+
+ This corresponds to the ``security_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy_rule_resource (google.cloud.compute_v1.types.SecurityPolicyRule):
+ The body resource for this request
+ This corresponds to the ``security_policy_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1290,6 +1749,30 @@ def patch_rule_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -1329,22 +1812,9 @@ def remove_rule_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1385,6 +1855,109 @@ def remove_rule_unary(
# Done; return the response.
return response
+ def remove_rule(
+ self,
+ request: Union[compute.RemoveRuleSecurityPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ security_policy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes a rule at the specified priority.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.RemoveRuleSecurityPolicyRequest, dict]):
+ The request object. A request message for
+ SecurityPolicies.RemoveRule. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ security_policy (str):
+ Name of the security policy to
+ update.
+
+ This corresponds to the ``security_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, security_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.RemoveRuleSecurityPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.RemoveRuleSecurityPolicyRequest):
+ request = compute.RemoveRuleSecurityPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if security_policy is not None:
+ request.security_policy = security_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.remove_rule]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/security_policies/transports/base.py b/google/cloud/compute_v1/services/security_policies/transports/base.py
index 8d580ed16..bba5c6805 100644
--- a/google/cloud/compute_v1/services/security_policies/transports/base.py
+++ b/google/cloud/compute_v1/services/security_policies/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -294,5 +297,21 @@ def remove_rule(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("SecurityPoliciesTransport",)
diff --git a/google/cloud/compute_v1/services/security_policies/transports/rest.py b/google/cloud/compute_v1/services/security_policies/transports/rest.py
index 3952a9796..3c0d2034a 100644
--- a/google/cloud/compute_v1/services/security_policies/transports/rest.py
+++ b/google/cloud/compute_v1/services/security_policies/transports/rest.py
@@ -1776,6 +1776,10 @@ def remove_rule(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/service_attachments/client.py b/google/cloud/compute_v1/services/service_attachments/client.py
index bafebdad8..d44c8d34d 100644
--- a/google/cloud/compute_v1/services/service_attachments/client.py
+++ b/google/cloud/compute_v1/services/service_attachments/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.service_attachments import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import ServiceAttachmentsTransport, DEFAULT_CLIENT_INFO
@@ -530,22 +533,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -588,6 +578,119 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteServiceAttachmentRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ service_attachment: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified ServiceAttachment in the given
+ scope
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteServiceAttachmentRequest, dict]):
+ The request object. A request message for
+ ServiceAttachments.Delete. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region of this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ service_attachment (str):
+ Name of the ServiceAttachment
+ resource to delete.
+
+ This corresponds to the ``service_attachment`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, service_attachment])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteServiceAttachmentRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteServiceAttachmentRequest):
+ request = compute.DeleteServiceAttachmentRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if service_attachment is not None:
+ request.service_attachment = service_attachment
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetServiceAttachmentRequest, dict] = None,
@@ -853,22 +956,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -911,6 +1001,118 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertServiceAttachmentRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ service_attachment_resource: compute.ServiceAttachment = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a ServiceAttachment in the specified project
+ in the given scope using the parameters that are
+ included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertServiceAttachmentRequest, dict]):
+ The request object. A request message for
+ ServiceAttachments.Insert. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region of this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ service_attachment_resource (google.cloud.compute_v1.types.ServiceAttachment):
+ The body resource for this request
+ This corresponds to the ``service_attachment_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, service_attachment_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertServiceAttachmentRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertServiceAttachmentRequest):
+ request = compute.InsertServiceAttachmentRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if service_attachment_resource is not None:
+ request.service_attachment_resource = service_attachment_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListServiceAttachmentsRequest, dict] = None,
@@ -1054,22 +1256,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1116,6 +1305,135 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchServiceAttachmentRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ service_attachment: str = None,
+ service_attachment_resource: compute.ServiceAttachment = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified ServiceAttachment resource with
+ the data included in the request. This method supports
+ PATCH semantics and uses JSON merge patch format and
+ processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchServiceAttachmentRequest, dict]):
+ The request object. A request message for
+ ServiceAttachments.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ The region scoping this request and
+ should conform to RFC1035.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ service_attachment (str):
+ The resource id of the
+ ServiceAttachment to patch. It should
+ conform to RFC1035 resource name or be a
+ string form on an unsigned long number.
+
+ This corresponds to the ``service_attachment`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ service_attachment_resource (google.cloud.compute_v1.types.ServiceAttachment):
+ The body resource for this request
+ This corresponds to the ``service_attachment_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, service_attachment, service_attachment_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchServiceAttachmentRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchServiceAttachmentRequest):
+ request = compute.PatchServiceAttachmentRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if service_attachment is not None:
+ request.service_attachment = service_attachment
+ if service_attachment_resource is not None:
+ request.service_attachment_resource = service_attachment_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def set_iam_policy(
self,
request: Union[compute.SetIamPolicyServiceAttachmentRequest, dict] = None,
diff --git a/google/cloud/compute_v1/services/service_attachments/transports/base.py b/google/cloud/compute_v1/services/service_attachments/transports/base.py
index 67153633d..2105cf0bd 100644
--- a/google/cloud/compute_v1/services/service_attachments/transports/base.py
+++ b/google/cloud/compute_v1/services/service_attachments/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -265,5 +268,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("ServiceAttachmentsTransport",)
diff --git a/google/cloud/compute_v1/services/service_attachments/transports/rest.py b/google/cloud/compute_v1/services/service_attachments/transports/rest.py
index a0429a1b3..8d4c499ea 100644
--- a/google/cloud/compute_v1/services/service_attachments/transports/rest.py
+++ b/google/cloud/compute_v1/services/service_attachments/transports/rest.py
@@ -1549,6 +1549,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/snapshots/client.py b/google/cloud/compute_v1/services/snapshots/client.py
index 76786dac3..846a5c639 100644
--- a/google/cloud/compute_v1/services/snapshots/client.py
+++ b/google/cloud/compute_v1/services/snapshots/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.snapshots import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import SnapshotsTransport, DEFAULT_CLIENT_INFO
@@ -442,22 +445,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -498,6 +488,115 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteSnapshotRequest, dict] = None,
+ *,
+ project: str = None,
+ snapshot: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified Snapshot resource. Keep in mind
+ that deleting a single snapshot might not necessarily
+ delete all the data on that snapshot. If any data on the
+ snapshot that is marked for deletion is needed for
+ subsequent snapshots, the data will be moved to the next
+ corresponding snapshot. For more information, see
+ Deleting snapshots.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteSnapshotRequest, dict]):
+ The request object. A request message for
+ Snapshots.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ snapshot (str):
+ Name of the Snapshot resource to
+ delete.
+
+ This corresponds to the ``snapshot`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, snapshot])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteSnapshotRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteSnapshotRequest):
+ request = compute.DeleteSnapshotRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if snapshot is not None:
+ request.snapshot = snapshot
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetSnapshotRequest, dict] = None,
@@ -737,22 +836,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -793,6 +879,112 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertSnapshotRequest, dict] = None,
+ *,
+ project: str = None,
+ snapshot_resource: compute.Snapshot = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a snapshot in the specified project using the
+ data included in the request. For regular snapshot
+ creation, consider using this method instead of
+ disks.createSnapshot, as this method supports more
+ features, such as creating snapshots in a project
+ different from the source disk project.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertSnapshotRequest, dict]):
+ The request object. A request message for
+ Snapshots.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ snapshot_resource (google.cloud.compute_v1.types.Snapshot):
+ The body resource for this request
+ This corresponds to the ``snapshot_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, snapshot_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertSnapshotRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertSnapshotRequest):
+ request = compute.InsertSnapshotRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if snapshot_resource is not None:
+ request.snapshot_resource = snapshot_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListSnapshotsRequest, dict] = None,
@@ -1047,22 +1239,9 @@ def set_labels_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1109,6 +1288,122 @@ def set_labels_unary(
# Done; return the response.
return response
+ def set_labels(
+ self,
+ request: Union[compute.SetLabelsSnapshotRequest, dict] = None,
+ *,
+ project: str = None,
+ resource: str = None,
+ global_set_labels_request_resource: compute.GlobalSetLabelsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the labels on a snapshot. To learn more about
+ labels, read the Labeling Resources documentation.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetLabelsSnapshotRequest, dict]):
+ The request object. A request message for
+ Snapshots.SetLabels. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest):
+ The body resource for this request
+ This corresponds to the ``global_set_labels_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, resource, global_set_labels_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetLabelsSnapshotRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetLabelsSnapshotRequest):
+ request = compute.SetLabelsSnapshotRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if resource is not None:
+ request.resource = resource
+ if global_set_labels_request_resource is not None:
+ request.global_set_labels_request_resource = (
+ global_set_labels_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_labels]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def test_iam_permissions(
self,
request: Union[compute.TestIamPermissionsSnapshotRequest, dict] = None,
diff --git a/google/cloud/compute_v1/services/snapshots/transports/base.py b/google/cloud/compute_v1/services/snapshots/transports/base.py
index 8cdddccd1..1b7b847dc 100644
--- a/google/cloud/compute_v1/services/snapshots/transports/base.py
+++ b/google/cloud/compute_v1/services/snapshots/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -248,5 +251,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("SnapshotsTransport",)
diff --git a/google/cloud/compute_v1/services/snapshots/transports/rest.py b/google/cloud/compute_v1/services/snapshots/transports/rest.py
index 526c2823b..71461382f 100644
--- a/google/cloud/compute_v1/services/snapshots/transports/rest.py
+++ b/google/cloud/compute_v1/services/snapshots/transports/rest.py
@@ -1365,6 +1365,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/ssl_certificates/client.py b/google/cloud/compute_v1/services/ssl_certificates/client.py
index c5077cdbc..ad39f2029 100644
--- a/google/cloud/compute_v1/services/ssl_certificates/client.py
+++ b/google/cloud/compute_v1/services/ssl_certificates/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.ssl_certificates import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import SslCertificatesTransport, DEFAULT_CLIENT_INFO
@@ -520,22 +523,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -576,6 +566,109 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteSslCertificateRequest, dict] = None,
+ *,
+ project: str = None,
+ ssl_certificate: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified SslCertificate resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteSslCertificateRequest, dict]):
+ The request object. A request message for
+ SslCertificates.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ ssl_certificate (str):
+ Name of the SslCertificate resource
+ to delete.
+
+ This corresponds to the ``ssl_certificate`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, ssl_certificate])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteSslCertificateRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteSslCertificateRequest):
+ request = compute.DeleteSslCertificateRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if ssl_certificate is not None:
+ request.ssl_certificate = ssl_certificate
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetSslCertificateRequest, dict] = None,
@@ -706,22 +799,87 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, ssl_certificate_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertSslCertificateRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertSslCertificateRequest):
+ request = compute.InsertSslCertificateRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if ssl_certificate_resource is not None:
+ request.ssl_certificate_resource = ssl_certificate_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertSslCertificateRequest, dict] = None,
+ *,
+ project: str = None,
+ ssl_certificate_resource: compute.SslCertificate = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a SslCertificate resource in the specified
+ project using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertSslCertificateRequest, dict]):
+ The request object. A request message for
+ SslCertificates.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ ssl_certificate_resource (google.cloud.compute_v1.types.SslCertificate):
+ The body resource for this request
+ This corresponds to the ``ssl_certificate_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -759,6 +917,30 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/ssl_certificates/transports/base.py b/google/cloud/compute_v1/services/ssl_certificates/transports/base.py
index 2115ed647..270cadbcd 100644
--- a/google/cloud/compute_v1/services/ssl_certificates/transports/base.py
+++ b/google/cloud/compute_v1/services/ssl_certificates/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -207,5 +210,21 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("SslCertificatesTransport",)
diff --git a/google/cloud/compute_v1/services/ssl_certificates/transports/rest.py b/google/cloud/compute_v1/services/ssl_certificates/transports/rest.py
index 7bcba37c4..bcba363e4 100644
--- a/google/cloud/compute_v1/services/ssl_certificates/transports/rest.py
+++ b/google/cloud/compute_v1/services/ssl_certificates/transports/rest.py
@@ -890,6 +890,10 @@ def list(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/ssl_policies/client.py b/google/cloud/compute_v1/services/ssl_policies/client.py
index 7584c513d..ff2458ba0 100644
--- a/google/cloud/compute_v1/services/ssl_policies/client.py
+++ b/google/cloud/compute_v1/services/ssl_policies/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.ssl_policies import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import SslPoliciesTransport, DEFAULT_CLIENT_INFO
@@ -439,22 +442,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -495,6 +485,112 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteSslPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ ssl_policy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified SSL policy. The SSL policy
+ resource can be deleted only if it is not in use by any
+ TargetHttpsProxy or TargetSslProxy resources.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteSslPolicyRequest, dict]):
+ The request object. A request message for
+ SslPolicies.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ ssl_policy (str):
+ Name of the SSL policy to delete. The
+ name must be 1-63 characters long, and
+ comply with RFC1035.
+
+ This corresponds to the ``ssl_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, ssl_policy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteSslPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteSslPolicyRequest):
+ request = compute.DeleteSslPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if ssl_policy is not None:
+ request.ssl_policy = ssl_policy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetSslPolicyRequest, dict] = None,
@@ -615,22 +711,88 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, ssl_policy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertSslPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertSslPolicyRequest):
+ request = compute.InsertSslPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if ssl_policy_resource is not None:
+ request.ssl_policy_resource = ssl_policy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertSslPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ ssl_policy_resource: compute.SslPolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Returns the specified SSL policy resource. Gets a
+ list of available SSL policies by making a list()
+ request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertSslPolicyRequest, dict]):
+ The request object. A request message for
+ SslPolicies.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ ssl_policy_resource (google.cloud.compute_v1.types.SslPolicy):
+ The body resource for this request
+ This corresponds to the ``ssl_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -668,6 +830,30 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -863,22 +1049,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -921,6 +1094,119 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchSslPolicyRequest, dict] = None,
+ *,
+ project: str = None,
+ ssl_policy: str = None,
+ ssl_policy_resource: compute.SslPolicy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified SSL policy with the data
+ included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchSslPolicyRequest, dict]):
+ The request object. A request message for
+ SslPolicies.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ ssl_policy (str):
+ Name of the SSL policy to update. The
+ name must be 1-63 characters long, and
+ comply with RFC1035.
+
+ This corresponds to the ``ssl_policy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ ssl_policy_resource (google.cloud.compute_v1.types.SslPolicy):
+ The body resource for this request
+ This corresponds to the ``ssl_policy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, ssl_policy, ssl_policy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchSslPolicyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchSslPolicyRequest):
+ request = compute.PatchSslPolicyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if ssl_policy is not None:
+ request.ssl_policy = ssl_policy
+ if ssl_policy_resource is not None:
+ request.ssl_policy_resource = ssl_policy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/ssl_policies/transports/base.py b/google/cloud/compute_v1/services/ssl_policies/transports/base.py
index 4a973176c..78832bdd1 100644
--- a/google/cloud/compute_v1/services/ssl_policies/transports/base.py
+++ b/google/cloud/compute_v1/services/ssl_policies/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -221,5 +224,21 @@ def patch(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("SslPoliciesTransport",)
diff --git a/google/cloud/compute_v1/services/ssl_policies/transports/rest.py b/google/cloud/compute_v1/services/ssl_policies/transports/rest.py
index 59a7440ab..f7b42f967 100644
--- a/google/cloud/compute_v1/services/ssl_policies/transports/rest.py
+++ b/google/cloud/compute_v1/services/ssl_policies/transports/rest.py
@@ -1011,6 +1011,10 @@ def patch(self) -> Callable[[compute.PatchSslPolicyRequest], compute.Operation]:
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/subnetworks/client.py b/google/cloud/compute_v1/services/subnetworks/client.py
index 6e3456ee3..a8c0091b2 100644
--- a/google/cloud/compute_v1/services/subnetworks/client.py
+++ b/google/cloud/compute_v1/services/subnetworks/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.subnetworks import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import SubnetworksTransport, DEFAULT_CLIENT_INFO
@@ -523,22 +526,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -581,6 +571,120 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteSubnetworkRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ subnetwork: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified subnetwork.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteSubnetworkRequest, dict]):
+ The request object. A request message for
+ Subnetworks.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ subnetwork (str):
+ Name of the Subnetwork resource to
+ delete.
+
+ This corresponds to the ``subnetwork`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, subnetwork])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteSubnetworkRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteSubnetworkRequest):
+ request = compute.DeleteSubnetworkRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if subnetwork is not None:
+ request.subnetwork = subnetwork
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def expand_ip_cidr_range_unary(
self,
request: Union[compute.ExpandIpCidrRangeSubnetworkRequest, dict] = None,
@@ -632,22 +736,9 @@ def expand_ip_cidr_range_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -701,6 +792,138 @@ def expand_ip_cidr_range_unary(
# Done; return the response.
return response
+ def expand_ip_cidr_range(
+ self,
+ request: Union[compute.ExpandIpCidrRangeSubnetworkRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ subnetwork: str = None,
+ subnetworks_expand_ip_cidr_range_request_resource: compute.SubnetworksExpandIpCidrRangeRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Expands the IP CIDR range of the subnetwork to a
+ specified value.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ExpandIpCidrRangeSubnetworkRequest, dict]):
+ The request object. A request message for
+ Subnetworks.ExpandIpCidrRange. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ subnetwork (str):
+ Name of the Subnetwork resource to
+ update.
+
+ This corresponds to the ``subnetwork`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ subnetworks_expand_ip_cidr_range_request_resource (google.cloud.compute_v1.types.SubnetworksExpandIpCidrRangeRequest):
+ The body resource for this request
+ This corresponds to the ``subnetworks_expand_ip_cidr_range_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ subnetwork,
+ subnetworks_expand_ip_cidr_range_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ExpandIpCidrRangeSubnetworkRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ExpandIpCidrRangeSubnetworkRequest):
+ request = compute.ExpandIpCidrRangeSubnetworkRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if subnetwork is not None:
+ request.subnetwork = subnetwork
+ if subnetworks_expand_ip_cidr_range_request_resource is not None:
+ request.subnetworks_expand_ip_cidr_range_request_resource = (
+ subnetworks_expand_ip_cidr_range_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.expand_ip_cidr_range]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetSubnetworkRequest, dict] = None,
@@ -966,22 +1189,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1024,6 +1234,119 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertSubnetworkRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ subnetwork_resource: compute.Subnetwork = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a subnetwork in the specified project using
+ the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertSubnetworkRequest, dict]):
+ The request object. A request message for
+ Subnetworks.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ subnetwork_resource (google.cloud.compute_v1.types.Subnetwork):
+ The body resource for this request
+ This corresponds to the ``subnetwork_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, subnetwork_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertSubnetworkRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertSubnetworkRequest):
+ request = compute.InsertSubnetworkRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if subnetwork_resource is not None:
+ request.subnetwork_resource = subnetwork_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListSubnetworksRequest, dict] = None,
@@ -1250,22 +1573,110 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, subnetwork, subnetwork_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchSubnetworkRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchSubnetworkRequest):
+ request = compute.PatchSubnetworkRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if subnetwork is not None:
+ request.subnetwork = subnetwork
+ if subnetwork_resource is not None:
+ request.subnetwork_resource = subnetwork_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch(
+ self,
+ request: Union[compute.PatchSubnetworkRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ subnetwork: str = None,
+ subnetwork_resource: compute.Subnetwork = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified subnetwork with the data
+ included in the request. Only certain fields can be
+ updated with a patch request as indicated in the field
+ descriptions. You must specify the current fingerprint
+ of the subnetwork resource being patched.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchSubnetworkRequest, dict]):
+ The request object. A request message for
+ Subnetworks.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ subnetwork (str):
+ Name of the Subnetwork resource to
+ patch.
+
+ This corresponds to the ``subnetwork`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ subnetwork_resource (google.cloud.compute_v1.types.Subnetwork):
+ The body resource for this request
+ This corresponds to the ``subnetwork_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1307,6 +1718,31 @@ def patch_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -1500,22 +1936,117 @@ def set_private_ip_google_access_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ subnetwork,
+ subnetworks_set_private_ip_google_access_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetPrivateIpGoogleAccessSubnetworkRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetPrivateIpGoogleAccessSubnetworkRequest):
+ request = compute.SetPrivateIpGoogleAccessSubnetworkRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if subnetwork is not None:
+ request.subnetwork = subnetwork
+ if subnetworks_set_private_ip_google_access_request_resource is not None:
+ request.subnetworks_set_private_ip_google_access_request_resource = (
+ subnetworks_set_private_ip_google_access_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[
+ self._transport.set_private_ip_google_access
+ ]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_private_ip_google_access(
+ self,
+ request: Union[compute.SetPrivateIpGoogleAccessSubnetworkRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ subnetwork: str = None,
+ subnetworks_set_private_ip_google_access_request_resource: compute.SubnetworksSetPrivateIpGoogleAccessRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Set whether VMs in this subnet can access Google
+ services without assigning external IP addresses through
+ Private Google Access.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetPrivateIpGoogleAccessSubnetworkRequest, dict]):
+ The request object. A request message for
+ Subnetworks.SetPrivateIpGoogleAccess. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ subnetwork (str):
+ Name of the Subnetwork resource.
+ This corresponds to the ``subnetwork`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ subnetworks_set_private_ip_google_access_request_resource (google.cloud.compute_v1.types.SubnetworksSetPrivateIpGoogleAccessRequest):
+ The body resource for this request
+ This corresponds to the ``subnetworks_set_private_ip_google_access_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1568,6 +2099,31 @@ def set_private_ip_google_access_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/subnetworks/transports/base.py b/google/cloud/compute_v1/services/subnetworks/transports/base.py
index 444564ff3..6eb37d8d7 100644
--- a/google/cloud/compute_v1/services/subnetworks/transports/base.py
+++ b/google/cloud/compute_v1/services/subnetworks/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -310,5 +313,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("SubnetworksTransport",)
diff --git a/google/cloud/compute_v1/services/subnetworks/transports/rest.py b/google/cloud/compute_v1/services/subnetworks/transports/rest.py
index 376ae00d9..cd848dc67 100644
--- a/google/cloud/compute_v1/services/subnetworks/transports/rest.py
+++ b/google/cloud/compute_v1/services/subnetworks/transports/rest.py
@@ -1968,6 +1968,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/target_grpc_proxies/client.py b/google/cloud/compute_v1/services/target_grpc_proxies/client.py
index 1e33fe3cb..de5a89111 100644
--- a/google/cloud/compute_v1/services/target_grpc_proxies/client.py
+++ b/google/cloud/compute_v1/services/target_grpc_proxies/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.target_grpc_proxies import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import TargetGrpcProxiesTransport, DEFAULT_CLIENT_INFO
@@ -439,22 +442,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -495,6 +485,110 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteTargetGrpcProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_grpc_proxy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified TargetGrpcProxy in the given
+ scope
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteTargetGrpcProxyRequest, dict]):
+ The request object. A request message for
+ TargetGrpcProxies.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_grpc_proxy (str):
+ Name of the TargetGrpcProxy resource
+ to delete.
+
+ This corresponds to the ``target_grpc_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, target_grpc_proxy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteTargetGrpcProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteTargetGrpcProxyRequest):
+ request = compute.DeleteTargetGrpcProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_grpc_proxy is not None:
+ request.target_grpc_proxy = target_grpc_proxy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetTargetGrpcProxyRequest, dict] = None,
@@ -616,22 +710,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -672,6 +753,109 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertTargetGrpcProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_grpc_proxy_resource: compute.TargetGrpcProxy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a TargetGrpcProxy in the specified project in
+ the given scope using the parameters that are included
+ in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertTargetGrpcProxyRequest, dict]):
+ The request object. A request message for
+ TargetGrpcProxies.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_grpc_proxy_resource (google.cloud.compute_v1.types.TargetGrpcProxy):
+ The body resource for this request
+ This corresponds to the ``target_grpc_proxy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, target_grpc_proxy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertTargetGrpcProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertTargetGrpcProxyRequest):
+ request = compute.InsertTargetGrpcProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_grpc_proxy_resource is not None:
+ request.target_grpc_proxy_resource = target_grpc_proxy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListTargetGrpcProxiesRequest, dict] = None,
@@ -797,22 +981,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -857,6 +1028,122 @@ def patch_unary(
# Done; return the response.
return response
+ def patch(
+ self,
+ request: Union[compute.PatchTargetGrpcProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_grpc_proxy: str = None,
+ target_grpc_proxy_resource: compute.TargetGrpcProxy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified TargetGrpcProxy resource with
+ the data included in the request. This method supports
+ PATCH semantics and uses JSON merge patch format and
+ processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchTargetGrpcProxyRequest, dict]):
+ The request object. A request message for
+ TargetGrpcProxies.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_grpc_proxy (str):
+ Name of the TargetGrpcProxy resource
+ to patch.
+
+ This corresponds to the ``target_grpc_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_grpc_proxy_resource (google.cloud.compute_v1.types.TargetGrpcProxy):
+ The body resource for this request
+ This corresponds to the ``target_grpc_proxy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, target_grpc_proxy, target_grpc_proxy_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchTargetGrpcProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchTargetGrpcProxyRequest):
+ request = compute.PatchTargetGrpcProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_grpc_proxy is not None:
+ request.target_grpc_proxy = target_grpc_proxy
+ if target_grpc_proxy_resource is not None:
+ request.target_grpc_proxy_resource = target_grpc_proxy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/target_grpc_proxies/transports/base.py b/google/cloud/compute_v1/services/target_grpc_proxies/transports/base.py
index 75c1964a6..b4174837f 100644
--- a/google/cloud/compute_v1/services/target_grpc_proxies/transports/base.py
+++ b/google/cloud/compute_v1/services/target_grpc_proxies/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -204,5 +207,21 @@ def patch(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("TargetGrpcProxiesTransport",)
diff --git a/google/cloud/compute_v1/services/target_grpc_proxies/transports/rest.py b/google/cloud/compute_v1/services/target_grpc_proxies/transports/rest.py
index 33d59a9fe..8e7c4dcc4 100644
--- a/google/cloud/compute_v1/services/target_grpc_proxies/transports/rest.py
+++ b/google/cloud/compute_v1/services/target_grpc_proxies/transports/rest.py
@@ -895,6 +895,10 @@ def patch(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/target_http_proxies/client.py b/google/cloud/compute_v1/services/target_http_proxies/client.py
index 1c6eb9a0e..75ec7fada 100644
--- a/google/cloud/compute_v1/services/target_http_proxies/client.py
+++ b/google/cloud/compute_v1/services/target_http_proxies/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.target_http_proxies import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import TargetHttpProxiesTransport, DEFAULT_CLIENT_INFO
@@ -520,22 +523,88 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, target_http_proxy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteTargetHttpProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteTargetHttpProxyRequest):
+ request = compute.DeleteTargetHttpProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_http_proxy is not None:
+ request.target_http_proxy = target_http_proxy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def delete(
+ self,
+ request: Union[compute.DeleteTargetHttpProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_http_proxy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified TargetHttpProxy resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteTargetHttpProxyRequest, dict]):
+ The request object. A request message for
+ TargetHttpProxies.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_http_proxy (str):
+ Name of the TargetHttpProxy resource
+ to delete.
+
+ This corresponds to the ``target_http_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -573,6 +642,30 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -703,22 +796,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -759,6 +839,108 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertTargetHttpProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_http_proxy_resource: compute.TargetHttpProxy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a TargetHttpProxy resource in the specified
+ project using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertTargetHttpProxyRequest, dict]):
+ The request object. A request message for
+ TargetHttpProxies.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_http_proxy_resource (google.cloud.compute_v1.types.TargetHttpProxy):
+ The body resource for this request
+ This corresponds to the ``target_http_proxy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, target_http_proxy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertTargetHttpProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertTargetHttpProxyRequest):
+ request = compute.InsertTargetHttpProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_http_proxy_resource is not None:
+ request.target_http_proxy_resource = target_http_proxy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListTargetHttpProxiesRequest, dict] = None,
@@ -885,22 +1067,101 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, target_http_proxy, target_http_proxy_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchTargetHttpProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchTargetHttpProxyRequest):
+ request = compute.PatchTargetHttpProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_http_proxy is not None:
+ request.target_http_proxy = target_http_proxy
+ if target_http_proxy_resource is not None:
+ request.target_http_proxy_resource = target_http_proxy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch(
+ self,
+ request: Union[compute.PatchTargetHttpProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_http_proxy: str = None,
+ target_http_proxy_resource: compute.TargetHttpProxy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified TargetHttpProxy resource with
+ the data included in the request. This method supports
+ PATCH semantics and uses JSON merge patch format and
+ processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchTargetHttpProxyRequest, dict]):
+ The request object. A request message for
+ TargetHttpProxies.Patch. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_http_proxy (str):
+ Name of the TargetHttpProxy resource
+ to patch.
+
+ This corresponds to the ``target_http_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_http_proxy_resource (google.cloud.compute_v1.types.TargetHttpProxy):
+ The body resource for this request
+ This corresponds to the ``target_http_proxy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -942,6 +1203,30 @@ def patch_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -987,22 +1272,9 @@ def set_url_map_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1047,6 +1319,119 @@ def set_url_map_unary(
# Done; return the response.
return response
+ def set_url_map(
+ self,
+ request: Union[compute.SetUrlMapTargetHttpProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_http_proxy: str = None,
+ url_map_reference_resource: compute.UrlMapReference = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Changes the URL map for TargetHttpProxy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetUrlMapTargetHttpProxyRequest, dict]):
+ The request object. A request message for
+ TargetHttpProxies.SetUrlMap. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_http_proxy (str):
+ Name of the TargetHttpProxy to set a
+ URL map for.
+
+ This corresponds to the ``target_http_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map_reference_resource (google.cloud.compute_v1.types.UrlMapReference):
+ The body resource for this request
+ This corresponds to the ``url_map_reference_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, target_http_proxy, url_map_reference_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetUrlMapTargetHttpProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetUrlMapTargetHttpProxyRequest):
+ request = compute.SetUrlMapTargetHttpProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_http_proxy is not None:
+ request.target_http_proxy = target_http_proxy
+ if url_map_reference_resource is not None:
+ request.url_map_reference_resource = url_map_reference_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_url_map]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/target_http_proxies/transports/base.py b/google/cloud/compute_v1/services/target_http_proxies/transports/base.py
index 62efc25b6..f0f219912 100644
--- a/google/cloud/compute_v1/services/target_http_proxies/transports/base.py
+++ b/google/cloud/compute_v1/services/target_http_proxies/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -235,5 +238,21 @@ def set_url_map(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("TargetHttpProxiesTransport",)
diff --git a/google/cloud/compute_v1/services/target_http_proxies/transports/rest.py b/google/cloud/compute_v1/services/target_http_proxies/transports/rest.py
index 8838e1170..488598312 100644
--- a/google/cloud/compute_v1/services/target_http_proxies/transports/rest.py
+++ b/google/cloud/compute_v1/services/target_http_proxies/transports/rest.py
@@ -1195,6 +1195,10 @@ def set_url_map(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/target_https_proxies/client.py b/google/cloud/compute_v1/services/target_https_proxies/client.py
index 030eda64c..7b2e1ecb0 100644
--- a/google/cloud/compute_v1/services/target_https_proxies/client.py
+++ b/google/cloud/compute_v1/services/target_https_proxies/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.target_https_proxies import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import TargetHttpsProxiesTransport, DEFAULT_CLIENT_INFO
@@ -520,22 +523,88 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, target_https_proxy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteTargetHttpsProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteTargetHttpsProxyRequest):
+ request = compute.DeleteTargetHttpsProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_https_proxy is not None:
+ request.target_https_proxy = target_https_proxy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def delete(
+ self,
+ request: Union[compute.DeleteTargetHttpsProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_https_proxy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified TargetHttpsProxy resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteTargetHttpsProxyRequest, dict]):
+ The request object. A request message for
+ TargetHttpsProxies.Delete. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxy (str):
+ Name of the TargetHttpsProxy resource
+ to delete.
+
+ This corresponds to the ``target_https_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -573,6 +642,30 @@ def delete_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -702,22 +795,87 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, target_https_proxy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertTargetHttpsProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertTargetHttpsProxyRequest):
+ request = compute.InsertTargetHttpsProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_https_proxy_resource is not None:
+ request.target_https_proxy_resource = target_https_proxy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertTargetHttpsProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_https_proxy_resource: compute.TargetHttpsProxy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a TargetHttpsProxy resource in the specified
+ project using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertTargetHttpsProxyRequest, dict]):
+ The request object. A request message for
+ TargetHttpsProxies.Insert. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxy_resource (google.cloud.compute_v1.types.TargetHttpsProxy):
+ The body resource for this request
+ This corresponds to the ``target_https_proxy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -755,6 +913,30 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -885,22 +1067,9 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -945,24 +1114,27 @@ def patch_unary(
# Done; return the response.
return response
- def set_quic_override_unary(
+ def patch(
self,
- request: Union[compute.SetQuicOverrideTargetHttpsProxyRequest, dict] = None,
+ request: Union[compute.PatchTargetHttpsProxyRequest, dict] = None,
*,
project: str = None,
target_https_proxy: str = None,
- target_https_proxies_set_quic_override_request_resource: compute.TargetHttpsProxiesSetQuicOverrideRequest = None,
+ target_https_proxy_resource: compute.TargetHttpsProxy = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Sets the QUIC override policy for TargetHttpsProxy.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified TargetHttpsProxy resource with
+ the data included in the request. This method supports
+ PATCH semantics and uses JSON merge patch format and
+ processing rules.
Args:
- request (Union[google.cloud.compute_v1.types.SetQuicOverrideTargetHttpsProxyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.PatchTargetHttpsProxyRequest, dict]):
The request object. A request message for
- TargetHttpsProxies.SetQuicOverride. See the method
- description for details.
+ TargetHttpsProxies.Patch. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -970,15 +1142,14 @@ def set_quic_override_unary(
should not be set.
target_https_proxy (str):
Name of the TargetHttpsProxy resource
- to set the QUIC override policy for. The
- name should conform to RFC1035.
+ to patch.
This corresponds to the ``target_https_proxy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- target_https_proxies_set_quic_override_request_resource (google.cloud.compute_v1.types.TargetHttpsProxiesSetQuicOverrideRequest):
+ target_https_proxy_resource (google.cloud.compute_v1.types.TargetHttpsProxy):
The body resource for this request
- This corresponds to the ``target_https_proxies_set_quic_override_request_resource`` field
+ This corresponds to the ``target_https_proxy_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -988,33 +1159,16 @@ def set_quic_override_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
has_flattened_params = any(
- [
- project,
- target_https_proxy,
- target_https_proxies_set_quic_override_request_resource,
- ]
+ [project, target_https_proxy, target_https_proxy_resource]
)
if request is not None and has_flattened_params:
raise ValueError(
@@ -1023,25 +1177,23 @@ def set_quic_override_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetQuicOverrideTargetHttpsProxyRequest.
+ # in a compute.PatchTargetHttpsProxyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetQuicOverrideTargetHttpsProxyRequest):
- request = compute.SetQuicOverrideTargetHttpsProxyRequest(request)
+ if not isinstance(request, compute.PatchTargetHttpsProxyRequest):
+ request = compute.PatchTargetHttpsProxyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if target_https_proxy is not None:
request.target_https_proxy = target_https_proxy
- if target_https_proxies_set_quic_override_request_resource is not None:
- request.target_https_proxies_set_quic_override_request_resource = (
- target_https_proxies_set_quic_override_request_resource
- )
+ if target_https_proxy_resource is not None:
+ request.target_https_proxy_resource = target_https_proxy_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_quic_override]
+ rpc = self._transport._wrapped_methods[self._transport.patch]
# Send the request.
response = rpc(
@@ -1051,26 +1203,50 @@ def set_quic_override_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def set_ssl_certificates_unary(
+ def set_quic_override_unary(
self,
- request: Union[compute.SetSslCertificatesTargetHttpsProxyRequest, dict] = None,
+ request: Union[compute.SetQuicOverrideTargetHttpsProxyRequest, dict] = None,
*,
project: str = None,
target_https_proxy: str = None,
- target_https_proxies_set_ssl_certificates_request_resource: compute.TargetHttpsProxiesSetSslCertificatesRequest = None,
+ target_https_proxies_set_quic_override_request_resource: compute.TargetHttpsProxiesSetQuicOverrideRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Replaces SslCertificates for TargetHttpsProxy.
+ r"""Sets the QUIC override policy for TargetHttpsProxy.
Args:
- request (Union[google.cloud.compute_v1.types.SetSslCertificatesTargetHttpsProxyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetQuicOverrideTargetHttpsProxyRequest, dict]):
The request object. A request message for
- TargetHttpsProxies.SetSslCertificates. See the method
+ TargetHttpsProxies.SetQuicOverride. See the method
description for details.
project (str):
Project ID for this request.
@@ -1079,14 +1255,15 @@ def set_ssl_certificates_unary(
should not be set.
target_https_proxy (str):
Name of the TargetHttpsProxy resource
- to set an SslCertificates resource for.
+ to set the QUIC override policy for. The
+ name should conform to RFC1035.
This corresponds to the ``target_https_proxy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- target_https_proxies_set_ssl_certificates_request_resource (google.cloud.compute_v1.types.TargetHttpsProxiesSetSslCertificatesRequest):
+ target_https_proxies_set_quic_override_request_resource (google.cloud.compute_v1.types.TargetHttpsProxiesSetQuicOverrideRequest):
The body resource for this request
- This corresponds to the ``target_https_proxies_set_ssl_certificates_request_resource`` field
+ This corresponds to the ``target_https_proxies_set_quic_override_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1096,22 +1273,9 @@ def set_ssl_certificates_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1121,7 +1285,7 @@ def set_ssl_certificates_unary(
[
project,
target_https_proxy,
- target_https_proxies_set_ssl_certificates_request_resource,
+ target_https_proxies_set_quic_override_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -1131,25 +1295,25 @@ def set_ssl_certificates_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetSslCertificatesTargetHttpsProxyRequest.
+ # in a compute.SetQuicOverrideTargetHttpsProxyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetSslCertificatesTargetHttpsProxyRequest):
- request = compute.SetSslCertificatesTargetHttpsProxyRequest(request)
+ if not isinstance(request, compute.SetQuicOverrideTargetHttpsProxyRequest):
+ request = compute.SetQuicOverrideTargetHttpsProxyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if target_https_proxy is not None:
request.target_https_proxy = target_https_proxy
- if target_https_proxies_set_ssl_certificates_request_resource is not None:
- request.target_https_proxies_set_ssl_certificates_request_resource = (
- target_https_proxies_set_ssl_certificates_request_resource
+ if target_https_proxies_set_quic_override_request_resource is not None:
+ request.target_https_proxies_set_quic_override_request_resource = (
+ target_https_proxies_set_quic_override_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_ssl_certificates]
+ rpc = self._transport._wrapped_methods[self._transport.set_quic_override]
# Send the request.
response = rpc(
@@ -1162,13 +1326,347 @@ def set_ssl_certificates_unary(
# Done; return the response.
return response
- def set_ssl_policy_unary(
+ def set_quic_override(
self,
- request: Union[compute.SetSslPolicyTargetHttpsProxyRequest, dict] = None,
+ request: Union[compute.SetQuicOverrideTargetHttpsProxyRequest, dict] = None,
*,
project: str = None,
target_https_proxy: str = None,
- ssl_policy_reference_resource: compute.SslPolicyReference = None,
+ target_https_proxies_set_quic_override_request_resource: compute.TargetHttpsProxiesSetQuicOverrideRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the QUIC override policy for TargetHttpsProxy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetQuicOverrideTargetHttpsProxyRequest, dict]):
+ The request object. A request message for
+ TargetHttpsProxies.SetQuicOverride. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxy (str):
+ Name of the TargetHttpsProxy resource
+ to set the QUIC override policy for. The
+ name should conform to RFC1035.
+
+ This corresponds to the ``target_https_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxies_set_quic_override_request_resource (google.cloud.compute_v1.types.TargetHttpsProxiesSetQuicOverrideRequest):
+ The body resource for this request
+ This corresponds to the ``target_https_proxies_set_quic_override_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ target_https_proxy,
+ target_https_proxies_set_quic_override_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetQuicOverrideTargetHttpsProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetQuicOverrideTargetHttpsProxyRequest):
+ request = compute.SetQuicOverrideTargetHttpsProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_https_proxy is not None:
+ request.target_https_proxy = target_https_proxy
+ if target_https_proxies_set_quic_override_request_resource is not None:
+ request.target_https_proxies_set_quic_override_request_resource = (
+ target_https_proxies_set_quic_override_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_quic_override]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def set_ssl_certificates_unary(
+ self,
+ request: Union[compute.SetSslCertificatesTargetHttpsProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_https_proxy: str = None,
+ target_https_proxies_set_ssl_certificates_request_resource: compute.TargetHttpsProxiesSetSslCertificatesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Replaces SslCertificates for TargetHttpsProxy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetSslCertificatesTargetHttpsProxyRequest, dict]):
+ The request object. A request message for
+ TargetHttpsProxies.SetSslCertificates. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxy (str):
+ Name of the TargetHttpsProxy resource
+ to set an SslCertificates resource for.
+
+ This corresponds to the ``target_https_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxies_set_ssl_certificates_request_resource (google.cloud.compute_v1.types.TargetHttpsProxiesSetSslCertificatesRequest):
+ The body resource for this request
+ This corresponds to the ``target_https_proxies_set_ssl_certificates_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ target_https_proxy,
+ target_https_proxies_set_ssl_certificates_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetSslCertificatesTargetHttpsProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetSslCertificatesTargetHttpsProxyRequest):
+ request = compute.SetSslCertificatesTargetHttpsProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_https_proxy is not None:
+ request.target_https_proxy = target_https_proxy
+ if target_https_proxies_set_ssl_certificates_request_resource is not None:
+ request.target_https_proxies_set_ssl_certificates_request_resource = (
+ target_https_proxies_set_ssl_certificates_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_ssl_certificates]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_ssl_certificates(
+ self,
+ request: Union[compute.SetSslCertificatesTargetHttpsProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_https_proxy: str = None,
+ target_https_proxies_set_ssl_certificates_request_resource: compute.TargetHttpsProxiesSetSslCertificatesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Replaces SslCertificates for TargetHttpsProxy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetSslCertificatesTargetHttpsProxyRequest, dict]):
+ The request object. A request message for
+ TargetHttpsProxies.SetSslCertificates. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxy (str):
+ Name of the TargetHttpsProxy resource
+ to set an SslCertificates resource for.
+
+ This corresponds to the ``target_https_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxies_set_ssl_certificates_request_resource (google.cloud.compute_v1.types.TargetHttpsProxiesSetSslCertificatesRequest):
+ The body resource for this request
+ This corresponds to the ``target_https_proxies_set_ssl_certificates_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ target_https_proxy,
+ target_https_proxies_set_ssl_certificates_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetSslCertificatesTargetHttpsProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetSslCertificatesTargetHttpsProxyRequest):
+ request = compute.SetSslCertificatesTargetHttpsProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_https_proxy is not None:
+ request.target_https_proxy = target_https_proxy
+ if target_https_proxies_set_ssl_certificates_request_resource is not None:
+ request.target_https_proxies_set_ssl_certificates_request_resource = (
+ target_https_proxies_set_ssl_certificates_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_ssl_certificates]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def set_ssl_policy_unary(
+ self,
+ request: Union[compute.SetSslPolicyTargetHttpsProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_https_proxy: str = None,
+ ssl_policy_reference_resource: compute.SslPolicyReference = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
@@ -1210,22 +1708,104 @@ def set_ssl_policy_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, target_https_proxy, ssl_policy_reference_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetSslPolicyTargetHttpsProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetSslPolicyTargetHttpsProxyRequest):
+ request = compute.SetSslPolicyTargetHttpsProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_https_proxy is not None:
+ request.target_https_proxy = target_https_proxy
+ if ssl_policy_reference_resource is not None:
+ request.ssl_policy_reference_resource = ssl_policy_reference_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_ssl_policy]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_ssl_policy(
+ self,
+ request: Union[compute.SetSslPolicyTargetHttpsProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_https_proxy: str = None,
+ ssl_policy_reference_resource: compute.SslPolicyReference = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the SSL policy for TargetHttpsProxy. The SSL
+ policy specifies the server-side support for SSL
+ features. This affects connections between clients and
+ the HTTPS proxy load balancer. They do not affect the
+ connection between the load balancer and the backends.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetSslPolicyTargetHttpsProxyRequest, dict]):
+ The request object. A request message for
+ TargetHttpsProxies.SetSslPolicy. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxy (str):
+ Name of the TargetHttpsProxy resource
+ whose SSL policy is to be set. The name
+ must be 1-63 characters long, and comply
+ with RFC1035.
+
+ This corresponds to the ``target_https_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ ssl_policy_reference_resource (google.cloud.compute_v1.types.SslPolicyReference):
+ The body resource for this request
+ This corresponds to the ``ssl_policy_reference_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1267,6 +1847,30 @@ def set_ssl_policy_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -1312,22 +1916,9 @@ def set_url_map_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1372,6 +1963,119 @@ def set_url_map_unary(
# Done; return the response.
return response
+ def set_url_map(
+ self,
+ request: Union[compute.SetUrlMapTargetHttpsProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_https_proxy: str = None,
+ url_map_reference_resource: compute.UrlMapReference = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Changes the URL map for TargetHttpsProxy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetUrlMapTargetHttpsProxyRequest, dict]):
+ The request object. A request message for
+ TargetHttpsProxies.SetUrlMap. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_https_proxy (str):
+ Name of the TargetHttpsProxy resource
+ whose URL map is to be set.
+
+ This corresponds to the ``target_https_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map_reference_resource (google.cloud.compute_v1.types.UrlMapReference):
+ The body resource for this request
+ This corresponds to the ``url_map_reference_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, target_https_proxy, url_map_reference_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetUrlMapTargetHttpsProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetUrlMapTargetHttpsProxyRequest):
+ request = compute.SetUrlMapTargetHttpsProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_https_proxy is not None:
+ request.target_https_proxy = target_https_proxy
+ if url_map_reference_resource is not None:
+ request.url_map_reference_resource = url_map_reference_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_url_map]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/target_https_proxies/transports/base.py b/google/cloud/compute_v1/services/target_https_proxies/transports/base.py
index b5d37e215..1e514689e 100644
--- a/google/cloud/compute_v1/services/target_https_proxies/transports/base.py
+++ b/google/cloud/compute_v1/services/target_https_proxies/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -277,5 +280,21 @@ def set_url_map(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("TargetHttpsProxiesTransport",)
diff --git a/google/cloud/compute_v1/services/target_https_proxies/transports/rest.py b/google/cloud/compute_v1/services/target_https_proxies/transports/rest.py
index 60be5f57f..05a914d7c 100644
--- a/google/cloud/compute_v1/services/target_https_proxies/transports/rest.py
+++ b/google/cloud/compute_v1/services/target_https_proxies/transports/rest.py
@@ -1682,6 +1682,10 @@ def set_url_map(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/target_instances/client.py b/google/cloud/compute_v1/services/target_instances/client.py
index 3efe2ffc8..7d42bf6d1 100644
--- a/google/cloud/compute_v1/services/target_instances/client.py
+++ b/google/cloud/compute_v1/services/target_instances/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.target_instances import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import TargetInstancesTransport, DEFAULT_CLIENT_INFO
@@ -525,22 +528,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -583,6 +573,120 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteTargetInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ target_instance: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified TargetInstance resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteTargetInstanceRequest, dict]):
+ The request object. A request message for
+ TargetInstances.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ Name of the zone scoping this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_instance (str):
+ Name of the TargetInstance resource
+ to delete.
+
+ This corresponds to the ``target_instance`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, target_instance])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteTargetInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteTargetInstanceRequest):
+ request = compute.DeleteTargetInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if target_instance is not None:
+ request.target_instance = target_instance
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetTargetInstanceRequest, dict] = None,
@@ -723,22 +827,97 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, zone, target_instance_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertTargetInstanceRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertTargetInstanceRequest):
+ request = compute.InsertTargetInstanceRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if zone is not None:
+ request.zone = zone
+ if target_instance_resource is not None:
+ request.target_instance_resource = target_instance_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertTargetInstanceRequest, dict] = None,
+ *,
+ project: str = None,
+ zone: str = None,
+ target_instance_resource: compute.TargetInstance = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a TargetInstance resource in the specified
+ project and zone using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertTargetInstanceRequest, dict]):
+ The request object. A request message for
+ TargetInstances.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ zone (str):
+ Name of the zone scoping this
+ request.
+
+ This corresponds to the ``zone`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_instance_resource (google.cloud.compute_v1.types.TargetInstance):
+ The body resource for this request
+ This corresponds to the ``target_instance_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -778,6 +957,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._zone_operations_client
+ operation_request = compute.GetZoneOperationRequest()
+ operation_request.project = request.project
+ operation_request.zone = request.zone
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/target_instances/transports/base.py b/google/cloud/compute_v1/services/target_instances/transports/base.py
index b56422c21..092c60f40 100644
--- a/google/cloud/compute_v1/services/target_instances/transports/base.py
+++ b/google/cloud/compute_v1/services/target_instances/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import zone_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -207,5 +210,21 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _zone_operations_client(self) -> zone_operations.ZoneOperationsClient:
+ ex_op_service = self._extended_operations_services.get("zone_operations")
+ if not ex_op_service:
+ ex_op_service = zone_operations.ZoneOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["zone_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("TargetInstancesTransport",)
diff --git a/google/cloud/compute_v1/services/target_instances/transports/rest.py b/google/cloud/compute_v1/services/target_instances/transports/rest.py
index 1e0f2e916..dbb679d02 100644
--- a/google/cloud/compute_v1/services/target_instances/transports/rest.py
+++ b/google/cloud/compute_v1/services/target_instances/transports/rest.py
@@ -882,6 +882,10 @@ def list(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/target_pools/client.py b/google/cloud/compute_v1/services/target_pools/client.py
index a57372f8d..a3431516f 100644
--- a/google/cloud/compute_v1/services/target_pools/client.py
+++ b/google/cloud/compute_v1/services/target_pools/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.target_pools import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import TargetPoolsTransport, DEFAULT_CLIENT_INFO
@@ -450,22 +453,9 @@ def add_health_check_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -519,6 +509,137 @@ def add_health_check_unary(
# Done; return the response.
return response
+ def add_health_check(
+ self,
+ request: Union[compute.AddHealthCheckTargetPoolRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_pool: str = None,
+ target_pools_add_health_check_request_resource: compute.TargetPoolsAddHealthCheckRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Adds health check URLs to a target pool.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.AddHealthCheckTargetPoolRequest, dict]):
+ The request object. A request message for
+ TargetPools.AddHealthCheck. See the method description
+ for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_pool (str):
+ Name of the target pool to add a
+ health check to.
+
+ This corresponds to the ``target_pool`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_pools_add_health_check_request_resource (google.cloud.compute_v1.types.TargetPoolsAddHealthCheckRequest):
+ The body resource for this request
+ This corresponds to the ``target_pools_add_health_check_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ target_pool,
+ target_pools_add_health_check_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.AddHealthCheckTargetPoolRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.AddHealthCheckTargetPoolRequest):
+ request = compute.AddHealthCheckTargetPoolRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_pool is not None:
+ request.target_pool = target_pool
+ if target_pools_add_health_check_request_resource is not None:
+ request.target_pools_add_health_check_request_resource = (
+ target_pools_add_health_check_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.add_health_check]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def add_instance_unary(
self,
request: Union[compute.AddInstanceTargetPoolRequest, dict] = None,
@@ -569,22 +690,110 @@ def add_instance_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, target_pool, target_pools_add_instance_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.AddInstanceTargetPoolRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.AddInstanceTargetPoolRequest):
+ request = compute.AddInstanceTargetPoolRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_pool is not None:
+ request.target_pool = target_pool
+ if target_pools_add_instance_request_resource is not None:
+ request.target_pools_add_instance_request_resource = (
+ target_pools_add_instance_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.add_instance]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def add_instance(
+ self,
+ request: Union[compute.AddInstanceTargetPoolRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_pool: str = None,
+ target_pools_add_instance_request_resource: compute.TargetPoolsAddInstanceRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Adds an instance to a target pool.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.AddInstanceTargetPoolRequest, dict]):
+ The request object. A request message for
+ TargetPools.AddInstance. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_pool (str):
+ Name of the TargetPool resource to
+ add instances to.
+
+ This corresponds to the ``target_pool`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_pools_add_instance_request_resource (google.cloud.compute_v1.types.TargetPoolsAddInstanceRequest):
+ The body resource for this request
+ This corresponds to the ``target_pools_add_instance_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -630,6 +839,31 @@ def add_instance_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -756,22 +990,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -814,9 +1035,9 @@ def delete_unary(
# Done; return the response.
return response
- def get(
+ def delete(
self,
- request: Union[compute.GetTargetPoolRequest, dict] = None,
+ request: Union[compute.DeleteTargetPoolRequest, dict] = None,
*,
project: str = None,
region: str = None,
@@ -824,14 +1045,14 @@ def get(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.TargetPool:
- r"""Returns the specified target pool. Gets a list of
- available target pools by making a list() request.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified target pool.
Args:
- request (Union[google.cloud.compute_v1.types.GetTargetPoolRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.DeleteTargetPoolRequest, dict]):
The request object. A request message for
- TargetPools.Get. See the method description for details.
+ TargetPools.Delete. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -846,7 +1067,7 @@ def get(
should not be set.
target_pool (str):
Name of the TargetPool resource to
- return.
+ delete.
This corresponds to the ``target_pool`` field
on the ``request`` instance; if ``request`` is provided, this
@@ -858,15 +1079,9 @@ def get(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.TargetPool:
- Represents a Target Pool resource.
- Target pools are used for network
- TCP/UDP load balancing. A target pool
- references member instances, an
- associated legacy HttpHealthCheck
- resource, and, optionally, a backup
- target pool. For more information, read
- Using target pools.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -880,11 +1095,11 @@ def get(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetTargetPoolRequest.
+ # in a compute.DeleteTargetPoolRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetTargetPoolRequest):
- request = compute.GetTargetPoolRequest(request)
+ if not isinstance(request, compute.DeleteTargetPoolRequest):
+ request = compute.DeleteTargetPoolRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -896,7 +1111,7 @@ def get(
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get]
+ rpc = self._transport._wrapped_methods[self._transport.delete]
# Send the request.
response = rpc(
@@ -906,27 +1121,147 @@ def get(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def get_health(
+ def get(
self,
- request: Union[compute.GetHealthTargetPoolRequest, dict] = None,
+ request: Union[compute.GetTargetPoolRequest, dict] = None,
*,
project: str = None,
region: str = None,
target_pool: str = None,
- instance_reference_resource: compute.InstanceReference = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.TargetPoolInstanceHealth:
- r"""Gets the most recent health check results for each IP
- for the instance that is referenced by the given target
- pool.
+ ) -> compute.TargetPool:
+ r"""Returns the specified target pool. Gets a list of
+ available target pools by making a list() request.
Args:
- request (Union[google.cloud.compute_v1.types.GetHealthTargetPoolRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.GetTargetPoolRequest, dict]):
+ The request object. A request message for
+ TargetPools.Get. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_pool (str):
+ Name of the TargetPool resource to
+ return.
+
+ This corresponds to the ``target_pool`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.TargetPool:
+ Represents a Target Pool resource.
+ Target pools are used for network
+ TCP/UDP load balancing. A target pool
+ references member instances, an
+ associated legacy HttpHealthCheck
+ resource, and, optionally, a backup
+ target pool. For more information, read
+ Using target pools.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, target_pool])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetTargetPoolRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetTargetPoolRequest):
+ request = compute.GetTargetPoolRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_pool is not None:
+ request.target_pool = target_pool
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def get_health(
+ self,
+ request: Union[compute.GetHealthTargetPoolRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_pool: str = None,
+ instance_reference_resource: compute.InstanceReference = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.TargetPoolInstanceHealth:
+ r"""Gets the most recent health check results for each IP
+ for the instance that is referenced by the given target
+ pool.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.GetHealthTargetPoolRequest, dict]):
The request object. A request message for
TargetPools.GetHealth. See the method description for
details.
@@ -936,22 +1271,410 @@ def get_health(
on the ``request`` instance; if ``request`` is provided, this
should not be set.
region (str):
- Name of the region scoping this
- request.
-
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_pool (str):
+ Name of the TargetPool resource to
+ which the queried instance belongs.
+
+ This corresponds to the ``target_pool`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ instance_reference_resource (google.cloud.compute_v1.types.InstanceReference):
+ The body resource for this request
+ This corresponds to the ``instance_reference_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.types.TargetPoolInstanceHealth:
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, target_pool, instance_reference_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.GetHealthTargetPoolRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.GetHealthTargetPoolRequest):
+ request = compute.GetHealthTargetPoolRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_pool is not None:
+ request.target_pool = target_pool
+ if instance_reference_resource is not None:
+ request.instance_reference_resource = instance_reference_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.get_health]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert_unary(
+ self,
+ request: Union[compute.InsertTargetPoolRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_pool_resource: compute.TargetPool = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Creates a target pool in the specified project and
+ region using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertTargetPoolRequest, dict]):
+ The request object. A request message for
+ TargetPools.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_pool_resource (google.cloud.compute_v1.types.TargetPool):
+ The body resource for this request
+ This corresponds to the ``target_pool_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, target_pool_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertTargetPoolRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertTargetPoolRequest):
+ request = compute.InsertTargetPoolRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_pool_resource is not None:
+ request.target_pool_resource = target_pool_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertTargetPoolRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_pool_resource: compute.TargetPool = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a target pool in the specified project and
+ region using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertTargetPoolRequest, dict]):
+ The request object. A request message for
+ TargetPools.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_pool_resource (google.cloud.compute_v1.types.TargetPool):
+ The body resource for this request
+ This corresponds to the ``target_pool_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, target_pool_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertTargetPoolRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertTargetPoolRequest):
+ request = compute.InsertTargetPoolRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_pool_resource is not None:
+ request.target_pool_resource = target_pool_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def list(
+ self,
+ request: Union[compute.ListTargetPoolsRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> pagers.ListPager:
+ r"""Retrieves a list of target pools available to the
+ specified project and region.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.ListTargetPoolsRequest, dict]):
+ The request object. A request message for
+ TargetPools.List. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region scoping this
+ request.
+
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.cloud.compute_v1.services.target_pools.pagers.ListPager:
+ Contains a list of TargetPool
+ resources.
+ Iterating over this object will yield
+ results and resolve additional pages
+ automatically.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.ListTargetPoolsRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.ListTargetPoolsRequest):
+ request = compute.ListTargetPoolsRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.list]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # This method is paged; wrap the response in a pager, which provides
+ # an `__iter__` convenience method.
+ response = pagers.ListPager(
+ method=rpc,
+ request=request,
+ response=response,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def remove_health_check_unary(
+ self,
+ request: Union[compute.RemoveHealthCheckTargetPoolRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_pool: str = None,
+ target_pools_remove_health_check_request_resource: compute.TargetPoolsRemoveHealthCheckRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Removes health check URL from a target pool.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.RemoveHealthCheckTargetPoolRequest, dict]):
+ The request object. A request message for
+ TargetPools.RemoveHealthCheck. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
target_pool (str):
- Name of the TargetPool resource to
- which the queried instance belongs.
+ Name of the target pool to remove
+ health checks from.
This corresponds to the ``target_pool`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- instance_reference_resource (google.cloud.compute_v1.types.InstanceReference):
+ target_pools_remove_health_check_request_resource (google.cloud.compute_v1.types.TargetPoolsRemoveHealthCheckRequest):
The body resource for this request
- This corresponds to the ``instance_reference_resource`` field
+ This corresponds to the ``target_pools_remove_health_check_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -961,14 +1684,21 @@ def get_health(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.TargetPoolInstanceHealth:
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
has_flattened_params = any(
- [project, region, target_pool, instance_reference_resource]
+ [
+ project,
+ region,
+ target_pool,
+ target_pools_remove_health_check_request_resource,
+ ]
)
if request is not None and has_flattened_params:
raise ValueError(
@@ -977,11 +1707,11 @@ def get_health(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.GetHealthTargetPoolRequest.
+ # in a compute.RemoveHealthCheckTargetPoolRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.GetHealthTargetPoolRequest):
- request = compute.GetHealthTargetPoolRequest(request)
+ if not isinstance(request, compute.RemoveHealthCheckTargetPoolRequest):
+ request = compute.RemoveHealthCheckTargetPoolRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -990,12 +1720,14 @@ def get_health(
request.region = region
if target_pool is not None:
request.target_pool = target_pool
- if instance_reference_resource is not None:
- request.instance_reference_resource = instance_reference_resource
+ if target_pools_remove_health_check_request_resource is not None:
+ request.target_pools_remove_health_check_request_resource = (
+ target_pools_remove_health_check_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.get_health]
+ rpc = self._transport._wrapped_methods[self._transport.remove_health_check]
# Send the request.
response = rpc(
@@ -1008,40 +1740,45 @@ def get_health(
# Done; return the response.
return response
- def insert_unary(
+ def remove_health_check(
self,
- request: Union[compute.InsertTargetPoolRequest, dict] = None,
+ request: Union[compute.RemoveHealthCheckTargetPoolRequest, dict] = None,
*,
project: str = None,
region: str = None,
- target_pool_resource: compute.TargetPool = None,
+ target_pool: str = None,
+ target_pools_remove_health_check_request_resource: compute.TargetPoolsRemoveHealthCheckRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Creates a target pool in the specified project and
- region using the data included in the request.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Removes health check URL from a target pool.
Args:
- request (Union[google.cloud.compute_v1.types.InsertTargetPoolRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.RemoveHealthCheckTargetPoolRequest, dict]):
The request object. A request message for
- TargetPools.Insert. See the method description for
- details.
+ TargetPools.RemoveHealthCheck. See the method
+ description for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
region (str):
- Name of the region scoping this
- request.
-
+ Name of the region for this request.
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- target_pool_resource (google.cloud.compute_v1.types.TargetPool):
+ target_pool (str):
+ Name of the target pool to remove
+ health checks from.
+
+ This corresponds to the ``target_pool`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_pools_remove_health_check_request_resource (google.cloud.compute_v1.types.TargetPoolsRemoveHealthCheckRequest):
The body resource for this request
- This corresponds to the ``target_pool_resource`` field
+ This corresponds to the ``target_pools_remove_health_check_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1051,28 +1788,22 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region, target_pool_resource])
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ target_pool,
+ target_pools_remove_health_check_request_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1080,23 +1811,27 @@ def insert_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.InsertTargetPoolRequest.
+ # in a compute.RemoveHealthCheckTargetPoolRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.InsertTargetPoolRequest):
- request = compute.InsertTargetPoolRequest(request)
+ if not isinstance(request, compute.RemoveHealthCheckTargetPoolRequest):
+ request = compute.RemoveHealthCheckTargetPoolRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if region is not None:
request.region = region
- if target_pool_resource is not None:
- request.target_pool_resource = target_pool_resource
+ if target_pool is not None:
+ request.target_pool = target_pool
+ if target_pools_remove_health_check_request_resource is not None:
+ request.target_pools_remove_health_check_request_resource = (
+ target_pools_remove_health_check_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.insert]
+ rpc = self._transport._wrapped_methods[self._transport.remove_health_check]
# Send the request.
response = rpc(
@@ -1106,27 +1841,53 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def list(
+ def remove_instance_unary(
self,
- request: Union[compute.ListTargetPoolsRequest, dict] = None,
+ request: Union[compute.RemoveInstanceTargetPoolRequest, dict] = None,
*,
project: str = None,
region: str = None,
+ target_pool: str = None,
+ target_pools_remove_instance_request_resource: compute.TargetPoolsRemoveInstanceRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> pagers.ListPager:
- r"""Retrieves a list of target pools available to the
- specified project and region.
+ ) -> compute.Operation:
+ r"""Removes instance URL from a target pool.
Args:
- request (Union[google.cloud.compute_v1.types.ListTargetPoolsRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.RemoveInstanceTargetPoolRequest, dict]):
The request object. A request message for
- TargetPools.List. See the method description for
- details.
+ TargetPools.RemoveInstance. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1139,6 +1900,18 @@ def list(
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
+ target_pool (str):
+ Name of the TargetPool resource to
+ remove instances from.
+
+ This corresponds to the ``target_pool`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_pools_remove_instance_request_resource (google.cloud.compute_v1.types.TargetPoolsRemoveInstanceRequest):
+ The body resource for this request
+ This corresponds to the ``target_pools_remove_instance_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
should be retried.
timeout (float): The timeout for this request.
@@ -1146,18 +1919,22 @@ def list(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.services.target_pools.pagers.ListPager:
- Contains a list of TargetPool
- resources.
- Iterating over this object will yield
- results and resolve additional pages
- automatically.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
- has_flattened_params = any([project, region])
+ has_flattened_params = any(
+ [
+ project,
+ region,
+ target_pool,
+ target_pools_remove_instance_request_resource,
+ ]
+ )
if request is not None and has_flattened_params:
raise ValueError(
"If the `request` argument is set, then none of "
@@ -1165,21 +1942,27 @@ def list(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.ListTargetPoolsRequest.
+ # in a compute.RemoveInstanceTargetPoolRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.ListTargetPoolsRequest):
- request = compute.ListTargetPoolsRequest(request)
+ if not isinstance(request, compute.RemoveInstanceTargetPoolRequest):
+ request = compute.RemoveInstanceTargetPoolRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if region is not None:
request.region = region
+ if target_pool is not None:
+ request.target_pool = target_pool
+ if target_pools_remove_instance_request_resource is not None:
+ request.target_pools_remove_instance_request_resource = (
+ target_pools_remove_instance_request_resource
+ )
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.list]
+ rpc = self._transport._wrapped_methods[self._transport.remove_instance]
# Send the request.
response = rpc(
@@ -1189,57 +1972,50 @@ def list(
metadata=metadata,
)
- # This method is paged; wrap the response in a pager, which provides
- # an `__iter__` convenience method.
- response = pagers.ListPager(
- method=rpc,
- request=request,
- response=response,
- metadata=metadata,
- )
-
# Done; return the response.
return response
- def remove_health_check_unary(
+ def remove_instance(
self,
- request: Union[compute.RemoveHealthCheckTargetPoolRequest, dict] = None,
+ request: Union[compute.RemoveInstanceTargetPoolRequest, dict] = None,
*,
project: str = None,
region: str = None,
target_pool: str = None,
- target_pools_remove_health_check_request_resource: compute.TargetPoolsRemoveHealthCheckRequest = None,
+ target_pools_remove_instance_request_resource: compute.TargetPoolsRemoveInstanceRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Removes health check URL from a target pool.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Removes instance URL from a target pool.
Args:
- request (Union[google.cloud.compute_v1.types.RemoveHealthCheckTargetPoolRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.RemoveInstanceTargetPoolRequest, dict]):
The request object. A request message for
- TargetPools.RemoveHealthCheck. See the method
- description for details.
+ TargetPools.RemoveInstance. See the method description
+ for details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
region (str):
- Name of the region for this request.
+ Name of the region scoping this
+ request.
+
This corresponds to the ``region`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
target_pool (str):
- Name of the target pool to remove
- health checks from.
+ Name of the TargetPool resource to
+ remove instances from.
This corresponds to the ``target_pool`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- target_pools_remove_health_check_request_resource (google.cloud.compute_v1.types.TargetPoolsRemoveHealthCheckRequest):
+ target_pools_remove_instance_request_resource (google.cloud.compute_v1.types.TargetPoolsRemoveInstanceRequest):
The body resource for this request
- This corresponds to the ``target_pools_remove_health_check_request_resource`` field
+ This corresponds to the ``target_pools_remove_instance_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1249,22 +2025,9 @@ def remove_health_check_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1275,7 +2038,7 @@ def remove_health_check_unary(
project,
region,
target_pool,
- target_pools_remove_health_check_request_resource,
+ target_pools_remove_instance_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -1285,11 +2048,11 @@ def remove_health_check_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.RemoveHealthCheckTargetPoolRequest.
+ # in a compute.RemoveInstanceTargetPoolRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.RemoveHealthCheckTargetPoolRequest):
- request = compute.RemoveHealthCheckTargetPoolRequest(request)
+ if not isinstance(request, compute.RemoveInstanceTargetPoolRequest):
+ request = compute.RemoveInstanceTargetPoolRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1298,14 +2061,14 @@ def remove_health_check_unary(
request.region = region
if target_pool is not None:
request.target_pool = target_pool
- if target_pools_remove_health_check_request_resource is not None:
- request.target_pools_remove_health_check_request_resource = (
- target_pools_remove_health_check_request_resource
+ if target_pools_remove_instance_request_resource is not None:
+ request.target_pools_remove_instance_request_resource = (
+ target_pools_remove_instance_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.remove_health_check]
+ rpc = self._transport._wrapped_methods[self._transport.remove_instance]
# Send the request.
response = rpc(
@@ -1315,28 +2078,53 @@ def remove_health_check_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def remove_instance_unary(
+ def set_backup_unary(
self,
- request: Union[compute.RemoveInstanceTargetPoolRequest, dict] = None,
+ request: Union[compute.SetBackupTargetPoolRequest, dict] = None,
*,
project: str = None,
region: str = None,
target_pool: str = None,
- target_pools_remove_instance_request_resource: compute.TargetPoolsRemoveInstanceRequest = None,
+ target_reference_resource: compute.TargetReference = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Removes instance URL from a target pool.
+ r"""Changes a backup target pool's configurations.
Args:
- request (Union[google.cloud.compute_v1.types.RemoveInstanceTargetPoolRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetBackupTargetPoolRequest, dict]):
The request object. A request message for
- TargetPools.RemoveInstance. See the method description
- for details.
+ TargetPools.SetBackup. See the method description for
+ details.
project (str):
Project ID for this request.
This corresponds to the ``project`` field
@@ -1351,14 +2139,14 @@ def remove_instance_unary(
should not be set.
target_pool (str):
Name of the TargetPool resource to
- remove instances from.
+ set a backup pool for.
This corresponds to the ``target_pool`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- target_pools_remove_instance_request_resource (google.cloud.compute_v1.types.TargetPoolsRemoveInstanceRequest):
+ target_reference_resource (google.cloud.compute_v1.types.TargetReference):
The body resource for this request
- This corresponds to the ``target_pools_remove_instance_request_resource`` field
+ This corresponds to the ``target_reference_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1368,34 +2156,16 @@ def remove_instance_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
# Quick check: If we got a request object, we should *not* have
# gotten any keyword arguments that map to the request.
has_flattened_params = any(
- [
- project,
- region,
- target_pool,
- target_pools_remove_instance_request_resource,
- ]
+ [project, region, target_pool, target_reference_resource]
)
if request is not None and has_flattened_params:
raise ValueError(
@@ -1404,11 +2174,11 @@ def remove_instance_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.RemoveInstanceTargetPoolRequest.
+ # in a compute.SetBackupTargetPoolRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.RemoveInstanceTargetPoolRequest):
- request = compute.RemoveInstanceTargetPoolRequest(request)
+ if not isinstance(request, compute.SetBackupTargetPoolRequest):
+ request = compute.SetBackupTargetPoolRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
@@ -1417,14 +2187,12 @@ def remove_instance_unary(
request.region = region
if target_pool is not None:
request.target_pool = target_pool
- if target_pools_remove_instance_request_resource is not None:
- request.target_pools_remove_instance_request_resource = (
- target_pools_remove_instance_request_resource
- )
+ if target_reference_resource is not None:
+ request.target_reference_resource = target_reference_resource
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.remove_instance]
+ rpc = self._transport._wrapped_methods[self._transport.set_backup]
# Send the request.
response = rpc(
@@ -1437,7 +2205,7 @@ def remove_instance_unary(
# Done; return the response.
return response
- def set_backup_unary(
+ def set_backup(
self,
request: Union[compute.SetBackupTargetPoolRequest, dict] = None,
*,
@@ -1448,7 +2216,7 @@ def set_backup_unary(
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
+ ) -> extended_operation.ExtendedOperation:
r"""Changes a backup target pool's configurations.
Args:
@@ -1487,22 +2255,9 @@ def set_backup_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1546,6 +2301,31 @@ def set_backup_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/target_pools/transports/base.py b/google/cloud/compute_v1/services/target_pools/transports/base.py
index a6b3b24c2..d1a3df898 100644
--- a/google/cloud/compute_v1/services/target_pools/transports/base.py
+++ b/google/cloud/compute_v1/services/target_pools/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -294,5 +297,21 @@ def set_backup(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("TargetPoolsTransport",)
diff --git a/google/cloud/compute_v1/services/target_pools/transports/rest.py b/google/cloud/compute_v1/services/target_pools/transports/rest.py
index d98b7c00d..ab13a7768 100644
--- a/google/cloud/compute_v1/services/target_pools/transports/rest.py
+++ b/google/cloud/compute_v1/services/target_pools/transports/rest.py
@@ -1777,6 +1777,10 @@ def set_backup(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/target_ssl_proxies/client.py b/google/cloud/compute_v1/services/target_ssl_proxies/client.py
index f219e09cf..95cd9e84a 100644
--- a/google/cloud/compute_v1/services/target_ssl_proxies/client.py
+++ b/google/cloud/compute_v1/services/target_ssl_proxies/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.target_ssl_proxies import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import TargetSslProxiesTransport, DEFAULT_CLIENT_INFO
@@ -438,22 +441,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -494,6 +484,109 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteTargetSslProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_ssl_proxy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified TargetSslProxy resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteTargetSslProxyRequest, dict]):
+ The request object. A request message for
+ TargetSslProxies.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_ssl_proxy (str):
+ Name of the TargetSslProxy resource
+ to delete.
+
+ This corresponds to the ``target_ssl_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, target_ssl_proxy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteTargetSslProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteTargetSslProxyRequest):
+ request = compute.DeleteTargetSslProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_ssl_proxy is not None:
+ request.target_ssl_proxy = target_ssl_proxy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetTargetSslProxyRequest, dict] = None,
@@ -616,22 +709,87 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, target_ssl_proxy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertTargetSslProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertTargetSslProxyRequest):
+ request = compute.InsertTargetSslProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_ssl_proxy_resource is not None:
+ request.target_ssl_proxy_resource = target_ssl_proxy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertTargetSslProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_ssl_proxy_resource: compute.TargetSslProxy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a TargetSslProxy resource in the specified
+ project using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertTargetSslProxyRequest, dict]):
+ The request object. A request message for
+ TargetSslProxies.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_ssl_proxy_resource (google.cloud.compute_v1.types.TargetSslProxy):
+ The body resource for this request
+ This corresponds to the ``target_ssl_proxy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -669,6 +827,30 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -797,22 +979,9 @@ def set_backend_service_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -863,23 +1032,23 @@ def set_backend_service_unary(
# Done; return the response.
return response
- def set_proxy_header_unary(
+ def set_backend_service(
self,
- request: Union[compute.SetProxyHeaderTargetSslProxyRequest, dict] = None,
+ request: Union[compute.SetBackendServiceTargetSslProxyRequest, dict] = None,
*,
project: str = None,
target_ssl_proxy: str = None,
- target_ssl_proxies_set_proxy_header_request_resource: compute.TargetSslProxiesSetProxyHeaderRequest = None,
+ target_ssl_proxies_set_backend_service_request_resource: compute.TargetSslProxiesSetBackendServiceRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Changes the ProxyHeaderType for TargetSslProxy.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Changes the BackendService for TargetSslProxy.
Args:
- request (Union[google.cloud.compute_v1.types.SetProxyHeaderTargetSslProxyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetBackendServiceTargetSslProxyRequest, dict]):
The request object. A request message for
- TargetSslProxies.SetProxyHeader. See the method
+ TargetSslProxies.SetBackendService. See the method
description for details.
project (str):
Project ID for this request.
@@ -888,14 +1057,15 @@ def set_proxy_header_unary(
should not be set.
target_ssl_proxy (str):
Name of the TargetSslProxy resource
- whose ProxyHeader is to be set.
+ whose BackendService resource is to be
+ set.
This corresponds to the ``target_ssl_proxy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- target_ssl_proxies_set_proxy_header_request_resource (google.cloud.compute_v1.types.TargetSslProxiesSetProxyHeaderRequest):
+ target_ssl_proxies_set_backend_service_request_resource (google.cloud.compute_v1.types.TargetSslProxiesSetBackendServiceRequest):
The body resource for this request
- This corresponds to the ``target_ssl_proxies_set_proxy_header_request_resource`` field
+ This corresponds to the ``target_ssl_proxies_set_backend_service_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -905,22 +1075,9 @@ def set_proxy_header_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -930,7 +1087,7 @@ def set_proxy_header_unary(
[
project,
target_ssl_proxy,
- target_ssl_proxies_set_proxy_header_request_resource,
+ target_ssl_proxies_set_backend_service_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -940,25 +1097,25 @@ def set_proxy_header_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetProxyHeaderTargetSslProxyRequest.
+ # in a compute.SetBackendServiceTargetSslProxyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetProxyHeaderTargetSslProxyRequest):
- request = compute.SetProxyHeaderTargetSslProxyRequest(request)
+ if not isinstance(request, compute.SetBackendServiceTargetSslProxyRequest):
+ request = compute.SetBackendServiceTargetSslProxyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if target_ssl_proxy is not None:
request.target_ssl_proxy = target_ssl_proxy
- if target_ssl_proxies_set_proxy_header_request_resource is not None:
- request.target_ssl_proxies_set_proxy_header_request_resource = (
- target_ssl_proxies_set_proxy_header_request_resource
+ if target_ssl_proxies_set_backend_service_request_resource is not None:
+ request.target_ssl_proxies_set_backend_service_request_resource = (
+ target_ssl_proxies_set_backend_service_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_proxy_header]
+ rpc = self._transport._wrapped_methods[self._transport.set_backend_service]
# Send the request.
response = rpc(
@@ -968,26 +1125,50 @@ def set_proxy_header_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
- def set_ssl_certificates_unary(
+ def set_proxy_header_unary(
self,
- request: Union[compute.SetSslCertificatesTargetSslProxyRequest, dict] = None,
+ request: Union[compute.SetProxyHeaderTargetSslProxyRequest, dict] = None,
*,
project: str = None,
target_ssl_proxy: str = None,
- target_ssl_proxies_set_ssl_certificates_request_resource: compute.TargetSslProxiesSetSslCertificatesRequest = None,
+ target_ssl_proxies_set_proxy_header_request_resource: compute.TargetSslProxiesSetProxyHeaderRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
) -> compute.Operation:
- r"""Changes SslCertificates for TargetSslProxy.
+ r"""Changes the ProxyHeaderType for TargetSslProxy.
Args:
- request (Union[google.cloud.compute_v1.types.SetSslCertificatesTargetSslProxyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetProxyHeaderTargetSslProxyRequest, dict]):
The request object. A request message for
- TargetSslProxies.SetSslCertificates. See the method
+ TargetSslProxies.SetProxyHeader. See the method
description for details.
project (str):
Project ID for this request.
@@ -996,15 +1177,14 @@ def set_ssl_certificates_unary(
should not be set.
target_ssl_proxy (str):
Name of the TargetSslProxy resource
- whose SslCertificate resource is to be
- set.
+ whose ProxyHeader is to be set.
This corresponds to the ``target_ssl_proxy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- target_ssl_proxies_set_ssl_certificates_request_resource (google.cloud.compute_v1.types.TargetSslProxiesSetSslCertificatesRequest):
+ target_ssl_proxies_set_proxy_header_request_resource (google.cloud.compute_v1.types.TargetSslProxiesSetProxyHeaderRequest):
The body resource for this request
- This corresponds to the ``target_ssl_proxies_set_ssl_certificates_request_resource`` field
+ This corresponds to the ``target_ssl_proxies_set_proxy_header_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1014,22 +1194,9 @@ def set_ssl_certificates_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1039,7 +1206,7 @@ def set_ssl_certificates_unary(
[
project,
target_ssl_proxy,
- target_ssl_proxies_set_ssl_certificates_request_resource,
+ target_ssl_proxies_set_proxy_header_request_resource,
]
)
if request is not None and has_flattened_params:
@@ -1049,25 +1216,25 @@ def set_ssl_certificates_unary(
)
# Minor optimization to avoid making a copy if the user passes
- # in a compute.SetSslCertificatesTargetSslProxyRequest.
+ # in a compute.SetProxyHeaderTargetSslProxyRequest.
# There's no risk of modifying the input as we've already verified
# there are no flattened fields.
- if not isinstance(request, compute.SetSslCertificatesTargetSslProxyRequest):
- request = compute.SetSslCertificatesTargetSslProxyRequest(request)
+ if not isinstance(request, compute.SetProxyHeaderTargetSslProxyRequest):
+ request = compute.SetProxyHeaderTargetSslProxyRequest(request)
# If we have keyword arguments corresponding to fields on the
# request, apply these.
if project is not None:
request.project = project
if target_ssl_proxy is not None:
request.target_ssl_proxy = target_ssl_proxy
- if target_ssl_proxies_set_ssl_certificates_request_resource is not None:
- request.target_ssl_proxies_set_ssl_certificates_request_resource = (
- target_ssl_proxies_set_ssl_certificates_request_resource
+ if target_ssl_proxies_set_proxy_header_request_resource is not None:
+ request.target_ssl_proxies_set_proxy_header_request_resource = (
+ target_ssl_proxies_set_proxy_header_request_resource
)
# Wrap the RPC method; this adds retry and timeout information,
# and friendly error handling.
- rpc = self._transport._wrapped_methods[self._transport.set_ssl_certificates]
+ rpc = self._transport._wrapped_methods[self._transport.set_proxy_header]
# Send the request.
response = rpc(
@@ -1080,27 +1247,23 @@ def set_ssl_certificates_unary(
# Done; return the response.
return response
- def set_ssl_policy_unary(
+ def set_proxy_header(
self,
- request: Union[compute.SetSslPolicyTargetSslProxyRequest, dict] = None,
+ request: Union[compute.SetProxyHeaderTargetSslProxyRequest, dict] = None,
*,
project: str = None,
target_ssl_proxy: str = None,
- ssl_policy_reference_resource: compute.SslPolicyReference = None,
+ target_ssl_proxies_set_proxy_header_request_resource: compute.TargetSslProxiesSetProxyHeaderRequest = None,
retry: OptionalRetry = gapic_v1.method.DEFAULT,
timeout: float = None,
metadata: Sequence[Tuple[str, str]] = (),
- ) -> compute.Operation:
- r"""Sets the SSL policy for TargetSslProxy. The SSL
- policy specifies the server-side support for SSL
- features. This affects connections between clients and
- the SSL proxy load balancer. They do not affect the
- connection between the load balancer and the backends.
+ ) -> extended_operation.ExtendedOperation:
+ r"""Changes the ProxyHeaderType for TargetSslProxy.
Args:
- request (Union[google.cloud.compute_v1.types.SetSslPolicyTargetSslProxyRequest, dict]):
+ request (Union[google.cloud.compute_v1.types.SetProxyHeaderTargetSslProxyRequest, dict]):
The request object. A request message for
- TargetSslProxies.SetSslPolicy. See the method
+ TargetSslProxies.SetProxyHeader. See the method
description for details.
project (str):
Project ID for this request.
@@ -1109,16 +1272,14 @@ def set_ssl_policy_unary(
should not be set.
target_ssl_proxy (str):
Name of the TargetSslProxy resource
- whose SSL policy is to be set. The name
- must be 1-63 characters long, and comply
- with RFC1035.
+ whose ProxyHeader is to be set.
This corresponds to the ``target_ssl_proxy`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
- ssl_policy_reference_resource (google.cloud.compute_v1.types.SslPolicyReference):
+ target_ssl_proxies_set_proxy_header_request_resource (google.cloud.compute_v1.types.TargetSslProxiesSetProxyHeaderRequest):
The body resource for this request
- This corresponds to the ``ssl_policy_reference_resource`` field
+ This corresponds to the ``target_ssl_proxies_set_proxy_header_request_resource`` field
on the ``request`` instance; if ``request`` is provided, this
should not be set.
retry (google.api_core.retry.Retry): Designation of what errors, if any,
@@ -1128,22 +1289,350 @@ def set_ssl_policy_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ target_ssl_proxy,
+ target_ssl_proxies_set_proxy_header_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetProxyHeaderTargetSslProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetProxyHeaderTargetSslProxyRequest):
+ request = compute.SetProxyHeaderTargetSslProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_ssl_proxy is not None:
+ request.target_ssl_proxy = target_ssl_proxy
+ if target_ssl_proxies_set_proxy_header_request_resource is not None:
+ request.target_ssl_proxies_set_proxy_header_request_resource = (
+ target_ssl_proxies_set_proxy_header_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_proxy_header]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def set_ssl_certificates_unary(
+ self,
+ request: Union[compute.SetSslCertificatesTargetSslProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_ssl_proxy: str = None,
+ target_ssl_proxies_set_ssl_certificates_request_resource: compute.TargetSslProxiesSetSslCertificatesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Changes SslCertificates for TargetSslProxy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetSslCertificatesTargetSslProxyRequest, dict]):
+ The request object. A request message for
+ TargetSslProxies.SetSslCertificates. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_ssl_proxy (str):
+ Name of the TargetSslProxy resource
+ whose SslCertificate resource is to be
+ set.
+
+ This corresponds to the ``target_ssl_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_ssl_proxies_set_ssl_certificates_request_resource (google.cloud.compute_v1.types.TargetSslProxiesSetSslCertificatesRequest):
+ The body resource for this request
+ This corresponds to the ``target_ssl_proxies_set_ssl_certificates_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ target_ssl_proxy,
+ target_ssl_proxies_set_ssl_certificates_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetSslCertificatesTargetSslProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetSslCertificatesTargetSslProxyRequest):
+ request = compute.SetSslCertificatesTargetSslProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_ssl_proxy is not None:
+ request.target_ssl_proxy = target_ssl_proxy
+ if target_ssl_proxies_set_ssl_certificates_request_resource is not None:
+ request.target_ssl_proxies_set_ssl_certificates_request_resource = (
+ target_ssl_proxies_set_ssl_certificates_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_ssl_certificates]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_ssl_certificates(
+ self,
+ request: Union[compute.SetSslCertificatesTargetSslProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_ssl_proxy: str = None,
+ target_ssl_proxies_set_ssl_certificates_request_resource: compute.TargetSslProxiesSetSslCertificatesRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Changes SslCertificates for TargetSslProxy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetSslCertificatesTargetSslProxyRequest, dict]):
+ The request object. A request message for
+ TargetSslProxies.SetSslCertificates. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_ssl_proxy (str):
+ Name of the TargetSslProxy resource
+ whose SslCertificate resource is to be
+ set.
+
+ This corresponds to the ``target_ssl_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_ssl_proxies_set_ssl_certificates_request_resource (google.cloud.compute_v1.types.TargetSslProxiesSetSslCertificatesRequest):
+ The body resource for this request
+ This corresponds to the ``target_ssl_proxies_set_ssl_certificates_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ target_ssl_proxy,
+ target_ssl_proxies_set_ssl_certificates_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetSslCertificatesTargetSslProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetSslCertificatesTargetSslProxyRequest):
+ request = compute.SetSslCertificatesTargetSslProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_ssl_proxy is not None:
+ request.target_ssl_proxy = target_ssl_proxy
+ if target_ssl_proxies_set_ssl_certificates_request_resource is not None:
+ request.target_ssl_proxies_set_ssl_certificates_request_resource = (
+ target_ssl_proxies_set_ssl_certificates_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_ssl_certificates]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
+ def set_ssl_policy_unary(
+ self,
+ request: Union[compute.SetSslPolicyTargetSslProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_ssl_proxy: str = None,
+ ssl_policy_reference_resource: compute.SslPolicyReference = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> compute.Operation:
+ r"""Sets the SSL policy for TargetSslProxy. The SSL
+ policy specifies the server-side support for SSL
+ features. This affects connections between clients and
+ the SSL proxy load balancer. They do not affect the
+ connection between the load balancer and the backends.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetSslPolicyTargetSslProxyRequest, dict]):
+ The request object. A request message for
+ TargetSslProxies.SetSslPolicy. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_ssl_proxy (str):
+ Name of the TargetSslProxy resource
+ whose SSL policy is to be set. The name
+ must be 1-63 characters long, and comply
+ with RFC1035.
+
+ This corresponds to the ``target_ssl_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ ssl_policy_reference_resource (google.cloud.compute_v1.types.SslPolicyReference):
+ The body resource for this request
+ This corresponds to the ``ssl_policy_reference_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1188,6 +1677,125 @@ def set_ssl_policy_unary(
# Done; return the response.
return response
+ def set_ssl_policy(
+ self,
+ request: Union[compute.SetSslPolicyTargetSslProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_ssl_proxy: str = None,
+ ssl_policy_reference_resource: compute.SslPolicyReference = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the SSL policy for TargetSslProxy. The SSL
+ policy specifies the server-side support for SSL
+ features. This affects connections between clients and
+ the SSL proxy load balancer. They do not affect the
+ connection between the load balancer and the backends.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetSslPolicyTargetSslProxyRequest, dict]):
+ The request object. A request message for
+ TargetSslProxies.SetSslPolicy. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_ssl_proxy (str):
+ Name of the TargetSslProxy resource
+ whose SSL policy is to be set. The name
+ must be 1-63 characters long, and comply
+ with RFC1035.
+
+ This corresponds to the ``target_ssl_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ ssl_policy_reference_resource (google.cloud.compute_v1.types.SslPolicyReference):
+ The body resource for this request
+ This corresponds to the ``ssl_policy_reference_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, target_ssl_proxy, ssl_policy_reference_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetSslPolicyTargetSslProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetSslPolicyTargetSslProxyRequest):
+ request = compute.SetSslPolicyTargetSslProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_ssl_proxy is not None:
+ request.target_ssl_proxy = target_ssl_proxy
+ if ssl_policy_reference_resource is not None:
+ request.ssl_policy_reference_resource = ssl_policy_reference_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_ssl_policy]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def __enter__(self):
return self
diff --git a/google/cloud/compute_v1/services/target_ssl_proxies/transports/base.py b/google/cloud/compute_v1/services/target_ssl_proxies/transports/base.py
index 833ebb44f..0fef507c7 100644
--- a/google/cloud/compute_v1/services/target_ssl_proxies/transports/base.py
+++ b/google/cloud/compute_v1/services/target_ssl_proxies/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -246,5 +249,21 @@ def set_ssl_policy(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("TargetSslProxiesTransport",)
diff --git a/google/cloud/compute_v1/services/target_ssl_proxies/transports/rest.py b/google/cloud/compute_v1/services/target_ssl_proxies/transports/rest.py
index f3fc54393..1f281927e 100644
--- a/google/cloud/compute_v1/services/target_ssl_proxies/transports/rest.py
+++ b/google/cloud/compute_v1/services/target_ssl_proxies/transports/rest.py
@@ -1386,6 +1386,10 @@ def set_ssl_policy(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/target_tcp_proxies/client.py b/google/cloud/compute_v1/services/target_tcp_proxies/client.py
index 744143ed4..4c34c7994 100644
--- a/google/cloud/compute_v1/services/target_tcp_proxies/client.py
+++ b/google/cloud/compute_v1/services/target_tcp_proxies/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.target_tcp_proxies import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import TargetTcpProxiesTransport, DEFAULT_CLIENT_INFO
@@ -438,22 +441,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -494,6 +484,109 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteTargetTcpProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_tcp_proxy: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified TargetTcpProxy resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteTargetTcpProxyRequest, dict]):
+ The request object. A request message for
+ TargetTcpProxies.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_tcp_proxy (str):
+ Name of the TargetTcpProxy resource
+ to delete.
+
+ This corresponds to the ``target_tcp_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, target_tcp_proxy])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteTargetTcpProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteTargetTcpProxyRequest):
+ request = compute.DeleteTargetTcpProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_tcp_proxy is not None:
+ request.target_tcp_proxy = target_tcp_proxy
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetTargetTcpProxyRequest, dict] = None,
@@ -616,22 +709,87 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, target_tcp_proxy_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertTargetTcpProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertTargetTcpProxyRequest):
+ request = compute.InsertTargetTcpProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_tcp_proxy_resource is not None:
+ request.target_tcp_proxy_resource = target_tcp_proxy_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertTargetTcpProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_tcp_proxy_resource: compute.TargetTcpProxy = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a TargetTcpProxy resource in the specified
+ project using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertTargetTcpProxyRequest, dict]):
+ The request object. A request message for
+ TargetTcpProxies.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_tcp_proxy_resource (google.cloud.compute_v1.types.TargetTcpProxy):
+ The body resource for this request
+ This corresponds to the ``target_tcp_proxy_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -669,6 +827,30 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -797,22 +979,105 @@ def set_backend_service_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ target_tcp_proxy,
+ target_tcp_proxies_set_backend_service_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetBackendServiceTargetTcpProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetBackendServiceTargetTcpProxyRequest):
+ request = compute.SetBackendServiceTargetTcpProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_tcp_proxy is not None:
+ request.target_tcp_proxy = target_tcp_proxy
+ if target_tcp_proxies_set_backend_service_request_resource is not None:
+ request.target_tcp_proxies_set_backend_service_request_resource = (
+ target_tcp_proxies_set_backend_service_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_backend_service]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_backend_service(
+ self,
+ request: Union[compute.SetBackendServiceTargetTcpProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_tcp_proxy: str = None,
+ target_tcp_proxies_set_backend_service_request_resource: compute.TargetTcpProxiesSetBackendServiceRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Changes the BackendService for TargetTcpProxy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetBackendServiceTargetTcpProxyRequest, dict]):
+ The request object. A request message for
+ TargetTcpProxies.SetBackendService. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_tcp_proxy (str):
+ Name of the TargetTcpProxy resource
+ whose BackendService resource is to be
+ set.
+
+ This corresponds to the ``target_tcp_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_tcp_proxies_set_backend_service_request_resource (google.cloud.compute_v1.types.TargetTcpProxiesSetBackendServiceRequest):
+ The body resource for this request
+ This corresponds to the ``target_tcp_proxies_set_backend_service_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -860,6 +1125,30 @@ def set_backend_service_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -905,22 +1194,104 @@ def set_proxy_header_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [
+ project,
+ target_tcp_proxy,
+ target_tcp_proxies_set_proxy_header_request_resource,
+ ]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetProxyHeaderTargetTcpProxyRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetProxyHeaderTargetTcpProxyRequest):
+ request = compute.SetProxyHeaderTargetTcpProxyRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if target_tcp_proxy is not None:
+ request.target_tcp_proxy = target_tcp_proxy
+ if target_tcp_proxies_set_proxy_header_request_resource is not None:
+ request.target_tcp_proxies_set_proxy_header_request_resource = (
+ target_tcp_proxies_set_proxy_header_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_proxy_header]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def set_proxy_header(
+ self,
+ request: Union[compute.SetProxyHeaderTargetTcpProxyRequest, dict] = None,
+ *,
+ project: str = None,
+ target_tcp_proxy: str = None,
+ target_tcp_proxies_set_proxy_header_request_resource: compute.TargetTcpProxiesSetProxyHeaderRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Changes the ProxyHeaderType for TargetTcpProxy.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetProxyHeaderTargetTcpProxyRequest, dict]):
+ The request object. A request message for
+ TargetTcpProxies.SetProxyHeader. See the method
+ description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_tcp_proxy (str):
+ Name of the TargetTcpProxy resource
+ whose ProxyHeader is to be set.
+
+ This corresponds to the ``target_tcp_proxy`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_tcp_proxies_set_proxy_header_request_resource (google.cloud.compute_v1.types.TargetTcpProxiesSetProxyHeaderRequest):
+ The body resource for this request
+ This corresponds to the ``target_tcp_proxies_set_proxy_header_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -968,6 +1339,30 @@ def set_proxy_header_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/target_tcp_proxies/transports/base.py b/google/cloud/compute_v1/services/target_tcp_proxies/transports/base.py
index bb4da930a..89ea75337 100644
--- a/google/cloud/compute_v1/services/target_tcp_proxies/transports/base.py
+++ b/google/cloud/compute_v1/services/target_tcp_proxies/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -218,5 +221,21 @@ def set_proxy_header(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("TargetTcpProxiesTransport",)
diff --git a/google/cloud/compute_v1/services/target_tcp_proxies/transports/rest.py b/google/cloud/compute_v1/services/target_tcp_proxies/transports/rest.py
index 4d6b5cadd..0546f04b8 100644
--- a/google/cloud/compute_v1/services/target_tcp_proxies/transports/rest.py
+++ b/google/cloud/compute_v1/services/target_tcp_proxies/transports/rest.py
@@ -1068,6 +1068,10 @@ def set_proxy_header(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/target_vpn_gateways/client.py b/google/cloud/compute_v1/services/target_vpn_gateways/client.py
index e61506c0f..de6cb9678 100644
--- a/google/cloud/compute_v1/services/target_vpn_gateways/client.py
+++ b/google/cloud/compute_v1/services/target_vpn_gateways/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.target_vpn_gateways import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import TargetVpnGatewaysTransport, DEFAULT_CLIENT_INFO
@@ -523,22 +526,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -581,6 +571,118 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteTargetVpnGatewayRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_vpn_gateway: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified target VPN gateway.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteTargetVpnGatewayRequest, dict]):
+ The request object. A request message for
+ TargetVpnGateways.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_vpn_gateway (str):
+ Name of the target VPN gateway to
+ delete.
+
+ This corresponds to the ``target_vpn_gateway`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, target_vpn_gateway])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteTargetVpnGatewayRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteTargetVpnGatewayRequest):
+ request = compute.DeleteTargetVpnGatewayRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_vpn_gateway is not None:
+ request.target_vpn_gateway = target_vpn_gateway
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetTargetVpnGatewayRequest, dict] = None,
@@ -714,22 +816,95 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, target_vpn_gateway_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertTargetVpnGatewayRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertTargetVpnGatewayRequest):
+ request = compute.InsertTargetVpnGatewayRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if target_vpn_gateway_resource is not None:
+ request.target_vpn_gateway_resource = target_vpn_gateway_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertTargetVpnGatewayRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ target_vpn_gateway_resource: compute.TargetVpnGateway = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a target VPN gateway in the specified project
+ and region using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertTargetVpnGatewayRequest, dict]):
+ The request object. A request message for
+ TargetVpnGateways.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ target_vpn_gateway_resource (google.cloud.compute_v1.types.TargetVpnGateway):
+ The body resource for this request
+ This corresponds to the ``target_vpn_gateway_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -769,6 +944,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/target_vpn_gateways/transports/base.py b/google/cloud/compute_v1/services/target_vpn_gateways/transports/base.py
index c85bb77f6..d2a5c07fe 100644
--- a/google/cloud/compute_v1/services/target_vpn_gateways/transports/base.py
+++ b/google/cloud/compute_v1/services/target_vpn_gateways/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -207,5 +210,21 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("TargetVpnGatewaysTransport",)
diff --git a/google/cloud/compute_v1/services/target_vpn_gateways/transports/rest.py b/google/cloud/compute_v1/services/target_vpn_gateways/transports/rest.py
index 0476cdbb3..d2dd3ea22 100644
--- a/google/cloud/compute_v1/services/target_vpn_gateways/transports/rest.py
+++ b/google/cloud/compute_v1/services/target_vpn_gateways/transports/rest.py
@@ -881,6 +881,10 @@ def list(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/url_maps/client.py b/google/cloud/compute_v1/services/url_maps/client.py
index b7e407d05..0695fd3ee 100644
--- a/google/cloud/compute_v1/services/url_maps/client.py
+++ b/google/cloud/compute_v1/services/url_maps/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.url_maps import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import UrlMapsTransport, DEFAULT_CLIENT_INFO
@@ -517,22 +520,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -573,6 +563,108 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteUrlMapRequest, dict] = None,
+ *,
+ project: str = None,
+ url_map: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified UrlMap resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteUrlMapRequest, dict]):
+ The request object. A request message for
+ UrlMaps.Delete. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map (str):
+ Name of the UrlMap resource to
+ delete.
+
+ This corresponds to the ``url_map`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, url_map])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteUrlMapRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteUrlMapRequest):
+ request = compute.DeleteUrlMapRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if url_map is not None:
+ request.url_map = url_map
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetUrlMapRequest, dict] = None,
@@ -705,22 +797,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -761,6 +840,107 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertUrlMapRequest, dict] = None,
+ *,
+ project: str = None,
+ url_map_resource: compute.UrlMap = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a UrlMap resource in the specified project
+ using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertUrlMapRequest, dict]):
+ The request object. A request message for
+ UrlMaps.Insert. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map_resource (google.cloud.compute_v1.types.UrlMap):
+ The body resource for this request
+ This corresponds to the ``url_map_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, url_map_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertUrlMapRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertUrlMapRequest):
+ request = compute.InsertUrlMapRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if url_map_resource is not None:
+ request.url_map_resource = url_map_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def invalidate_cache_unary(
self,
request: Union[compute.InvalidateCacheUrlMapRequest, dict] = None,
@@ -806,22 +986,9 @@ def invalidate_cache_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -866,6 +1033,122 @@ def invalidate_cache_unary(
# Done; return the response.
return response
+ def invalidate_cache(
+ self,
+ request: Union[compute.InvalidateCacheUrlMapRequest, dict] = None,
+ *,
+ project: str = None,
+ url_map: str = None,
+ cache_invalidation_rule_resource: compute.CacheInvalidationRule = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Initiates a cache invalidation operation, invalidating the
+ specified path, scoped to the specified UrlMap. For more
+ information, see `Invalidating cached
+ content `__.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InvalidateCacheUrlMapRequest, dict]):
+ The request object. A request message for
+ UrlMaps.InvalidateCache. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map (str):
+ Name of the UrlMap scoping this
+ request.
+
+ This corresponds to the ``url_map`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ cache_invalidation_rule_resource (google.cloud.compute_v1.types.CacheInvalidationRule):
+ The body resource for this request
+ This corresponds to the ``cache_invalidation_rule_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, url_map, cache_invalidation_rule_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InvalidateCacheUrlMapRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InvalidateCacheUrlMapRequest):
+ request = compute.InvalidateCacheUrlMapRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if url_map is not None:
+ request.url_map = url_map
+ if cache_invalidation_rule_resource is not None:
+ request.cache_invalidation_rule_resource = (
+ cache_invalidation_rule_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.invalidate_cache]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListUrlMapsRequest, dict] = None,
@@ -988,22 +1271,96 @@ def patch_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, url_map, url_map_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.PatchUrlMapRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.PatchUrlMapRequest):
+ request = compute.PatchUrlMapRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if url_map is not None:
+ request.url_map = url_map
+ if url_map_resource is not None:
+ request.url_map_resource = url_map_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.patch]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def patch(
+ self,
+ request: Union[compute.PatchUrlMapRequest, dict] = None,
+ *,
+ project: str = None,
+ url_map: str = None,
+ url_map_resource: compute.UrlMap = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Patches the specified UrlMap resource with the data
+ included in the request. This method supports PATCH
+ semantics and uses the JSON merge patch format and
+ processing rules.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.PatchUrlMapRequest, dict]):
+ The request object. A request message for UrlMaps.Patch.
+ See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map (str):
+ Name of the UrlMap resource to patch.
+ This corresponds to the ``url_map`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map_resource (google.cloud.compute_v1.types.UrlMap):
+ The body resource for this request
+ This corresponds to the ``url_map_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1043,6 +1400,30 @@ def patch_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
@@ -1088,22 +1469,96 @@ def update_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, url_map, url_map_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.UpdateUrlMapRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.UpdateUrlMapRequest):
+ request = compute.UpdateUrlMapRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if url_map is not None:
+ request.url_map = url_map
+ if url_map_resource is not None:
+ request.url_map_resource = url_map_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.update]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def update(
+ self,
+ request: Union[compute.UpdateUrlMapRequest, dict] = None,
+ *,
+ project: str = None,
+ url_map: str = None,
+ url_map_resource: compute.UrlMap = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Updates the specified UrlMap resource with the data
+ included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.UpdateUrlMapRequest, dict]):
+ The request object. A request message for
+ UrlMaps.Update. See the method description for details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map (str):
+ Name of the UrlMap resource to
+ update.
+
+ This corresponds to the ``url_map`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ url_map_resource (google.cloud.compute_v1.types.UrlMap):
+ The body resource for this request
+ This corresponds to the ``url_map_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1143,6 +1598,30 @@ def update_unary(
metadata=metadata,
)
+ operation_service = self._transport._global_operations_client
+ operation_request = compute.GetGlobalOperationRequest()
+ operation_request.project = request.project
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/url_maps/transports/base.py b/google/cloud/compute_v1/services/url_maps/transports/base.py
index 5836fd0ca..abfef4137 100644
--- a/google/cloud/compute_v1/services/url_maps/transports/base.py
+++ b/google/cloud/compute_v1/services/url_maps/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import global_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -261,5 +264,21 @@ def validate(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _global_operations_client(self) -> global_operations.GlobalOperationsClient:
+ ex_op_service = self._extended_operations_services.get("global_operations")
+ if not ex_op_service:
+ ex_op_service = global_operations.GlobalOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["global_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("UrlMapsTransport",)
diff --git a/google/cloud/compute_v1/services/url_maps/transports/rest.py b/google/cloud/compute_v1/services/url_maps/transports/rest.py
index 4d90d978e..fc62d5cc8 100644
--- a/google/cloud/compute_v1/services/url_maps/transports/rest.py
+++ b/google/cloud/compute_v1/services/url_maps/transports/rest.py
@@ -1446,6 +1446,10 @@ def validate(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/vpn_gateways/client.py b/google/cloud/compute_v1/services/vpn_gateways/client.py
index 194906e3b..6b6e09b36 100644
--- a/google/cloud/compute_v1/services/vpn_gateways/client.py
+++ b/google/cloud/compute_v1/services/vpn_gateways/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.vpn_gateways import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import VpnGatewaysTransport, DEFAULT_CLIENT_INFO
@@ -519,22 +522,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -577,6 +567,116 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteVpnGatewayRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ vpn_gateway: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified VPN gateway.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteVpnGatewayRequest, dict]):
+ The request object. A request message for
+ VpnGateways.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ vpn_gateway (str):
+ Name of the VPN gateway to delete.
+ This corresponds to the ``vpn_gateway`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, vpn_gateway])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteVpnGatewayRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteVpnGatewayRequest):
+ request = compute.DeleteVpnGatewayRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if vpn_gateway is not None:
+ request.vpn_gateway = vpn_gateway
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetVpnGatewayRequest, dict] = None,
@@ -793,22 +893,9 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -851,6 +938,117 @@ def insert_unary(
# Done; return the response.
return response
+ def insert(
+ self,
+ request: Union[compute.InsertVpnGatewayRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ vpn_gateway_resource: compute.VpnGateway = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a VPN gateway in the specified project and
+ region using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertVpnGatewayRequest, dict]):
+ The request object. A request message for
+ VpnGateways.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ vpn_gateway_resource (google.cloud.compute_v1.types.VpnGateway):
+ The body resource for this request
+ This corresponds to the ``vpn_gateway_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, vpn_gateway_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertVpnGatewayRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertVpnGatewayRequest):
+ request = compute.InsertVpnGatewayRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if vpn_gateway_resource is not None:
+ request.vpn_gateway_resource = vpn_gateway_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def list(
self,
request: Union[compute.ListVpnGatewaysRequest, dict] = None,
@@ -990,22 +1188,9 @@ def set_labels_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -1054,6 +1239,131 @@ def set_labels_unary(
# Done; return the response.
return response
+ def set_labels(
+ self,
+ request: Union[compute.SetLabelsVpnGatewayRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ resource: str = None,
+ region_set_labels_request_resource: compute.RegionSetLabelsRequest = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Sets the labels on a VpnGateway. To learn more about
+ labels, read the Labeling Resources documentation.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.SetLabelsVpnGatewayRequest, dict]):
+ The request object. A request message for
+ VpnGateways.SetLabels. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ The region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ resource (str):
+ Name or id of the resource for this
+ request.
+
+ This corresponds to the ``resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest):
+ The body resource for this request
+ This corresponds to the ``region_set_labels_request_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any(
+ [project, region, resource, region_set_labels_request_resource]
+ )
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.SetLabelsVpnGatewayRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.SetLabelsVpnGatewayRequest):
+ request = compute.SetLabelsVpnGatewayRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if resource is not None:
+ request.resource = resource
+ if region_set_labels_request_resource is not None:
+ request.region_set_labels_request_resource = (
+ region_set_labels_request_resource
+ )
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.set_labels]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def test_iam_permissions(
self,
request: Union[compute.TestIamPermissionsVpnGatewayRequest, dict] = None,
diff --git a/google/cloud/compute_v1/services/vpn_gateways/transports/base.py b/google/cloud/compute_v1/services/vpn_gateways/transports/base.py
index 5427ed05a..11a9c48c2 100644
--- a/google/cloud/compute_v1/services/vpn_gateways/transports/base.py
+++ b/google/cloud/compute_v1/services/vpn_gateways/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -254,5 +257,21 @@ def test_iam_permissions(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("VpnGatewaysTransport",)
diff --git a/google/cloud/compute_v1/services/vpn_gateways/transports/rest.py b/google/cloud/compute_v1/services/vpn_gateways/transports/rest.py
index eb4c979cd..f7385485f 100644
--- a/google/cloud/compute_v1/services/vpn_gateways/transports/rest.py
+++ b/google/cloud/compute_v1/services/vpn_gateways/transports/rest.py
@@ -1295,6 +1295,10 @@ def test_iam_permissions(
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/vpn_tunnels/client.py b/google/cloud/compute_v1/services/vpn_tunnels/client.py
index 0f725d1cc..8e47b27e5 100644
--- a/google/cloud/compute_v1/services/vpn_tunnels/client.py
+++ b/google/cloud/compute_v1/services/vpn_tunnels/client.py
@@ -14,13 +14,15 @@
# limitations under the License.
#
from collections import OrderedDict
+import functools
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation
from google.api_core import gapic_v1
from google.api_core import retry as retries
from google.auth import credentials as ga_credentials # type: ignore
@@ -34,6 +36,7 @@
except AttributeError: # pragma: NO COVER
OptionalRetry = Union[retries.Retry, object] # type: ignore
+from google.api_core import extended_operation # type: ignore
from google.cloud.compute_v1.services.vpn_tunnels import pagers
from google.cloud.compute_v1.types import compute
from .transports.base import VpnTunnelsTransport, DEFAULT_CLIENT_INFO
@@ -521,22 +524,9 @@ def delete_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -579,6 +569,118 @@ def delete_unary(
# Done; return the response.
return response
+ def delete(
+ self,
+ request: Union[compute.DeleteVpnTunnelRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ vpn_tunnel: str = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Deletes the specified VpnTunnel resource.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.DeleteVpnTunnelRequest, dict]):
+ The request object. A request message for
+ VpnTunnels.Delete. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ vpn_tunnel (str):
+ Name of the VpnTunnel resource to
+ delete.
+
+ This corresponds to the ``vpn_tunnel`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, vpn_tunnel])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.DeleteVpnTunnelRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.DeleteVpnTunnelRequest):
+ request = compute.DeleteVpnTunnelRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if vpn_tunnel is not None:
+ request.vpn_tunnel = vpn_tunnel
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.delete]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
+ # Done; return the response.
+ return response
+
def get(
self,
request: Union[compute.GetVpnTunnelRequest, dict] = None,
@@ -708,22 +810,95 @@ def insert_unary(
sent along with the request as metadata.
Returns:
- google.cloud.compute_v1.types.Operation:
- Represents an Operation resource. Google Compute Engine
- has three Operation resources: \*
- [Global](/compute/docs/reference/rest/v1/globalOperations)
- \*
- [Regional](/compute/docs/reference/rest/v1/regionOperations)
- \*
- [Zonal](/compute/docs/reference/rest/v1/zoneOperations)
- You can use an operation resource to manage asynchronous
- API requests. For more information, read Handling API
- responses. Operations can be global, regional or zonal.
- - For global operations, use the globalOperations
- resource. - For regional operations, use the
- regionOperations resource. - For zonal operations, use
- the zonalOperations resource. For more information, read
- Global, Regional, and Zonal Resources.
+ google.api_core.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
+
+ """
+ # Create or coerce a protobuf request object.
+ # Quick check: If we got a request object, we should *not* have
+ # gotten any keyword arguments that map to the request.
+ has_flattened_params = any([project, region, vpn_tunnel_resource])
+ if request is not None and has_flattened_params:
+ raise ValueError(
+ "If the `request` argument is set, then none of "
+ "the individual field arguments should be set."
+ )
+
+ # Minor optimization to avoid making a copy if the user passes
+ # in a compute.InsertVpnTunnelRequest.
+ # There's no risk of modifying the input as we've already verified
+ # there are no flattened fields.
+ if not isinstance(request, compute.InsertVpnTunnelRequest):
+ request = compute.InsertVpnTunnelRequest(request)
+ # If we have keyword arguments corresponding to fields on the
+ # request, apply these.
+ if project is not None:
+ request.project = project
+ if region is not None:
+ request.region = region
+ if vpn_tunnel_resource is not None:
+ request.vpn_tunnel_resource = vpn_tunnel_resource
+
+ # Wrap the RPC method; this adds retry and timeout information,
+ # and friendly error handling.
+ rpc = self._transport._wrapped_methods[self._transport.insert]
+
+ # Send the request.
+ response = rpc(
+ request,
+ retry=retry,
+ timeout=timeout,
+ metadata=metadata,
+ )
+
+ # Done; return the response.
+ return response
+
+ def insert(
+ self,
+ request: Union[compute.InsertVpnTunnelRequest, dict] = None,
+ *,
+ project: str = None,
+ region: str = None,
+ vpn_tunnel_resource: compute.VpnTunnel = None,
+ retry: OptionalRetry = gapic_v1.method.DEFAULT,
+ timeout: float = None,
+ metadata: Sequence[Tuple[str, str]] = (),
+ ) -> extended_operation.ExtendedOperation:
+ r"""Creates a VpnTunnel resource in the specified project
+ and region using the data included in the request.
+
+ Args:
+ request (Union[google.cloud.compute_v1.types.InsertVpnTunnelRequest, dict]):
+ The request object. A request message for
+ VpnTunnels.Insert. See the method description for
+ details.
+ project (str):
+ Project ID for this request.
+ This corresponds to the ``project`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ region (str):
+ Name of the region for this request.
+ This corresponds to the ``region`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ vpn_tunnel_resource (google.cloud.compute_v1.types.VpnTunnel):
+ The body resource for this request
+ This corresponds to the ``vpn_tunnel_resource`` field
+ on the ``request`` instance; if ``request`` is provided, this
+ should not be set.
+ 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.extended_operation.ExtendedOperation:
+ An object representing a extended
+ long-running operation.
"""
# Create or coerce a protobuf request object.
@@ -763,6 +938,31 @@ def insert_unary(
metadata=metadata,
)
+ operation_service = self._transport._region_operations_client
+ operation_request = compute.GetRegionOperationRequest()
+ operation_request.project = request.project
+ operation_request.region = request.region
+ operation_request.operation = response.name
+
+ get_operation = functools.partial(operation_service.get, operation_request)
+ # Cancel is not part of extended operations yet.
+ cancel_operation = lambda: None
+
+ # Note: this class is an implementation detail to provide a uniform
+ # set of names for certain fields in the extended operation proto message.
+ # See google.api_core.extended_operation.ExtendedOperation for details
+ # on these properties and the expected interface.
+ class _CustomOperation(extended_operation.ExtendedOperation):
+ @property
+ def error_message(self):
+ return self._extended_operation.http_error_message
+
+ @property
+ def error_code(self):
+ return self._extended_operation.http_error_status_code
+
+ response = _CustomOperation.make(get_operation, cancel_operation, response)
+
# Done; return the response.
return response
diff --git a/google/cloud/compute_v1/services/vpn_tunnels/transports/base.py b/google/cloud/compute_v1/services/vpn_tunnels/transports/base.py
index 6766fa1a3..c7a2ecc74 100644
--- a/google/cloud/compute_v1/services/vpn_tunnels/transports/base.py
+++ b/google/cloud/compute_v1/services/vpn_tunnels/transports/base.py
@@ -26,6 +26,7 @@
from google.oauth2 import service_account # type: ignore
from google.cloud.compute_v1.types import compute
+from google.cloud.compute_v1.services import region_operations
try:
DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo(
@@ -83,6 +84,8 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+ self._extended_operations_services: Dict[str, Any] = {}
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -206,5 +209,21 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
+ @property
+ def _region_operations_client(self) -> region_operations.RegionOperationsClient:
+ ex_op_service = self._extended_operations_services.get("region_operations")
+ if not ex_op_service:
+ ex_op_service = region_operations.RegionOperationsClient(
+ credentials=self._credentials,
+ transport=self.kind,
+ )
+ self._extended_operations_services["region_operations"] = ex_op_service
+
+ return ex_op_service
+
__all__ = ("VpnTunnelsTransport",)
diff --git a/google/cloud/compute_v1/services/vpn_tunnels/transports/rest.py b/google/cloud/compute_v1/services/vpn_tunnels/transports/rest.py
index a4d761034..9dee758a2 100644
--- a/google/cloud/compute_v1/services/vpn_tunnels/transports/rest.py
+++ b/google/cloud/compute_v1/services/vpn_tunnels/transports/rest.py
@@ -850,6 +850,10 @@ def list(self) -> Callable[[compute.ListVpnTunnelsRequest], compute.VpnTunnelLis
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/zone_operations/client.py b/google/cloud/compute_v1/services/zone_operations/client.py
index 72302655b..779022d03 100644
--- a/google/cloud/compute_v1/services/zone_operations/client.py
+++ b/google/cloud/compute_v1/services/zone_operations/client.py
@@ -16,7 +16,7 @@
from collections import OrderedDict
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
diff --git a/google/cloud/compute_v1/services/zone_operations/transports/base.py b/google/cloud/compute_v1/services/zone_operations/transports/base.py
index 56a9d7faf..e0440e27c 100644
--- a/google/cloud/compute_v1/services/zone_operations/transports/base.py
+++ b/google/cloud/compute_v1/services/zone_operations/transports/base.py
@@ -83,6 +83,7 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -193,5 +194,9 @@ def wait(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
__all__ = ("ZoneOperationsTransport",)
diff --git a/google/cloud/compute_v1/services/zone_operations/transports/rest.py b/google/cloud/compute_v1/services/zone_operations/transports/rest.py
index 727fd836e..a0f7227ef 100644
--- a/google/cloud/compute_v1/services/zone_operations/transports/rest.py
+++ b/google/cloud/compute_v1/services/zone_operations/transports/rest.py
@@ -727,6 +727,10 @@ def wait(self) -> Callable[[compute.WaitZoneOperationRequest], compute.Operation
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/services/zones/client.py b/google/cloud/compute_v1/services/zones/client.py
index 7f446cabb..bbddb4ce0 100644
--- a/google/cloud/compute_v1/services/zones/client.py
+++ b/google/cloud/compute_v1/services/zones/client.py
@@ -16,7 +16,7 @@
from collections import OrderedDict
import os
import re
-from typing import Dict, Optional, Sequence, Tuple, Type, Union
+from typing import Dict, Mapping, Optional, Sequence, Tuple, Type, Union
import pkg_resources
from google.api_core import client_options as client_options_lib
diff --git a/google/cloud/compute_v1/services/zones/transports/base.py b/google/cloud/compute_v1/services/zones/transports/base.py
index 104412238..080debe2f 100644
--- a/google/cloud/compute_v1/services/zones/transports/base.py
+++ b/google/cloud/compute_v1/services/zones/transports/base.py
@@ -84,6 +84,7 @@ def __init__(
always_use_jwt_access (Optional[bool]): Whether self signed JWT should
be used for service account credentials.
"""
+
# Save the hostname. Default to port 443 (HTTPS) if none is specified.
if ":" not in host:
host += ":443"
@@ -161,5 +162,9 @@ def list(
]:
raise NotImplementedError()
+ @property
+ def kind(self) -> str:
+ raise NotImplementedError()
+
__all__ = ("ZonesTransport",)
diff --git a/google/cloud/compute_v1/services/zones/transports/rest.py b/google/cloud/compute_v1/services/zones/transports/rest.py
index 3a8d799cc..6f0efbc7d 100644
--- a/google/cloud/compute_v1/services/zones/transports/rest.py
+++ b/google/cloud/compute_v1/services/zones/transports/rest.py
@@ -419,6 +419,10 @@ def list(self) -> Callable[[compute.ListZonesRequest], compute.ZoneList]:
# In C++ this would require a dynamic_cast
return stub # type: ignore
+ @property
+ def kind(self) -> str:
+ return "rest"
+
def close(self):
self._session.close()
diff --git a/google/cloud/compute_v1/types/compute.py b/google/cloud/compute_v1/types/compute.py
index 05fc80163..2b4731961 100644
--- a/google/cloud/compute_v1/types/compute.py
+++ b/google/cloud/compute_v1/types/compute.py
@@ -29293,8 +29293,6 @@ class InsertFirewallPolicyRequest(proto.Message):
"folders/[FOLDER_ID]" if the parent is a folder or
"organizations/[ORGANIZATION_ID]" if the parent is an
organization.
-
- This field is a member of `oneof`_ ``_parent_id``.
request_id (str):
An optional request ID to identify requests.
Specify a unique request ID so that if you must
@@ -29323,7 +29321,6 @@ class InsertFirewallPolicyRequest(proto.Message):
parent_id = proto.Field(
proto.STRING,
number=459714768,
- optional=True,
)
request_id = proto.Field(
proto.STRING,
@@ -50313,8 +50310,6 @@ class MoveFirewallPolicyRequest(proto.Message):
Name of the firewall policy to update.
parent_id (str):
The new parent of the firewall policy.
-
- This field is a member of `oneof`_ ``_parent_id``.
request_id (str):
An optional request ID to identify requests.
Specify a unique request ID so that if you must
@@ -50342,7 +50337,6 @@ class MoveFirewallPolicyRequest(proto.Message):
parent_id = proto.Field(
proto.STRING,
number=459714768,
- optional=True,
)
request_id = proto.Field(
proto.STRING,
@@ -54279,6 +54273,11 @@ class Status(proto.Enum):
optional=True,
)
+ @property
+ def done(self) -> bool:
+ """Return True if the backing extended operation is completed, False otherwise."""
+ return self.status == type(self.status).DONE
+
class OperationAggregatedList(proto.Message):
r"""
diff --git a/noxfile.py b/noxfile.py
index f03a84e5c..c64eb809d 100644
--- a/noxfile.py
+++ b/noxfile.py
@@ -25,7 +25,8 @@
import nox
BLACK_VERSION = "black==22.3.0"
-BLACK_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"]
+ISORT_VERSION = "isort==5.10.1"
+LINT_PATHS = ["docs", "google", "tests", "noxfile.py", "setup.py"]
DEFAULT_PYTHON_VERSION = "3.8"
@@ -83,7 +84,7 @@ def lint(session):
session.run(
"black",
"--check",
- *BLACK_PATHS,
+ *LINT_PATHS,
)
session.run("flake8", "google", "tests")
@@ -94,7 +95,27 @@ def blacken(session):
session.install(BLACK_VERSION)
session.run(
"black",
- *BLACK_PATHS,
+ *LINT_PATHS,
+ )
+
+
+@nox.session(python=DEFAULT_PYTHON_VERSION)
+def format(session):
+ """
+ Run isort to sort imports. Then run black
+ to format code to uniform standard.
+ """
+ session.install(BLACK_VERSION, ISORT_VERSION)
+ # Use the --fss option to sort imports using strict alphabetical order.
+ # See https://pycqa.github.io/isort/docs/configuration/options.html#force-sort-within-sections
+ session.run(
+ "isort",
+ "--fss",
+ *LINT_PATHS,
+ )
+ session.run(
+ "black",
+ *LINT_PATHS,
)
diff --git a/samples/ingredients/disks/autodelete_change.py b/samples/ingredients/disks/autodelete_change.py
index 589fe75bf..4238c3094 100644
--- a/samples/ingredients/disks/autodelete_change.py
+++ b/samples/ingredients/disks/autodelete_change.py
@@ -46,16 +46,8 @@ def set_disk_autodelete(project_id: str, zone: str, instance_name: str, disk_nam
disk.auto_delete = autodelete
- operation = instance_client.update_unary(project=project_id, zone=zone, instance=instance_name, instance_resource=instance)
- operation_client = compute_v1.ZoneOperationsClient()
- operation = operation_client.wait(project=project_id, zone=zone, operation=operation.name)
-
- if operation.error:
- print("Error during instance update:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warnings during instance update:\n", file=sys.stderr)
- for warning in operation.warnings:
- print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+ operation = instance_client.update(project=project_id, zone=zone, instance=instance_name, instance_resource=instance)
+
+ wait_for_extended_operation(operation, "disk update")
return
#
diff --git a/samples/ingredients/disks/create_empty_disk.py b/samples/ingredients/disks/create_empty_disk.py
index 7422caf45..b06f283f0 100644
--- a/samples/ingredients/disks/create_empty_disk.py
+++ b/samples/ingredients/disks/create_empty_disk.py
@@ -47,17 +47,9 @@ def create_empty_disk(
disk.type_ = disk_type
disk_client = compute_v1.DisksClient()
- operation = disk_client.insert_unary(project=project_id, zone=zone, disk_resource=disk)
- operation_client = compute_v1.ZoneOperationsClient()
- operation = operation_client.wait(project=project_id, zone=zone, operation=operation.name)
-
- if operation.error:
- print("Error during disk creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warnings during disk creation:\n", file=sys.stderr)
- for warning in operation.warnings:
- print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+ operation = disk_client.insert(project=project_id, zone=zone, disk_resource=disk)
+
+ wait_for_extended_operation(operation, "disk creation")
return disk_client.get(project=project_id, zone=zone, disk=disk.name)
#
diff --git a/samples/ingredients/disks/create_from_image.py b/samples/ingredients/disks/create_from_image.py
index c8e1bdce1..ab6ebf28e 100644
--- a/samples/ingredients/disks/create_from_image.py
+++ b/samples/ingredients/disks/create_from_image.py
@@ -51,17 +51,9 @@ def create_disk_from_image(
disk.source_image = source_image
disk_client = compute_v1.DisksClient()
- operation = disk_client.insert_unary(project=project_id, zone=zone, disk_resource=disk)
- operation_client = compute_v1.ZoneOperationsClient()
- operation = operation_client.wait(project=project_id, zone=zone, operation=operation.name)
+ operation = disk_client.insert(project=project_id, zone=zone, disk_resource=disk)
- if operation.error:
- print("Error during disk creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warnings during disk creation:\n", file=sys.stderr)
- for warning in operation.warnings:
- print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+ wait_for_extended_operation(operation, "disk creation")
return disk_client.get(project=project_id, zone=zone, disk=disk.name)
#
diff --git a/samples/ingredients/disks/create_from_snapshot.py b/samples/ingredients/disks/create_from_snapshot.py
index 059ab0180..88a797512 100644
--- a/samples/ingredients/disks/create_from_snapshot.py
+++ b/samples/ingredients/disks/create_from_snapshot.py
@@ -48,18 +48,9 @@ def create_disk_from_snapshot(project_id: str, zone: str, disk_name: str, disk_t
disk.source_snapshot = snapshot_link
disk.type_ = disk_type
disk.name = disk_name
- operation = disk_client.insert_unary(project=project_id, zone=zone, disk_resource=disk)
- operation_client = compute_v1.ZoneOperationsClient()
- operation = operation_client.wait(project=project_id, zone=zone, operation=operation.name)
+ operation = disk_client.insert(project=project_id, zone=zone, disk_resource=disk)
- if operation.error:
- print("Error during disk creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
-
- if operation.warnings:
- print("Warnings during disk creation:\n", file=sys.stderr)
- for warning in operation.warnings:
- print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+ wait_for_extended_operation(operation, "disk creation")
return disk_client.get(project=project_id, zone=zone, disk=disk_name)
#
diff --git a/samples/ingredients/disks/delete.py b/samples/ingredients/disks/delete.py
index d66294ece..6b3788b94 100644
--- a/samples/ingredients/disks/delete.py
+++ b/samples/ingredients/disks/delete.py
@@ -33,16 +33,7 @@ def delete_disk(project_id: str, zone: str, disk_name: str) -> NoReturn:
disk_name: name of the disk you want to delete.
"""
disk_client = compute_v1.DisksClient()
- operation = disk_client.delete_unary(project=project_id, zone=zone, disk=disk_name)
- operation_client = compute_v1.ZoneOperationsClient()
- operation = operation_client.wait(project=project_id, zone=zone, operation=operation.name)
-
- if operation.error:
- print("Error during disk delete operation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warnings during disk delete operation:\n", file=sys.stderr)
- for warning in operation.warnings:
- print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+ operation = disk_client.delete(project=project_id, zone=zone, disk=disk_name)
+ wait_for_extended_operation(operation, "disk deletion")
return
#
diff --git a/samples/ingredients/firewall/create.py b/samples/ingredients/firewall/create.py
index e6e9f0008..d6f17b090 100644
--- a/samples/ingredients/firewall/create.py
+++ b/samples/ingredients/firewall/create.py
@@ -16,6 +16,7 @@
# folder for complete code samples that are ready to be used.
# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check.
# flake8: noqa
+
from google.cloud import compute_v1
@@ -61,12 +62,11 @@ def create_firewall_rule(
# firewall_rule.priority = 0
firewall_client = compute_v1.FirewallsClient()
- op = firewall_client.insert_unary(
+ operation = firewall_client.insert(
project=project_id, firewall_resource=firewall_rule
)
- op_client = compute_v1.GlobalOperationsClient()
- op_client.wait(project=project_id, operation=op.name)
+ wait_for_extended_operation(operation, "firewall rule creation")
return firewall_client.get(project=project_id, firewall=firewall_rule_name)
#
diff --git a/samples/ingredients/firewall/delete.py b/samples/ingredients/firewall/delete.py
index fc6a42150..1f4b87031 100644
--- a/samples/ingredients/firewall/delete.py
+++ b/samples/ingredients/firewall/delete.py
@@ -16,6 +16,7 @@
# folder for complete code samples that are ready to be used.
# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check.
# flake8: noqa
+
from google.cloud import compute_v1
@@ -29,11 +30,10 @@ def delete_firewall_rule(project_id: str, firewall_rule_name: str) -> None:
firewall_rule_name: name of the firewall rule you want to delete.
"""
firewall_client = compute_v1.FirewallsClient()
- operation = firewall_client.delete_unary(
+ operation = firewall_client.delete(
project=project_id, firewall=firewall_rule_name
)
- operation_client = compute_v1.GlobalOperationsClient()
- operation_client.wait(project=project_id, operation=operation.name)
+ wait_for_extended_operation(operation, "firewall rule deletion")
return
#
diff --git a/samples/ingredients/firewall/patch.py b/samples/ingredients/firewall/patch.py
index 5017114a3..0c44979cd 100644
--- a/samples/ingredients/firewall/patch.py
+++ b/samples/ingredients/firewall/patch.py
@@ -16,6 +16,7 @@
# folder for complete code samples that are ready to be used.
# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check.
# flake8: noqa
+
from google.cloud import compute_v1
@@ -35,12 +36,11 @@ def patch_firewall_priority(project_id: str, firewall_rule_name: str, priority:
# The patch operation doesn't require the full definition of a Firewall object. It will only update
# the values that were set in it, in this case it will only change the priority.
firewall_client = compute_v1.FirewallsClient()
- operation = firewall_client.patch_unary(
+ operation = firewall_client.patch(
project=project_id, firewall=firewall_rule_name, firewall_resource=firewall_rule
)
- operation_client = compute_v1.GlobalOperationsClient()
- operation_client.wait(project=project_id, operation=operation.name)
+ wait_for_extended_operation(operation, "firewall rule patching")
return
#
diff --git a/samples/ingredients/instance-templates/create.py b/samples/ingredients/instance-templates/create.py
index ca56e99a8..9c79f8c76 100644
--- a/samples/ingredients/instance-templates/create.py
+++ b/samples/ingredients/instance-templates/create.py
@@ -16,6 +16,7 @@
# folder for complete code samples that are ready to be used.
# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check.
# flake8: noqa
+import sys
from google.cloud import compute_v1
@@ -64,11 +65,11 @@ def create_template(project_id: str, template_name: str) -> compute_v1.InstanceT
template.properties.network_interfaces = [network_interface]
template_client = compute_v1.InstanceTemplatesClient()
- operation_client = compute_v1.GlobalOperationsClient()
- op = template_client.insert_unary(
+ operation = template_client.insert(
project=project_id, instance_template_resource=template
)
- operation_client.wait(project=project_id, operation=op.name)
+
+ wait_for_extended_operation(operation, "instance template creation")
return template_client.get(project=project_id, instance_template=template_name)
#
diff --git a/samples/ingredients/instance-templates/create_from_instance.py b/samples/ingredients/instance-templates/create_from_instance.py
index 584e2f177..1450cf02f 100644
--- a/samples/ingredients/instance-templates/create_from_instance.py
+++ b/samples/ingredients/instance-templates/create_from_instance.py
@@ -54,11 +54,11 @@ def create_template_from_instance(
template.source_instance_params.disk_configs = [disk]
template_client = compute_v1.InstanceTemplatesClient()
- operation_client = compute_v1.GlobalOperationsClient()
- op = template_client.insert_unary(
+ operation = template_client.insert(
project=project_id, instance_template_resource=template
)
- operation_client.wait(project=project_id, operation=op.name)
+
+ wait_for_extended_operation(operation, "instance template creation")
return template_client.get(project=project_id, instance_template=template_name)
#
diff --git a/samples/ingredients/instance-templates/create_with_subnet.py b/samples/ingredients/instance-templates/create_with_subnet.py
index fb80d2510..fd91bb3c9 100644
--- a/samples/ingredients/instance-templates/create_with_subnet.py
+++ b/samples/ingredients/instance-templates/create_with_subnet.py
@@ -63,11 +63,10 @@ def create_template_with_subnet(
template.properties.network_interfaces = [network_interface]
template_client = compute_v1.InstanceTemplatesClient()
- operation_client = compute_v1.GlobalOperationsClient()
- op = template_client.insert_unary(
+ operation = template_client.insert(
project=project_id, instance_template_resource=template
)
- operation_client.wait(project=project_id, operation=op.name)
+ wait_for_extended_operation(operation, "instance template creation")
return template_client.get(project=project_id, instance_template=template_name)
#
diff --git a/samples/ingredients/instance-templates/delete.py b/samples/ingredients/instance-templates/delete.py
index 23bd929ee..f37206660 100644
--- a/samples/ingredients/instance-templates/delete.py
+++ b/samples/ingredients/instance-templates/delete.py
@@ -30,10 +30,9 @@ def delete_instance_template(project_id: str, template_name: str):
template_name: name of the template to delete.
"""
template_client = compute_v1.InstanceTemplatesClient()
- operation_client = compute_v1.GlobalOperationsClient()
- op = template_client.delete_unary(
+ operation = template_client.delete(
project=project_id, instance_template=template_name
)
- operation_client.wait(project=project_id, operation=op.name)
+ wait_for_extended_operation(operation, "instance template deletion")
return
#
diff --git a/samples/ingredients/instances/create_instance.py b/samples/ingredients/instances/create_instance.py
index 17ab8319b..f49fa6a98 100644
--- a/samples/ingredients/instances/create_instance.py
+++ b/samples/ingredients/instances/create_instance.py
@@ -18,11 +18,10 @@
# flake8: noqa
import re
-import sys
-from google.cloud import compute_v1
-import time
from typing import List
+from google.cloud import compute_v1
+
#
def create_instance(
@@ -79,7 +78,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -135,19 +133,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
#
diff --git a/samples/ingredients/instances/create_instance_from_template.py b/samples/ingredients/instances/create_instance_from_template.py
index 73ff814f4..b007f4f40 100644
--- a/samples/ingredients/instances/create_instance_from_template.py
+++ b/samples/ingredients/instances/create_instance_from_template.py
@@ -41,7 +41,6 @@ def create_instance_from_template(
Returns:
Instance object.
"""
- operation_client = compute_v1.ZoneOperationsClient()
instance_client = compute_v1.InstancesClient()
instance_insert_request = compute_v1.InsertInstanceRequest()
@@ -50,8 +49,8 @@ def create_instance_from_template(
instance_insert_request.source_instance_template = instance_template_url
instance_insert_request.instance_resource.name = instance_name
- op = instance_client.insert_unary(instance_insert_request)
- operation_client.wait(project=project_id, zone=zone, operation=op.name)
+ operation = instance_client.insert(instance_insert_request)
+ wait_for_extended_operation(operation, "instance creation")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
#
diff --git a/samples/ingredients/instances/create_instance_from_template_with_overrides.py b/samples/ingredients/instances/create_instance_from_template_with_overrides.py
index 001cb5179..5920a0648 100644
--- a/samples/ingredients/instances/create_instance_from_template_with_overrides.py
+++ b/samples/ingredients/instances/create_instance_from_template_with_overrides.py
@@ -53,7 +53,6 @@ def create_instance_from_template_with_overrides(
Returns:
Instance object.
"""
- operation_client = compute_v1.ZoneOperationsClient()
instance_client = compute_v1.InstancesClient()
instance_template_client = compute_v1.InstanceTemplatesClient()
@@ -90,8 +89,8 @@ def create_instance_from_template_with_overrides(
instance_insert_request.instance_resource = instance
instance_insert_request.source_instance_template = instance_template.self_link
- op = instance_client.insert_unary(instance_insert_request)
- operation_client.wait(project=project_id, zone=zone, operation=op.name)
+ operation = instance_client.insert(instance_insert_request)
+ wait_for_extended_operation(operation, "instance creation")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
#
\ No newline at end of file
diff --git a/samples/ingredients/instances/custom_machine_types/update_memory.py b/samples/ingredients/instances/custom_machine_types/update_memory.py
index ee9ed2a75..fd1afac89 100644
--- a/samples/ingredients/instances/custom_machine_types/update_memory.py
+++ b/samples/ingredients/instances/custom_machine_types/update_memory.py
@@ -38,7 +38,6 @@ def add_extended_memory_to_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
instance = instance_client.get(
project=project_id, zone=zone, instance=instance_name
)
@@ -51,10 +50,10 @@ def add_extended_memory_to_instance(
instance.Status.TERMINATED.name,
instance.Status.STOPPED.name,
):
- op = instance_client.stop_unary(
+ operation = instance_client.stop(
project=project_id, zone=zone, instance=instance_name
)
- operation_client.wait(project=project_id, zone=zone, operation=op.name)
+ wait_for_extended_operation(operation, "instance stopping")
start = time.time()
while instance.status not in (
instance.Status.TERMINATED.name,
@@ -77,13 +76,13 @@ def add_extended_memory_to_instance(
# cmt.memory_mb = new_memory
# cmt.extra_memory_used = True
# instance.machine_type = str(cmt)
- op = instance_client.update_unary(
+ operation = instance_client.update(
project=project_id,
zone=zone,
instance=instance_name,
instance_resource=instance,
)
- operation_client.wait(project=project_id, zone=zone, operation=op.name)
+ wait_for_extended_operation(operation, "instance update")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
#
diff --git a/samples/ingredients/instances/delete.py b/samples/ingredients/instances/delete.py
index ee84a349c..bd16d439a 100644
--- a/samples/ingredients/instances/delete.py
+++ b/samples/ingredients/instances/delete.py
@@ -33,24 +33,12 @@ def delete_instance(project_id: str, zone: str, machine_name: str) -> None:
machine_name: name of the machine you want to delete.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
print(f"Deleting {machine_name} from {zone}...")
- operation = instance_client.delete_unary(
+ operation = instance_client.delete(
project=project_id, zone=zone, instance=machine_name
)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during deletion:", operation.error, file=sys.stderr)
- return
- if operation.warnings:
- print("Warning during deletion:", operation.warnings, file=sys.stderr)
+ wait_for_extended_operation(operation, "instance deletion")
print(f"Instance {machine_name} deleted.")
return
#
diff --git a/samples/ingredients/instances/delete_protection/set.py b/samples/ingredients/instances/delete_protection/set.py
index fd7bd4ca9..4d3a73a5b 100644
--- a/samples/ingredients/instances/delete_protection/set.py
+++ b/samples/ingredients/instances/delete_protection/set.py
@@ -33,7 +33,6 @@ def set_delete_protection(
protected against deletion or not.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
request = compute_v1.SetDeletionProtectionInstanceRequest()
request.project = project_id
@@ -41,7 +40,7 @@ def set_delete_protection(
request.resource = instance_name
request.deletion_protection = delete_protection
- operation = instance_client.set_deletion_protection_unary(request)
- operation_client.wait(project=project_id, zone=zone, operation=operation.name)
+ operation = instance_client.set_deletion_protection(request)
+ wait_for_extended_operation(operation, "changing delete protection setting")
return
#
diff --git a/samples/ingredients/instances/reset.py b/samples/ingredients/instances/reset.py
index a0d29a1d9..f784e4b91 100644
--- a/samples/ingredients/instances/reset.py
+++ b/samples/ingredients/instances/reset.py
@@ -31,16 +31,12 @@ def reset_instance(project_id: str, zone: str, instance_name: str) -> None:
instance_name: name of the instance your want to reset.
"""
instance_client = compute_v1.InstancesClient()
- op_client = compute_v1.ZoneOperationsClient()
- op = instance_client.reset_unary(
+ operation = instance_client.reset(
project=project_id, zone=zone, instance=instance_name
)
- start = time.time()
- while op.status != compute_v1.Operation.Status.DONE:
- op = op_client.wait(operation=op.name, zone=zone, project=project_id)
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
+ wait_for_extended_operation(operation, "instance reset")
+
return
#
diff --git a/samples/ingredients/instances/resume.py b/samples/ingredients/instances/resume.py
new file mode 100644
index 000000000..2dcfcd325
--- /dev/null
+++ b/samples/ingredients/instances/resume.py
@@ -0,0 +1,47 @@
+# 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.
+
+# This is an ingredient file. It is not meant to be run directly. Check the samples/snippets
+# folder for complete code samples that are ready to be used.
+# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check.
+# flake8: noqa
+import time
+
+from google.cloud import compute_v1
+
+
+#
+def resume_instance(project_id: str, zone: str, instance_name: str) -> None:
+ """
+ Resume a suspended Google Compute Engine instance (with unencrypted disks).
+ Args:
+ project_id: project ID or project number of the Cloud project your instance belongs to.
+ zone: name of the zone your instance belongs to.
+ instance_name: name of the instance your want to resume.
+ """
+ instance_client = compute_v1.InstancesClient()
+
+ instance = instance_client.get(project=project_id, zone=zone, instance=instance_name)
+ if instance.status != compute_v1.Instance.Status.SUSPENDED.name:
+ raise RuntimeError(f"Only suspended instances can be resumed. "
+ f"Instance {instance_name} is in {instance.status} state.")
+
+ operation = instance_client.resume(
+ project=project_id, zone=zone, instance=instance_name
+ )
+
+ wait_for_extended_operation(operation, "instance resumption")
+ return
+#
+
diff --git a/samples/ingredients/instances/start.py b/samples/ingredients/instances/start.py
index a57359b10..eeba32eb7 100644
--- a/samples/ingredients/instances/start.py
+++ b/samples/ingredients/instances/start.py
@@ -31,16 +31,11 @@ def start_instance(project_id: str, zone: str, instance_name: str) -> None:
instance_name: name of the instance your want to start.
"""
instance_client = compute_v1.InstancesClient()
- op_client = compute_v1.ZoneOperationsClient()
- op = instance_client.start_unary(
+ operation = instance_client.start(
project=project_id, zone=zone, instance=instance_name
)
- start = time.time()
- while op.status != compute_v1.Operation.Status.DONE:
- op = op_client.wait(operation=op.name, zone=zone, project=project_id)
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
+ wait_for_extended_operation(operation, "instance start")
return
#
diff --git a/samples/ingredients/instances/start_encrypted.py b/samples/ingredients/instances/start_encrypted.py
index e90c56f2a..201d2233d 100644
--- a/samples/ingredients/instances/start_encrypted.py
+++ b/samples/ingredients/instances/start_encrypted.py
@@ -36,7 +36,6 @@ def start_instance_with_encryption_key(
https://cloud.google.com/compute/docs/disks/customer-supplied-encryption#specifications
"""
instance_client = compute_v1.InstancesClient()
- op_client = compute_v1.ZoneOperationsClient()
instance_data = instance_client.get(
project=project_id, zone=zone, instance=instance_name
@@ -52,17 +51,13 @@ def start_instance_with_encryption_key(
enc_data = compute_v1.InstancesStartWithEncryptionKeyRequest()
enc_data.disks = [disk_data]
- op = instance_client.start_with_encryption_key_unary(
+ operation = instance_client.start_with_encryption_key(
project=project_id,
zone=zone,
instance=instance_name,
instances_start_with_encryption_key_request_resource=enc_data,
)
- start = time.time()
- while op.status != compute_v1.Operation.Status.DONE:
- op = op_client.wait(operation=op.name, zone=zone, project=project_id)
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
+ wait_for_extended_operation(operation, "instance start (with encrypted disk)")
return
#
diff --git a/samples/ingredients/instances/stop.py b/samples/ingredients/instances/stop.py
index 903053348..ea1b532f8 100644
--- a/samples/ingredients/instances/stop.py
+++ b/samples/ingredients/instances/stop.py
@@ -31,16 +31,10 @@ def stop_instance(project_id: str, zone: str, instance_name: str) -> None:
instance_name: name of the instance your want to stop.
"""
instance_client = compute_v1.InstancesClient()
- op_client = compute_v1.ZoneOperationsClient()
- op = instance_client.stop_unary(
+ operation = instance_client.stop(
project=project_id, zone=zone, instance=instance_name
)
-
- start = time.time()
- while op.status != compute_v1.Operation.Status.DONE:
- op = op_client.wait(operation=op.name, zone=zone, project=project_id)
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
+ wait_for_extended_operation(operation, "instance stopping")
return
#
diff --git a/samples/ingredients/instances/suspend.py b/samples/ingredients/instances/suspend.py
new file mode 100644
index 000000000..d38cac81e
--- /dev/null
+++ b/samples/ingredients/instances/suspend.py
@@ -0,0 +1,42 @@
+# 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.
+
+# This is an ingredient file. It is not meant to be run directly. Check the samples/snippets
+# folder for complete code samples that are ready to be used.
+# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check.
+# flake8: noqa
+import time
+
+from google.cloud import compute_v1
+
+
+#
+def suspend_instance(project_id: str, zone: str, instance_name: str) -> None:
+ """
+ Suspend a running Google Compute Engine instance.
+ Args:
+ project_id: project ID or project number of the Cloud project your instance belongs to.
+ zone: name of the zone your instance belongs to.
+ instance_name: name of the instance your want to suspend.
+ """
+ instance_client = compute_v1.InstancesClient()
+
+ operation = instance_client.suspend(
+ project=project_id, zone=zone, instance=instance_name
+ )
+
+ wait_for_extended_operation(operation, "instance suspend")
+ return
+#
+
diff --git a/samples/ingredients/operations/handle_extended_operation.py b/samples/ingredients/operations/handle_extended_operation.py
new file mode 100644
index 000000000..7c75c17f7
--- /dev/null
+++ b/samples/ingredients/operations/handle_extended_operation.py
@@ -0,0 +1,68 @@
+# 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.
+
+# This is an ingredient file. It is not meant to be run directly. Check the samples/snippets
+# folder for complete code samples that are ready to be used.
+# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check.
+# flake8: noqa
+import sys
+from typing import Any
+
+from google.api_core.extended_operation import ExtendedOperation
+
+
+#
+def wait_for_extended_operation(
+ operation: ExtendedOperation,
+ verbose_name: str = "operation",
+ timeout: int = 300) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}", file=sys.stderr)
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+#
diff --git a/samples/ingredients/operations/list_zone_operations.py b/samples/ingredients/operations/list_zone_operations.py
index 7089f023f..472e893d5 100644
--- a/samples/ingredients/operations/list_zone_operations.py
+++ b/samples/ingredients/operations/list_zone_operations.py
@@ -43,4 +43,4 @@ def list_zone_operations(
request.filter = filter
return operation_client.list(request)
-#
\ No newline at end of file
+#
diff --git a/samples/ingredients/snapshots/create.py b/samples/ingredients/snapshots/create.py
index 3e3b2a97c..1c876a206 100644
--- a/samples/ingredients/snapshots/create.py
+++ b/samples/ingredients/snapshots/create.py
@@ -16,7 +16,6 @@
# folder for complete code samples that are ready to be used.
# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check.
# flake8: noqa
-import sys
from google.cloud import compute_v1
@@ -43,17 +42,9 @@ def create_snapshot(project_id: str, zone: str, disk_name: str, snapshot_name: s
snapshot.name = snapshot_name
snapshot_client = compute_v1.SnapshotsClient()
- operation = snapshot_client.insert_unary(project=project_id, snapshot_resource=snapshot)
- op_client = compute_v1.GlobalOperationsClient()
- operation = op_client.wait(project=project_id, operation=operation.name)
-
- if operation.error:
- print("Error during snapshot creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warnings during snapshot creation:\n", file=sys.stderr)
- for warning in operation.warnings:
- print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+ operation = snapshot_client.insert(project=project_id, snapshot_resource=snapshot)
+
+ wait_for_extended_operation(operation, "snapshot creation")
return snapshot_client.get(project=project_id, snapshot=snapshot_name)
diff --git a/samples/ingredients/snapshots/delete.py b/samples/ingredients/snapshots/delete.py
index dd3f1f29c..e7f5af9bc 100644
--- a/samples/ingredients/snapshots/delete.py
+++ b/samples/ingredients/snapshots/delete.py
@@ -16,7 +16,6 @@
# folder for complete code samples that are ready to be used.
# Disabling flake8 for the ingredients file, as it would fail F821 - undefined name check.
# flake8: noqa
-import sys
from typing import NoReturn
from google.cloud import compute_v1
@@ -33,17 +32,9 @@ def delete_snapshot(project_id: str, snapshot_name: str) -> NoReturn:
"""
snapshot_client = compute_v1.SnapshotsClient()
- operation = snapshot_client.delete_unary(project=project_id, snapshot=snapshot_name)
- op_client = compute_v1.GlobalOperationsClient()
- operation = op_client.wait(project=project_id, operation=operation.name)
-
- if operation.error:
- print("Error during snapshot deletion:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warnings during snapshot deletion:\n", file=sys.stderr)
- for warning in operation.warnings:
- print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+ operation = snapshot_client.delete(project=project_id, snapshot=snapshot_name)
+
+ wait_for_extended_operation(operation, "snapshot deletion")
return
#
diff --git a/samples/ingredients/usage_report/disable.py b/samples/ingredients/usage_report/disable.py
index e8d1464cb..4fc7ad6c1 100644
--- a/samples/ingredients/usage_report/disable.py
+++ b/samples/ingredients/usage_report/disable.py
@@ -31,13 +31,10 @@ def disable_usage_export(project_id: str) -> None:
# Setting `usage_export_location_resource` to an
# empty object will disable the usage report generation.
- operation = projects_client.set_usage_export_bucket_unary(
+ operation = projects_client.set_usage_export_bucket(
project=project_id, usage_export_location_resource={}
)
- op_client = compute_v1.GlobalOperationsClient()
-
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = op_client.wait(operation=operation.name, project=project_id)
+ wait_for_extended_operation(operation, "disabling GCE usage bucket")
#
diff --git a/samples/ingredients/usage_report/set_bucket.py b/samples/ingredients/usage_report/set_bucket.py
index 7a948c8b7..f308257df 100644
--- a/samples/ingredients/usage_report/set_bucket.py
+++ b/samples/ingredients/usage_report/set_bucket.py
@@ -49,13 +49,10 @@ def set_usage_export_bucket(
)
projects_client = compute_v1.ProjectsClient()
- operation = projects_client.set_usage_export_bucket_unary(
+ operation = projects_client.set_usage_export_bucket(
project=project_id, usage_export_location_resource=usage_export_location
)
- op_client = compute_v1.GlobalOperationsClient()
-
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = op_client.wait(operation=operation.name, project=project_id)
+ wait_for_extended_operation(operation, "setting GCE usage bucket")
#
diff --git a/samples/noxfile.py b/samples/noxfile.py
index 25f87a215..a40410b56 100644
--- a/samples/noxfile.py
+++ b/samples/noxfile.py
@@ -30,6 +30,7 @@
# WARNING - WARNING - WARNING - WARNING - WARNING
BLACK_VERSION = "black==22.3.0"
+ISORT_VERSION = "isort==5.10.1"
# Copy `noxfile_config.py` to your directory and modify it instead.
@@ -168,12 +169,33 @@ def lint(session: nox.sessions.Session) -> None:
@nox.session
def blacken(session: nox.sessions.Session) -> None:
+ """Run black. Format code to uniform standard."""
session.install(BLACK_VERSION)
python_files = [path for path in os.listdir(".") if path.endswith(".py")]
session.run("black", *python_files)
+#
+# format = isort + black
+#
+
+
+@nox.session
+def format(session: nox.sessions.Session) -> None:
+ """
+ Run isort to sort imports. Then run black
+ to format code to uniform standard.
+ """
+ session.install(BLACK_VERSION, ISORT_VERSION)
+ python_files = [path for path in os.listdir(".") if path.endswith(".py")]
+
+ # Use the --fss option to sort imports using strict alphabetical order.
+ # See https://pycqa.github.io/isort/docs/configuration/options.html#force-sort-within-sections
+ session.run("isort", "--fss", *python_files)
+ session.run("black", *python_files)
+
+
#
# Sample Tests
#
diff --git a/samples/recipes/disks/autodelete_change.py b/samples/recipes/disks/autodelete_change.py
index 33120f897..62465ac91 100644
--- a/samples/recipes/disks/autodelete_change.py
+++ b/samples/recipes/disks/autodelete_change.py
@@ -16,6 +16,8 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/disks/create_empty_disk.py b/samples/recipes/disks/create_empty_disk.py
index 923f79d07..c044d56f3 100644
--- a/samples/recipes/disks/create_empty_disk.py
+++ b/samples/recipes/disks/create_empty_disk.py
@@ -16,6 +16,8 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/disks/create_from_image.py b/samples/recipes/disks/create_from_image.py
index 407b4aa0d..a1aa318af 100644
--- a/samples/recipes/disks/create_from_image.py
+++ b/samples/recipes/disks/create_from_image.py
@@ -16,6 +16,8 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/disks/create_from_snapshot.py b/samples/recipes/disks/create_from_snapshot.py
index c33060ca2..efc3e29cc 100644
--- a/samples/recipes/disks/create_from_snapshot.py
+++ b/samples/recipes/disks/create_from_snapshot.py
@@ -16,6 +16,8 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/disks/delete.py b/samples/recipes/disks/delete.py
index e319a075c..c8bf1d904 100644
--- a/samples/recipes/disks/delete.py
+++ b/samples/recipes/disks/delete.py
@@ -16,6 +16,8 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/firewall/create.py b/samples/recipes/firewall/create.py
index 8d76598fa..b4770f78a 100644
--- a/samples/recipes/firewall/create.py
+++ b/samples/recipes/firewall/create.py
@@ -16,6 +16,8 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/firewall/delete.py b/samples/recipes/firewall/delete.py
index 6c3752fa6..ed25d5d1f 100644
--- a/samples/recipes/firewall/delete.py
+++ b/samples/recipes/firewall/delete.py
@@ -16,6 +16,8 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/firewall/patch.py b/samples/recipes/firewall/patch.py
index 543157e1a..48b717308 100644
--- a/samples/recipes/firewall/patch.py
+++ b/samples/recipes/firewall/patch.py
@@ -16,5 +16,7 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/instance_templates/create.py b/samples/recipes/instance_templates/create.py
index 6c313c2d2..f3fe9d797 100644
--- a/samples/recipes/instance_templates/create.py
+++ b/samples/recipes/instance_templates/create.py
@@ -16,5 +16,7 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/instance_templates/create_from_instance.py b/samples/recipes/instance_templates/create_from_instance.py
index 751416fe3..2059793f3 100644
--- a/samples/recipes/instance_templates/create_from_instance.py
+++ b/samples/recipes/instance_templates/create_from_instance.py
@@ -16,5 +16,7 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/instance_templates/create_with_subnet.py b/samples/recipes/instance_templates/create_with_subnet.py
index 85639db00..0aeba05dd 100644
--- a/samples/recipes/instance_templates/create_with_subnet.py
+++ b/samples/recipes/instance_templates/create_with_subnet.py
@@ -16,5 +16,7 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/instance_templates/delete.py b/samples/recipes/instance_templates/delete.py
index bf774c57d..8a9743b61 100644
--- a/samples/recipes/instance_templates/delete.py
+++ b/samples/recipes/instance_templates/delete.py
@@ -16,5 +16,7 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/instances/create.py b/samples/recipes/instances/create.py
index b51a2e737..3f35a1e4c 100644
--- a/samples/recipes/instances/create.py
+++ b/samples/recipes/instances/create.py
@@ -20,6 +20,8 @@
#
+#
+
#
#
diff --git a/samples/recipes/instances/create_start_instance/create_from_custom_image.py b/samples/recipes/instances/create_start_instance/create_from_custom_image.py
index e50d60367..a093f8cb3 100644
--- a/samples/recipes/instances/create_start_instance/create_from_custom_image.py
+++ b/samples/recipes/instances/create_start_instance/create_from_custom_image.py
@@ -21,6 +21,8 @@
#
+#
+
#
diff --git a/samples/recipes/instances/create_start_instance/create_from_public_image.py b/samples/recipes/instances/create_start_instance/create_from_public_image.py
index 6f6f0ee04..ac6f2d9bd 100644
--- a/samples/recipes/instances/create_start_instance/create_from_public_image.py
+++ b/samples/recipes/instances/create_start_instance/create_from_public_image.py
@@ -21,6 +21,8 @@
#
+#
+
#
diff --git a/samples/recipes/instances/create_start_instance/create_from_snapshot.py b/samples/recipes/instances/create_start_instance/create_from_snapshot.py
index 2047eeb57..34d3e9a9b 100644
--- a/samples/recipes/instances/create_start_instance/create_from_snapshot.py
+++ b/samples/recipes/instances/create_start_instance/create_from_snapshot.py
@@ -18,6 +18,8 @@
#
+#
+
#
diff --git a/samples/recipes/instances/create_start_instance/create_with_additional_disk.py b/samples/recipes/instances/create_start_instance/create_with_additional_disk.py
index ab9baa6e4..097cc1cf2 100644
--- a/samples/recipes/instances/create_start_instance/create_with_additional_disk.py
+++ b/samples/recipes/instances/create_start_instance/create_with_additional_disk.py
@@ -25,6 +25,8 @@
#
+#
+
#
diff --git a/samples/recipes/instances/create_start_instance/create_with_existing_disks.py b/samples/recipes/instances/create_start_instance/create_with_existing_disks.py
index 3f6bf6ac2..dfa59eb36 100644
--- a/samples/recipes/instances/create_start_instance/create_with_existing_disks.py
+++ b/samples/recipes/instances/create_start_instance/create_with_existing_disks.py
@@ -19,6 +19,8 @@
#
+#
+
#
diff --git a/samples/recipes/instances/create_start_instance/create_with_snapshotted_data_disk.py b/samples/recipes/instances/create_start_instance/create_with_snapshotted_data_disk.py
index 858e61884..19aec72dc 100644
--- a/samples/recipes/instances/create_start_instance/create_with_snapshotted_data_disk.py
+++ b/samples/recipes/instances/create_start_instance/create_with_snapshotted_data_disk.py
@@ -25,6 +25,8 @@
#
+#
+
#
diff --git a/samples/recipes/instances/create_with_subnet.py b/samples/recipes/instances/create_with_subnet.py
index 906edca50..989e64483 100644
--- a/samples/recipes/instances/create_with_subnet.py
+++ b/samples/recipes/instances/create_with_subnet.py
@@ -21,6 +21,8 @@
#
+#
+
#
diff --git a/samples/recipes/instances/custom_hostname/create.py b/samples/recipes/instances/custom_hostname/create.py
index 55f3b47e6..588c60382 100644
--- a/samples/recipes/instances/custom_hostname/create.py
+++ b/samples/recipes/instances/custom_hostname/create.py
@@ -21,6 +21,8 @@
#
+#
+
#
diff --git a/samples/recipes/instances/custom_machine_types/create_shared_with_helper.py b/samples/recipes/instances/custom_machine_types/create_shared_with_helper.py
index 6adc80098..a4d355d4d 100644
--- a/samples/recipes/instances/custom_machine_types/create_shared_with_helper.py
+++ b/samples/recipes/instances/custom_machine_types/create_shared_with_helper.py
@@ -24,6 +24,8 @@
#
+#
+
#
diff --git a/samples/recipes/instances/custom_machine_types/create_with_helper.py b/samples/recipes/instances/custom_machine_types/create_with_helper.py
index 0ea883cf5..8619e6822 100644
--- a/samples/recipes/instances/custom_machine_types/create_with_helper.py
+++ b/samples/recipes/instances/custom_machine_types/create_with_helper.py
@@ -25,6 +25,8 @@
#
+#
+
#
diff --git a/samples/recipes/instances/custom_machine_types/create_without_helper.py b/samples/recipes/instances/custom_machine_types/create_without_helper.py
index e88388a82..6b99722f2 100644
--- a/samples/recipes/instances/custom_machine_types/create_without_helper.py
+++ b/samples/recipes/instances/custom_machine_types/create_without_helper.py
@@ -21,6 +21,8 @@
#
+#
+
#
diff --git a/samples/recipes/instances/custom_machine_types/extra_mem_no_helper.py b/samples/recipes/instances/custom_machine_types/extra_mem_no_helper.py
index 68fdc2759..3b998965d 100644
--- a/samples/recipes/instances/custom_machine_types/extra_mem_no_helper.py
+++ b/samples/recipes/instances/custom_machine_types/extra_mem_no_helper.py
@@ -21,6 +21,8 @@
#
+#
+
#
diff --git a/samples/recipes/instances/custom_machine_types/update_memory.py b/samples/recipes/instances/custom_machine_types/update_memory.py
index 5817cd987..4d6b2ced8 100644
--- a/samples/recipes/instances/custom_machine_types/update_memory.py
+++ b/samples/recipes/instances/custom_machine_types/update_memory.py
@@ -16,5 +16,7 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/instances/delete.py b/samples/recipes/instances/delete.py
index 68fc7f554..99cff9e25 100644
--- a/samples/recipes/instances/delete.py
+++ b/samples/recipes/instances/delete.py
@@ -16,6 +16,8 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/instances/delete_protection/create.py b/samples/recipes/instances/delete_protection/create.py
index f1bb3a9b3..c45d757ea 100644
--- a/samples/recipes/instances/delete_protection/create.py
+++ b/samples/recipes/instances/delete_protection/create.py
@@ -21,6 +21,8 @@
#
+#
+
#
diff --git a/samples/recipes/instances/delete_protection/set.py b/samples/recipes/instances/delete_protection/set.py
index 785e8f781..ebd5b5970 100644
--- a/samples/recipes/instances/delete_protection/set.py
+++ b/samples/recipes/instances/delete_protection/set.py
@@ -16,5 +16,7 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/instances/from_instance_template/create_from_template.py b/samples/recipes/instances/from_instance_template/create_from_template.py
index c296366cc..9a07cd10c 100644
--- a/samples/recipes/instances/from_instance_template/create_from_template.py
+++ b/samples/recipes/instances/from_instance_template/create_from_template.py
@@ -16,5 +16,7 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/instances/from_instance_template/create_from_template_with_overrides.py b/samples/recipes/instances/from_instance_template/create_from_template_with_overrides.py
index 27d1b2ae0..c4d5ca109 100644
--- a/samples/recipes/instances/from_instance_template/create_from_template_with_overrides.py
+++ b/samples/recipes/instances/from_instance_template/create_from_template_with_overrides.py
@@ -16,5 +16,7 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/instances/preemptible/create_preemptible.py b/samples/recipes/instances/preemptible/create_preemptible.py
index a61615412..18791d35d 100644
--- a/samples/recipes/instances/preemptible/create_preemptible.py
+++ b/samples/recipes/instances/preemptible/create_preemptible.py
@@ -21,6 +21,8 @@
#
+#
+
#
diff --git a/samples/recipes/instances/reset.py b/samples/recipes/instances/reset.py
index 0842ed544..ce09f66e7 100644
--- a/samples/recipes/instances/reset.py
+++ b/samples/recipes/instances/reset.py
@@ -16,6 +16,7 @@
#
#
+#
#
#
diff --git a/samples/recipes/instances/resume.py b/samples/recipes/instances/resume.py
new file mode 100644
index 000000000..4cc8d7ef5
--- /dev/null
+++ b/samples/recipes/instances/resume.py
@@ -0,0 +1,23 @@
+# 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.
+# flake8: noqa
+
+#
+#
+
+#
+
+
+#
+#
diff --git a/samples/recipes/instances/start.py b/samples/recipes/instances/start.py
index 9ea6be08a..913680aa9 100644
--- a/samples/recipes/instances/start.py
+++ b/samples/recipes/instances/start.py
@@ -16,6 +16,8 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/instances/start_encrypted.py b/samples/recipes/instances/start_encrypted.py
index 6833c644e..d6a0194bd 100644
--- a/samples/recipes/instances/start_encrypted.py
+++ b/samples/recipes/instances/start_encrypted.py
@@ -16,6 +16,8 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/instances/stop.py b/samples/recipes/instances/stop.py
index 7dda8bcfa..49abe79a0 100644
--- a/samples/recipes/instances/stop.py
+++ b/samples/recipes/instances/stop.py
@@ -16,6 +16,8 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/instances/suspend.py b/samples/recipes/instances/suspend.py
new file mode 100644
index 000000000..59c5b75f0
--- /dev/null
+++ b/samples/recipes/instances/suspend.py
@@ -0,0 +1,23 @@
+# 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.
+# flake8: noqa
+
+#
+#
+
+#
+
+
+#
+#
diff --git a/samples/recipes/snapshots/create.py b/samples/recipes/snapshots/create.py
index b77eb7a98..5b54951b1 100644
--- a/samples/recipes/snapshots/create.py
+++ b/samples/recipes/snapshots/create.py
@@ -16,6 +16,8 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/snapshots/delete.py b/samples/recipes/snapshots/delete.py
index ff8e89c8e..a9686d6d3 100644
--- a/samples/recipes/snapshots/delete.py
+++ b/samples/recipes/snapshots/delete.py
@@ -16,6 +16,8 @@
#
#
+#
+
#
#
diff --git a/samples/recipes/usage_report/usage_reports.py b/samples/recipes/usage_report/usage_reports.py
index 4a293b800..d153b48d9 100644
--- a/samples/recipes/usage_report/usage_reports.py
+++ b/samples/recipes/usage_report/usage_reports.py
@@ -28,6 +28,9 @@
#
+
+#
+
#
#
@@ -40,6 +43,9 @@
#
+
+#
+
#
#
diff --git a/samples/requirements-test.txt b/samples/requirements-test.txt
index 0d1f5b210..d40fd21e5 100644
--- a/samples/requirements-test.txt
+++ b/samples/requirements-test.txt
@@ -1,4 +1,4 @@
pytest==7.1.1
pytest-parallel==0.1.1
flaky==3.7.0
-google-cloud-storage==2.2.1
+google-cloud-storage==2.3.0
diff --git a/samples/requirements.txt b/samples/requirements.txt
index a6a43c7f8..f8dcc530c 100644
--- a/samples/requirements.txt
+++ b/samples/requirements.txt
@@ -1,3 +1,3 @@
isort==5.10.1
black==22.3.0
-google-cloud-compute==1.1.0
+google-cloud-compute==1.2.0
diff --git a/samples/snippets/disks/autodelete_change.py b/samples/snippets/disks/autodelete_change.py
index 943564cd1..197e275d6 100644
--- a/samples/snippets/disks/autodelete_change.py
+++ b/samples/snippets/disks/autodelete_change.py
@@ -21,11 +21,58 @@
# [START compute_disk_autodelete_change]
import sys
-from typing import NoReturn
+from typing import Any, NoReturn
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def set_disk_autodelete(
project_id: str, zone: str, instance_name: str, disk_name: str, autodelete: bool
) -> NoReturn:
@@ -54,24 +101,14 @@ def set_disk_autodelete(
disk.auto_delete = autodelete
- operation = instance_client.update_unary(
+ operation = instance_client.update(
project=project_id,
zone=zone,
instance=instance_name,
instance_resource=instance,
)
- operation_client = compute_v1.ZoneOperationsClient()
- operation = operation_client.wait(
- project=project_id, zone=zone, operation=operation.name
- )
- if operation.error:
- print("Error during instance update:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warnings during instance update:\n", file=sys.stderr)
- for warning in operation.warnings:
- print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+ wait_for_extended_operation(operation, "disk update")
return
diff --git a/samples/snippets/disks/create_empty_disk.py b/samples/snippets/disks/create_empty_disk.py
index d1352f861..ff86b77d0 100644
--- a/samples/snippets/disks/create_empty_disk.py
+++ b/samples/snippets/disks/create_empty_disk.py
@@ -21,10 +21,58 @@
# [START compute_disk_create_empty_disk]
import sys
+from typing import Any
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_empty_disk(
project_id: str, zone: str, disk_name: str, disk_type: str, disk_size_gb: int
) -> compute_v1.Disk:
@@ -50,21 +98,9 @@ def create_empty_disk(
disk.type_ = disk_type
disk_client = compute_v1.DisksClient()
- operation = disk_client.insert_unary(
- project=project_id, zone=zone, disk_resource=disk
- )
- operation_client = compute_v1.ZoneOperationsClient()
- operation = operation_client.wait(
- project=project_id, zone=zone, operation=operation.name
- )
-
- if operation.error:
- print("Error during disk creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warnings during disk creation:\n", file=sys.stderr)
- for warning in operation.warnings:
- print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+ operation = disk_client.insert(project=project_id, zone=zone, disk_resource=disk)
+
+ wait_for_extended_operation(operation, "disk creation")
return disk_client.get(project=project_id, zone=zone, disk=disk.name)
diff --git a/samples/snippets/disks/create_from_image.py b/samples/snippets/disks/create_from_image.py
index 74e998ada..51ccb8e8c 100644
--- a/samples/snippets/disks/create_from_image.py
+++ b/samples/snippets/disks/create_from_image.py
@@ -21,10 +21,58 @@
# [START compute_disk_create_from_image]
import sys
+from typing import Any
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_disk_from_image(
project_id: str,
zone: str,
@@ -59,21 +107,9 @@ def create_disk_from_image(
disk.source_image = source_image
disk_client = compute_v1.DisksClient()
- operation = disk_client.insert_unary(
- project=project_id, zone=zone, disk_resource=disk
- )
- operation_client = compute_v1.ZoneOperationsClient()
- operation = operation_client.wait(
- project=project_id, zone=zone, operation=operation.name
- )
-
- if operation.error:
- print("Error during disk creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warnings during disk creation:\n", file=sys.stderr)
- for warning in operation.warnings:
- print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+ operation = disk_client.insert(project=project_id, zone=zone, disk_resource=disk)
+
+ wait_for_extended_operation(operation, "disk creation")
return disk_client.get(project=project_id, zone=zone, disk=disk.name)
diff --git a/samples/snippets/disks/create_from_snapshot.py b/samples/snippets/disks/create_from_snapshot.py
index 2421adb0f..8aef45ade 100644
--- a/samples/snippets/disks/create_from_snapshot.py
+++ b/samples/snippets/disks/create_from_snapshot.py
@@ -21,10 +21,58 @@
# [START compute_disk_create_from_snapshot]
import sys
+from typing import Any
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_disk_from_snapshot(
project_id: str,
zone: str,
@@ -57,22 +105,9 @@ def create_disk_from_snapshot(
disk.source_snapshot = snapshot_link
disk.type_ = disk_type
disk.name = disk_name
- operation = disk_client.insert_unary(
- project=project_id, zone=zone, disk_resource=disk
- )
- operation_client = compute_v1.ZoneOperationsClient()
- operation = operation_client.wait(
- project=project_id, zone=zone, operation=operation.name
- )
-
- if operation.error:
- print("Error during disk creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
+ operation = disk_client.insert(project=project_id, zone=zone, disk_resource=disk)
- if operation.warnings:
- print("Warnings during disk creation:\n", file=sys.stderr)
- for warning in operation.warnings:
- print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+ wait_for_extended_operation(operation, "disk creation")
return disk_client.get(project=project_id, zone=zone, disk=disk_name)
diff --git a/samples/snippets/disks/delete.py b/samples/snippets/disks/delete.py
index 0b5ea3cb3..f5c21d6fe 100644
--- a/samples/snippets/disks/delete.py
+++ b/samples/snippets/disks/delete.py
@@ -21,11 +21,58 @@
# [START compute_disk_delete]
import sys
-from typing import NoReturn
+from typing import Any, NoReturn
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def delete_disk(project_id: str, zone: str, disk_name: str) -> NoReturn:
"""
Deletes a disk from a project.
@@ -36,19 +83,8 @@ def delete_disk(project_id: str, zone: str, disk_name: str) -> NoReturn:
disk_name: name of the disk you want to delete.
"""
disk_client = compute_v1.DisksClient()
- operation = disk_client.delete_unary(project=project_id, zone=zone, disk=disk_name)
- operation_client = compute_v1.ZoneOperationsClient()
- operation = operation_client.wait(
- project=project_id, zone=zone, operation=operation.name
- )
-
- if operation.error:
- print("Error during disk delete operation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warnings during disk delete operation:\n", file=sys.stderr)
- for warning in operation.warnings:
- print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+ operation = disk_client.delete(project=project_id, zone=zone, disk=disk_name)
+ wait_for_extended_operation(operation, "disk deletion")
return
diff --git a/samples/snippets/firewall/create.py b/samples/snippets/firewall/create.py
index 1eb230dea..8d80a08d8 100644
--- a/samples/snippets/firewall/create.py
+++ b/samples/snippets/firewall/create.py
@@ -20,9 +20,59 @@
# [START compute_firewall_create]
+import sys
+from typing import Any
+
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_firewall_rule(
project_id: str, firewall_rule_name: str, network: str = "global/networks/default"
) -> compute_v1.Firewall:
@@ -64,12 +114,11 @@ def create_firewall_rule(
# firewall_rule.priority = 0
firewall_client = compute_v1.FirewallsClient()
- op = firewall_client.insert_unary(
+ operation = firewall_client.insert(
project=project_id, firewall_resource=firewall_rule
)
- op_client = compute_v1.GlobalOperationsClient()
- op_client.wait(project=project_id, operation=op.name)
+ wait_for_extended_operation(operation, "firewall rule creation")
return firewall_client.get(project=project_id, firewall=firewall_rule_name)
diff --git a/samples/snippets/firewall/delete.py b/samples/snippets/firewall/delete.py
index d606912a5..fe2c7c08e 100644
--- a/samples/snippets/firewall/delete.py
+++ b/samples/snippets/firewall/delete.py
@@ -20,9 +20,59 @@
# [START compute_firewall_delete]
+import sys
+from typing import Any
+
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def delete_firewall_rule(project_id: str, firewall_rule_name: str) -> None:
"""
Deletes a firewall rule from the project.
@@ -32,12 +82,9 @@ def delete_firewall_rule(project_id: str, firewall_rule_name: str) -> None:
firewall_rule_name: name of the firewall rule you want to delete.
"""
firewall_client = compute_v1.FirewallsClient()
- operation = firewall_client.delete_unary(
- project=project_id, firewall=firewall_rule_name
- )
+ operation = firewall_client.delete(project=project_id, firewall=firewall_rule_name)
- operation_client = compute_v1.GlobalOperationsClient()
- operation_client.wait(project=project_id, operation=operation.name)
+ wait_for_extended_operation(operation, "firewall rule deletion")
return
diff --git a/samples/snippets/firewall/main.py b/samples/snippets/firewall/main.py
index b53e677e0..b506328df 100644
--- a/samples/snippets/firewall/main.py
+++ b/samples/snippets/firewall/main.py
@@ -65,12 +65,11 @@ def create_firewall_rule(
# firewall_rule.priority = 0
firewall_client = compute_v1.FirewallsClient()
- op = firewall_client.insert_unary(
+ operation = firewall_client.insert(
project=project_id, firewall_resource=firewall_rule
)
- op_client = compute_v1.GlobalOperationsClient()
- op_client.wait(project=project_id, operation=op.name)
+ wait_for_extended_operation(operation, "firewall rule creation")
return firewall_client.get(project=project_id, firewall=firewall_rule_name)
@@ -84,12 +83,9 @@ def delete_firewall_rule(project_id: str, firewall_rule_name: str) -> None:
firewall_rule_name: name of the firewall rule you want to delete.
"""
firewall_client = compute_v1.FirewallsClient()
- operation = firewall_client.delete_unary(
- project=project_id, firewall=firewall_rule_name
- )
+ operation = firewall_client.delete(project=project_id, firewall=firewall_rule_name)
- operation_client = compute_v1.GlobalOperationsClient()
- operation_client.wait(project=project_id, operation=operation.name)
+ wait_for_extended_operation(operation, "firewall rule deletion")
return
@@ -145,12 +141,11 @@ def patch_firewall_priority(
# The patch operation doesn't require the full definition of a Firewall object. It will only update
# the values that were set in it, in this case it will only change the priority.
firewall_client = compute_v1.FirewallsClient()
- operation = firewall_client.patch_unary(
+ operation = firewall_client.patch(
project=project_id, firewall=firewall_rule_name, firewall_resource=firewall_rule
)
- operation_client = compute_v1.GlobalOperationsClient()
- operation_client.wait(project=project_id, operation=operation.name)
+ wait_for_extended_operation(operation, "firewall rule patching")
return
diff --git a/samples/snippets/firewall/patch.py b/samples/snippets/firewall/patch.py
index 9dbb823da..e81624dc9 100644
--- a/samples/snippets/firewall/patch.py
+++ b/samples/snippets/firewall/patch.py
@@ -20,9 +20,59 @@
# [START compute_firewall_patch]
+import sys
+from typing import Any
+
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def patch_firewall_priority(
project_id: str, firewall_rule_name: str, priority: int
) -> None:
@@ -40,12 +90,11 @@ def patch_firewall_priority(
# The patch operation doesn't require the full definition of a Firewall object. It will only update
# the values that were set in it, in this case it will only change the priority.
firewall_client = compute_v1.FirewallsClient()
- operation = firewall_client.patch_unary(
+ operation = firewall_client.patch(
project=project_id, firewall=firewall_rule_name, firewall_resource=firewall_rule
)
- operation_client = compute_v1.GlobalOperationsClient()
- operation_client.wait(project=project_id, operation=operation.name)
+ wait_for_extended_operation(operation, "firewall rule patching")
return
diff --git a/samples/snippets/instance_templates/create.py b/samples/snippets/instance_templates/create.py
index f328bbfc1..4b63601c8 100644
--- a/samples/snippets/instance_templates/create.py
+++ b/samples/snippets/instance_templates/create.py
@@ -20,9 +20,59 @@
# [START compute_template_create]
+import sys
+from typing import Any
+
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_template(project_id: str, template_name: str) -> compute_v1.InstanceTemplate:
"""
Create a new instance template with the provided name and a specific
@@ -66,11 +116,11 @@ def create_template(project_id: str, template_name: str) -> compute_v1.InstanceT
template.properties.network_interfaces = [network_interface]
template_client = compute_v1.InstanceTemplatesClient()
- operation_client = compute_v1.GlobalOperationsClient()
- op = template_client.insert_unary(
+ operation = template_client.insert(
project=project_id, instance_template_resource=template
)
- operation_client.wait(project=project_id, operation=op.name)
+
+ wait_for_extended_operation(operation, "instance template creation")
return template_client.get(project=project_id, instance_template=template_name)
diff --git a/samples/snippets/instance_templates/create_from_instance.py b/samples/snippets/instance_templates/create_from_instance.py
index 20afc7154..7ceff5074 100644
--- a/samples/snippets/instance_templates/create_from_instance.py
+++ b/samples/snippets/instance_templates/create_from_instance.py
@@ -20,9 +20,59 @@
# [START compute_template_create_from_instance]
+import sys
+from typing import Any
+
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_template_from_instance(
project_id: str, instance: str, template_name: str
) -> compute_v1.InstanceTemplate:
@@ -56,11 +106,11 @@ def create_template_from_instance(
template.source_instance_params.disk_configs = [disk]
template_client = compute_v1.InstanceTemplatesClient()
- operation_client = compute_v1.GlobalOperationsClient()
- op = template_client.insert_unary(
+ operation = template_client.insert(
project=project_id, instance_template_resource=template
)
- operation_client.wait(project=project_id, operation=op.name)
+
+ wait_for_extended_operation(operation, "instance template creation")
return template_client.get(project=project_id, instance_template=template_name)
diff --git a/samples/snippets/instance_templates/create_with_subnet.py b/samples/snippets/instance_templates/create_with_subnet.py
index ea6ddc191..922a0ec27 100644
--- a/samples/snippets/instance_templates/create_with_subnet.py
+++ b/samples/snippets/instance_templates/create_with_subnet.py
@@ -20,9 +20,59 @@
# [START compute_template_create_with_subnet]
+import sys
+from typing import Any
+
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_template_with_subnet(
project_id: str, network: str, subnetwork: str, template_name: str
) -> compute_v1.InstanceTemplate:
@@ -65,11 +115,10 @@ def create_template_with_subnet(
template.properties.network_interfaces = [network_interface]
template_client = compute_v1.InstanceTemplatesClient()
- operation_client = compute_v1.GlobalOperationsClient()
- op = template_client.insert_unary(
+ operation = template_client.insert(
project=project_id, instance_template_resource=template
)
- operation_client.wait(project=project_id, operation=op.name)
+ wait_for_extended_operation(operation, "instance template creation")
return template_client.get(project=project_id, instance_template=template_name)
diff --git a/samples/snippets/instance_templates/delete.py b/samples/snippets/instance_templates/delete.py
index b0700c9ab..d024f70c9 100644
--- a/samples/snippets/instance_templates/delete.py
+++ b/samples/snippets/instance_templates/delete.py
@@ -20,9 +20,59 @@
# [START compute_template_delete]
+import sys
+from typing import Any
+
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def delete_instance_template(project_id: str, template_name: str):
"""
Delete an instance template.
@@ -32,11 +82,10 @@ def delete_instance_template(project_id: str, template_name: str):
template_name: name of the template to delete.
"""
template_client = compute_v1.InstanceTemplatesClient()
- operation_client = compute_v1.GlobalOperationsClient()
- op = template_client.delete_unary(
+ operation = template_client.delete(
project=project_id, instance_template=template_name
)
- operation_client.wait(project=project_id, operation=op.name)
+ wait_for_extended_operation(operation, "instance template deletion")
return
diff --git a/samples/snippets/instances/create.py b/samples/snippets/instances/create.py
index efa0de173..512ed6176 100644
--- a/samples/snippets/instances/create.py
+++ b/samples/snippets/instances/create.py
@@ -22,9 +22,9 @@
# [START compute_instances_create]
import re
import sys
-import time
-from typing import List
+from typing import Any, List
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -83,6 +83,52 @@ def disk_from_image(
return boot_disk
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance(
project_id: str,
zone: str,
@@ -137,7 +183,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -193,19 +238,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/create_start_instance/create_from_custom_image.py b/samples/snippets/instances/create_start_instance/create_from_custom_image.py
index 59d32f08c..16dfa1b86 100644
--- a/samples/snippets/instances/create_start_instance/create_from_custom_image.py
+++ b/samples/snippets/instances/create_start_instance/create_from_custom_image.py
@@ -22,9 +22,9 @@
# [START compute_instances_create_from_custom_image]
import re
import sys
-import time
-from typing import List
+from typing import Any, List
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -83,6 +83,52 @@ def disk_from_image(
return boot_disk
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance(
project_id: str,
zone: str,
@@ -137,7 +183,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -193,19 +238,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/create_start_instance/create_from_public_image.py b/samples/snippets/instances/create_start_instance/create_from_public_image.py
index bfe848afa..881aa2c85 100644
--- a/samples/snippets/instances/create_start_instance/create_from_public_image.py
+++ b/samples/snippets/instances/create_start_instance/create_from_public_image.py
@@ -22,9 +22,9 @@
# [START compute_instances_create_from_image]
import re
import sys
-import time
-from typing import List
+from typing import Any, List
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -83,6 +83,52 @@ def disk_from_image(
return boot_disk
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance(
project_id: str,
zone: str,
@@ -137,7 +183,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -193,19 +238,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/create_start_instance/create_from_snapshot.py b/samples/snippets/instances/create_start_instance/create_from_snapshot.py
index 2c6996ed8..f7397b0ad 100644
--- a/samples/snippets/instances/create_start_instance/create_from_snapshot.py
+++ b/samples/snippets/instances/create_start_instance/create_from_snapshot.py
@@ -22,9 +22,9 @@
# [START compute_instances_create_from_snapshot]
import re
import sys
-import time
-from typing import List
+from typing import Any, List
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -65,6 +65,52 @@ def disk_from_snapshot(
return disk
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance(
project_id: str,
zone: str,
@@ -119,7 +165,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -175,19 +220,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/create_start_instance/create_with_additional_disk.py b/samples/snippets/instances/create_start_instance/create_with_additional_disk.py
index a14005eb5..b506a9f09 100644
--- a/samples/snippets/instances/create_start_instance/create_with_additional_disk.py
+++ b/samples/snippets/instances/create_start_instance/create_with_additional_disk.py
@@ -22,9 +22,9 @@
# [START compute_instances_create_from_image_plus_empty_disk]
import re
import sys
-import time
-from typing import List
+from typing import Any, List
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -113,6 +113,52 @@ def empty_disk(
return disk
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance(
project_id: str,
zone: str,
@@ -167,7 +213,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -223,19 +268,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/create_start_instance/create_with_existing_disks.py b/samples/snippets/instances/create_start_instance/create_with_existing_disks.py
index df36012ea..121582d91 100644
--- a/samples/snippets/instances/create_start_instance/create_with_existing_disks.py
+++ b/samples/snippets/instances/create_start_instance/create_with_existing_disks.py
@@ -22,9 +22,9 @@
# [START compute_instances_create_with_existing_disks]
import re
import sys
-import time
-from typing import Iterable, List, NoReturn
+from typing import Any, Iterable, List, NoReturn
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -41,6 +41,52 @@ def get_disk(project_id: str, zone: str, disk_name: str) -> compute_v1.Disk:
return disk_client.get(project=project_id, zone=zone, disk=disk_name)
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance(
project_id: str,
zone: str,
@@ -95,7 +141,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -151,19 +196,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/create_start_instance/create_with_snapshotted_data_disk.py b/samples/snippets/instances/create_start_instance/create_with_snapshotted_data_disk.py
index 0385c17ab..dbffbb174 100644
--- a/samples/snippets/instances/create_start_instance/create_with_snapshotted_data_disk.py
+++ b/samples/snippets/instances/create_start_instance/create_with_snapshotted_data_disk.py
@@ -22,9 +22,9 @@
# [START compute_instances_create_from_image_plus_snapshot_disk]
import re
import sys
-import time
-from typing import List
+from typing import Any, List
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -120,6 +120,52 @@ def disk_from_snapshot(
return disk
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance(
project_id: str,
zone: str,
@@ -174,7 +220,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -230,19 +275,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/create_with_subnet.py b/samples/snippets/instances/create_with_subnet.py
index 27a52a9f7..3c28b8470 100644
--- a/samples/snippets/instances/create_with_subnet.py
+++ b/samples/snippets/instances/create_with_subnet.py
@@ -22,9 +22,9 @@
# [START compute_instances_create_with_subnet]
import re
import sys
-import time
-from typing import List
+from typing import Any, List
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -83,6 +83,52 @@ def disk_from_image(
return boot_disk
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance(
project_id: str,
zone: str,
@@ -137,7 +183,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -193,19 +238,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/custom_hostname/create.py b/samples/snippets/instances/custom_hostname/create.py
index 699f6397e..377a3169f 100644
--- a/samples/snippets/instances/custom_hostname/create.py
+++ b/samples/snippets/instances/custom_hostname/create.py
@@ -22,9 +22,9 @@
# [START compute_instances_create_custom_hostname]
import re
import sys
-import time
-from typing import List
+from typing import Any, List
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -83,6 +83,52 @@ def disk_from_image(
return boot_disk
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance(
project_id: str,
zone: str,
@@ -137,7 +183,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -193,19 +238,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/custom_machine_types/create_shared_with_helper.py b/samples/snippets/instances/custom_machine_types/create_shared_with_helper.py
index 7674013d4..4f37ae2a2 100644
--- a/samples/snippets/instances/custom_machine_types/create_shared_with_helper.py
+++ b/samples/snippets/instances/custom_machine_types/create_shared_with_helper.py
@@ -25,9 +25,9 @@
from enum import unique
import re
import sys
-import time
-from typing import List
+from typing import Any, List
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -277,6 +277,52 @@ def disk_from_image(
return boot_disk
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance(
project_id: str,
zone: str,
@@ -331,7 +377,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -387,19 +432,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/custom_machine_types/create_with_helper.py b/samples/snippets/instances/custom_machine_types/create_with_helper.py
index 5821f160b..499c63059 100644
--- a/samples/snippets/instances/custom_machine_types/create_with_helper.py
+++ b/samples/snippets/instances/custom_machine_types/create_with_helper.py
@@ -25,9 +25,9 @@
from enum import unique
import re
import sys
-import time
-from typing import List
+from typing import Any, List
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -277,6 +277,52 @@ def disk_from_image(
return boot_disk
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance(
project_id: str,
zone: str,
@@ -331,7 +377,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -387,19 +432,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/custom_machine_types/create_without_helper.py b/samples/snippets/instances/custom_machine_types/create_without_helper.py
index 54e208b6d..d7e13d8c1 100644
--- a/samples/snippets/instances/custom_machine_types/create_without_helper.py
+++ b/samples/snippets/instances/custom_machine_types/create_without_helper.py
@@ -22,9 +22,9 @@
# [START compute_custom_machine_type_create_without_helper]
import re
import sys
-import time
-from typing import List
+from typing import Any, List
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -83,6 +83,52 @@ def disk_from_image(
return boot_disk
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance(
project_id: str,
zone: str,
@@ -137,7 +183,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -193,19 +238,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/custom_machine_types/extra_mem_no_helper.py b/samples/snippets/instances/custom_machine_types/extra_mem_no_helper.py
index 9449ef11f..059750328 100644
--- a/samples/snippets/instances/custom_machine_types/extra_mem_no_helper.py
+++ b/samples/snippets/instances/custom_machine_types/extra_mem_no_helper.py
@@ -22,9 +22,9 @@
# [START compute_custom_machine_type_extra_mem_no_helper]
import re
import sys
-import time
-from typing import List
+from typing import Any, List
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -83,6 +83,52 @@ def disk_from_image(
return boot_disk
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance(
project_id: str,
zone: str,
@@ -137,7 +183,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -193,19 +238,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/custom_machine_types/update_memory.py b/samples/snippets/instances/custom_machine_types/update_memory.py
index b65c94344..b61a2a2b5 100644
--- a/samples/snippets/instances/custom_machine_types/update_memory.py
+++ b/samples/snippets/instances/custom_machine_types/update_memory.py
@@ -20,11 +20,60 @@
# [START compute_custom_machine_type_update_memory]
+import sys
import time
+from typing import Any
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def add_extended_memory_to_instance(
project_id: str, zone: str, instance_name: str, new_memory: int
):
@@ -41,7 +90,6 @@ def add_extended_memory_to_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
instance = instance_client.get(
project=project_id, zone=zone, instance=instance_name
)
@@ -58,10 +106,10 @@ def add_extended_memory_to_instance(
instance.Status.TERMINATED.name,
instance.Status.STOPPED.name,
):
- op = instance_client.stop_unary(
+ operation = instance_client.stop(
project=project_id, zone=zone, instance=instance_name
)
- operation_client.wait(project=project_id, zone=zone, operation=op.name)
+ wait_for_extended_operation(operation, "instance stopping")
start = time.time()
while instance.status not in (
instance.Status.TERMINATED.name,
@@ -84,13 +132,13 @@ def add_extended_memory_to_instance(
# cmt.memory_mb = new_memory
# cmt.extra_memory_used = True
# instance.machine_type = str(cmt)
- op = instance_client.update_unary(
+ operation = instance_client.update(
project=project_id,
zone=zone,
instance=instance_name,
instance_resource=instance,
)
- operation_client.wait(project=project_id, zone=zone, operation=op.name)
+ wait_for_extended_operation(operation, "instance update")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/delete.py b/samples/snippets/instances/delete.py
index 55cdfe9c7..af8474558 100644
--- a/samples/snippets/instances/delete.py
+++ b/samples/snippets/instances/delete.py
@@ -22,10 +22,58 @@
# [START compute_instances_delete]
import sys
import time
+from typing import Any
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def delete_instance(project_id: str, zone: str, machine_name: str) -> None:
"""
Send an instance deletion request to the Compute Engine API and wait for it to complete.
@@ -36,24 +84,12 @@ def delete_instance(project_id: str, zone: str, machine_name: str) -> None:
machine_name: name of the machine you want to delete.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
print(f"Deleting {machine_name} from {zone}...")
- operation = instance_client.delete_unary(
+ operation = instance_client.delete(
project=project_id, zone=zone, instance=machine_name
)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during deletion:", operation.error, file=sys.stderr)
- return
- if operation.warnings:
- print("Warning during deletion:", operation.warnings, file=sys.stderr)
+ wait_for_extended_operation(operation, "instance deletion")
print(f"Instance {machine_name} deleted.")
return
diff --git a/samples/snippets/instances/delete_protection/create.py b/samples/snippets/instances/delete_protection/create.py
index 15d31f102..fe9d26e60 100644
--- a/samples/snippets/instances/delete_protection/create.py
+++ b/samples/snippets/instances/delete_protection/create.py
@@ -22,9 +22,9 @@
# [START compute_delete_protection_create]
import re
import sys
-import time
-from typing import List
+from typing import Any, List
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -83,6 +83,52 @@ def disk_from_image(
return boot_disk
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance(
project_id: str,
zone: str,
@@ -137,7 +183,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -193,19 +238,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/delete_protection/set.py b/samples/snippets/instances/delete_protection/set.py
index 47c3b35ba..3a6008306 100644
--- a/samples/snippets/instances/delete_protection/set.py
+++ b/samples/snippets/instances/delete_protection/set.py
@@ -20,9 +20,59 @@
# [START compute_delete_protection_set]
+import sys
+from typing import Any
+
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def set_delete_protection(
project_id: str, zone: str, instance_name: str, delete_protection: bool
) -> None:
@@ -36,7 +86,6 @@ def set_delete_protection(
protected against deletion or not.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
request = compute_v1.SetDeletionProtectionInstanceRequest()
request.project = project_id
@@ -44,8 +93,8 @@ def set_delete_protection(
request.resource = instance_name
request.deletion_protection = delete_protection
- operation = instance_client.set_deletion_protection_unary(request)
- operation_client.wait(project=project_id, zone=zone, operation=operation.name)
+ operation = instance_client.set_deletion_protection(request)
+ wait_for_extended_operation(operation, "changing delete protection setting")
return
diff --git a/samples/snippets/instances/from_instance_template/create_from_template.py b/samples/snippets/instances/from_instance_template/create_from_template.py
index 6310cfd11..3abd6cc46 100644
--- a/samples/snippets/instances/from_instance_template/create_from_template.py
+++ b/samples/snippets/instances/from_instance_template/create_from_template.py
@@ -20,9 +20,59 @@
# [START compute_instances_create_from_template]
+import sys
+from typing import Any
+
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance_from_template(
project_id: str, zone: str, instance_name: str, instance_template_url: str
) -> compute_v1.Instance:
@@ -43,7 +93,6 @@ def create_instance_from_template(
Returns:
Instance object.
"""
- operation_client = compute_v1.ZoneOperationsClient()
instance_client = compute_v1.InstancesClient()
instance_insert_request = compute_v1.InsertInstanceRequest()
@@ -52,8 +101,8 @@ def create_instance_from_template(
instance_insert_request.source_instance_template = instance_template_url
instance_insert_request.instance_resource.name = instance_name
- op = instance_client.insert_unary(instance_insert_request)
- operation_client.wait(project=project_id, zone=zone, operation=op.name)
+ operation = instance_client.insert(instance_insert_request)
+ wait_for_extended_operation(operation, "instance creation")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/from_instance_template/create_from_template_with_overrides.py b/samples/snippets/instances/from_instance_template/create_from_template_with_overrides.py
index 6f76d3290..eca6f0a49 100644
--- a/samples/snippets/instances/from_instance_template/create_from_template_with_overrides.py
+++ b/samples/snippets/instances/from_instance_template/create_from_template_with_overrides.py
@@ -20,9 +20,59 @@
# [START compute_instances_create_from_template_with_overrides]
+import sys
+from typing import Any
+
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance_from_template_with_overrides(
project_id: str,
zone: str,
@@ -55,7 +105,6 @@ def create_instance_from_template_with_overrides(
Returns:
Instance object.
"""
- operation_client = compute_v1.ZoneOperationsClient()
instance_client = compute_v1.InstancesClient()
instance_template_client = compute_v1.InstanceTemplatesClient()
@@ -92,8 +141,8 @@ def create_instance_from_template_with_overrides(
instance_insert_request.instance_resource = instance
instance_insert_request.source_instance_template = instance_template.self_link
- op = instance_client.insert_unary(instance_insert_request)
- operation_client.wait(project=project_id, zone=zone, operation=op.name)
+ operation = instance_client.insert(instance_insert_request)
+ wait_for_extended_operation(operation, "instance creation")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/preemptible/create_preemptible.py b/samples/snippets/instances/preemptible/create_preemptible.py
index 5cc7ff47d..3e2ef4b89 100644
--- a/samples/snippets/instances/preemptible/create_preemptible.py
+++ b/samples/snippets/instances/preemptible/create_preemptible.py
@@ -22,9 +22,9 @@
# [START compute_preemptible_create]
import re
import sys
-import time
-from typing import List
+from typing import Any, List
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -83,6 +83,52 @@ def disk_from_image(
return boot_disk
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_instance(
project_id: str,
zone: str,
@@ -137,7 +183,6 @@ def create_instance(
Instance object.
"""
instance_client = compute_v1.InstancesClient()
- operation_client = compute_v1.ZoneOperationsClient()
# Use the network interface provided in the network_link argument.
network_interface = compute_v1.NetworkInterface()
@@ -193,19 +238,10 @@ def create_instance(
# Wait for the create operation to complete.
print(f"Creating the {instance_name} instance in {zone}...")
- operation = instance_client.insert_unary(request=request)
- start = time.time()
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = operation_client.wait(
- operation=operation.name, zone=zone, project=project_id
- )
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
- if operation.error:
- print("Error during creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warning during creation:", operation.warnings, file=sys.stderr)
+ operation = instance_client.insert(request=request)
+
+ wait_for_extended_operation(operation, "instance creation")
+
print(f"Instance {instance_name} created.")
return instance_client.get(project=project_id, zone=zone, instance=instance_name)
diff --git a/samples/snippets/instances/reset.py b/samples/snippets/instances/reset.py
index a04003f17..1764ab632 100644
--- a/samples/snippets/instances/reset.py
+++ b/samples/snippets/instances/reset.py
@@ -20,11 +20,60 @@
# [START compute_reset_instance]
+import sys
import time
+from typing import Any
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def reset_instance(project_id: str, zone: str, instance_name: str) -> None:
"""
Resets a stopped Google Compute Engine instance (with unencrypted disks).
@@ -34,17 +83,13 @@ def reset_instance(project_id: str, zone: str, instance_name: str) -> None:
instance_name: name of the instance your want to reset.
"""
instance_client = compute_v1.InstancesClient()
- op_client = compute_v1.ZoneOperationsClient()
- op = instance_client.reset_unary(
+ operation = instance_client.reset(
project=project_id, zone=zone, instance=instance_name
)
- start = time.time()
- while op.status != compute_v1.Operation.Status.DONE:
- op = op_client.wait(operation=op.name, zone=zone, project=project_id)
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
+ wait_for_extended_operation(operation, "instance reset")
+
return
diff --git a/samples/snippets/instances/resume.py b/samples/snippets/instances/resume.py
new file mode 100644
index 000000000..2c6cf68cb
--- /dev/null
+++ b/samples/snippets/instances/resume.py
@@ -0,0 +1,104 @@
+# 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.
+# flake8: noqa
+
+
+# This file is automatically generated. Please do not modify it directly.
+# Find the relevant recipe file in the samples/recipes or samples/ingredients
+# directory and apply your changes there.
+
+
+# [START compute_resume_instance]
+import sys
+import time
+from typing import Any
+
+from google.api_core.extended_operation import ExtendedOperation
+from google.cloud import compute_v1
+
+
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
+def resume_instance(project_id: str, zone: str, instance_name: str) -> None:
+ """
+ Resume a suspended Google Compute Engine instance (with unencrypted disks).
+ Args:
+ project_id: project ID or project number of the Cloud project your instance belongs to.
+ zone: name of the zone your instance belongs to.
+ instance_name: name of the instance your want to resume.
+ """
+ instance_client = compute_v1.InstancesClient()
+
+ instance = instance_client.get(
+ project=project_id, zone=zone, instance=instance_name
+ )
+ if instance.status != compute_v1.Instance.Status.SUSPENDED.name:
+ raise RuntimeError(
+ f"Only suspended instances can be resumed. "
+ f"Instance {instance_name} is in {instance.status} state."
+ )
+
+ operation = instance_client.resume(
+ project=project_id, zone=zone, instance=instance_name
+ )
+
+ wait_for_extended_operation(operation, "instance resumption")
+ return
+
+
+# [END compute_resume_instance]
diff --git a/samples/snippets/instances/start.py b/samples/snippets/instances/start.py
index 4548a8cd9..9dbf039ae 100644
--- a/samples/snippets/instances/start.py
+++ b/samples/snippets/instances/start.py
@@ -20,11 +20,60 @@
# [START compute_start_instance]
+import sys
import time
+from typing import Any
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def start_instance(project_id: str, zone: str, instance_name: str) -> None:
"""
Starts a stopped Google Compute Engine instance (with unencrypted disks).
@@ -34,17 +83,12 @@ def start_instance(project_id: str, zone: str, instance_name: str) -> None:
instance_name: name of the instance your want to start.
"""
instance_client = compute_v1.InstancesClient()
- op_client = compute_v1.ZoneOperationsClient()
- op = instance_client.start_unary(
+ operation = instance_client.start(
project=project_id, zone=zone, instance=instance_name
)
- start = time.time()
- while op.status != compute_v1.Operation.Status.DONE:
- op = op_client.wait(operation=op.name, zone=zone, project=project_id)
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
+ wait_for_extended_operation(operation, "instance start")
return
diff --git a/samples/snippets/instances/start_encrypted.py b/samples/snippets/instances/start_encrypted.py
index 401b2b0cc..ef08fb1dd 100644
--- a/samples/snippets/instances/start_encrypted.py
+++ b/samples/snippets/instances/start_encrypted.py
@@ -20,11 +20,60 @@
# [START compute_start_enc_instance]
+import sys
import time
+from typing import Any
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def start_instance_with_encryption_key(
project_id: str, zone: str, instance_name: str, key: bytes
):
@@ -39,7 +88,6 @@ def start_instance_with_encryption_key(
https://cloud.google.com/compute/docs/disks/customer-supplied-encryption#specifications
"""
instance_client = compute_v1.InstancesClient()
- op_client = compute_v1.ZoneOperationsClient()
instance_data = instance_client.get(
project=project_id, zone=zone, instance=instance_name
@@ -55,18 +103,14 @@ def start_instance_with_encryption_key(
enc_data = compute_v1.InstancesStartWithEncryptionKeyRequest()
enc_data.disks = [disk_data]
- op = instance_client.start_with_encryption_key_unary(
+ operation = instance_client.start_with_encryption_key(
project=project_id,
zone=zone,
instance=instance_name,
instances_start_with_encryption_key_request_resource=enc_data,
)
- start = time.time()
- while op.status != compute_v1.Operation.Status.DONE:
- op = op_client.wait(operation=op.name, zone=zone, project=project_id)
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
+ wait_for_extended_operation(operation, "instance start (with encrypted disk)")
return
diff --git a/samples/snippets/instances/stop.py b/samples/snippets/instances/stop.py
index b8b2f8b4e..7cbaeb16b 100644
--- a/samples/snippets/instances/stop.py
+++ b/samples/snippets/instances/stop.py
@@ -20,11 +20,60 @@
# [START compute_stop_instance]
+import sys
import time
+from typing import Any
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def stop_instance(project_id: str, zone: str, instance_name: str) -> None:
"""
Stops a running Google Compute Engine instance.
@@ -34,17 +83,11 @@ def stop_instance(project_id: str, zone: str, instance_name: str) -> None:
instance_name: name of the instance your want to stop.
"""
instance_client = compute_v1.InstancesClient()
- op_client = compute_v1.ZoneOperationsClient()
- op = instance_client.stop_unary(
+ operation = instance_client.stop(
project=project_id, zone=zone, instance=instance_name
)
-
- start = time.time()
- while op.status != compute_v1.Operation.Status.DONE:
- op = op_client.wait(operation=op.name, zone=zone, project=project_id)
- if time.time() - start >= 300: # 5 minutes
- raise TimeoutError()
+ wait_for_extended_operation(operation, "instance stopping")
return
diff --git a/samples/snippets/instances/suspend.py b/samples/snippets/instances/suspend.py
new file mode 100644
index 000000000..bf4a4c30d
--- /dev/null
+++ b/samples/snippets/instances/suspend.py
@@ -0,0 +1,95 @@
+# 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.
+# flake8: noqa
+
+
+# This file is automatically generated. Please do not modify it directly.
+# Find the relevant recipe file in the samples/recipes or samples/ingredients
+# directory and apply your changes there.
+
+
+# [START compute_suspend_instance]
+import sys
+import time
+from typing import Any
+
+from google.api_core.extended_operation import ExtendedOperation
+from google.cloud import compute_v1
+
+
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
+def suspend_instance(project_id: str, zone: str, instance_name: str) -> None:
+ """
+ Suspend a running Google Compute Engine instance.
+ Args:
+ project_id: project ID or project number of the Cloud project your instance belongs to.
+ zone: name of the zone your instance belongs to.
+ instance_name: name of the instance your want to suspend.
+ """
+ instance_client = compute_v1.InstancesClient()
+
+ operation = instance_client.suspend(
+ project=project_id, zone=zone, instance=instance_name
+ )
+
+ wait_for_extended_operation(operation, "instance suspend")
+ return
+
+
+# [END compute_suspend_instance]
diff --git a/samples/snippets/snapshots/create.py b/samples/snippets/snapshots/create.py
index adfdf8e28..0e9a472df 100644
--- a/samples/snippets/snapshots/create.py
+++ b/samples/snippets/snapshots/create.py
@@ -21,10 +21,58 @@
# [START compute_snapshot_create]
import sys
+from typing import Any
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def create_snapshot(
project_id: str, zone: str, disk_name: str, snapshot_name: str
) -> compute_v1.Snapshot:
@@ -47,19 +95,9 @@ def create_snapshot(
snapshot.name = snapshot_name
snapshot_client = compute_v1.SnapshotsClient()
- operation = snapshot_client.insert_unary(
- project=project_id, snapshot_resource=snapshot
- )
- op_client = compute_v1.GlobalOperationsClient()
- operation = op_client.wait(project=project_id, operation=operation.name)
-
- if operation.error:
- print("Error during snapshot creation:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warnings during snapshot creation:\n", file=sys.stderr)
- for warning in operation.warnings:
- print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+ operation = snapshot_client.insert(project=project_id, snapshot_resource=snapshot)
+
+ wait_for_extended_operation(operation, "snapshot creation")
return snapshot_client.get(project=project_id, snapshot=snapshot_name)
diff --git a/samples/snippets/snapshots/delete.py b/samples/snippets/snapshots/delete.py
index ffa0abab5..ebbf0e04b 100644
--- a/samples/snippets/snapshots/delete.py
+++ b/samples/snippets/snapshots/delete.py
@@ -21,11 +21,58 @@
# [START compute_snapshot_delete]
import sys
-from typing import NoReturn
+from typing import Any, NoReturn
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def delete_snapshot(project_id: str, snapshot_name: str) -> NoReturn:
"""
Delete a snapshot of a disk.
@@ -36,17 +83,9 @@ def delete_snapshot(project_id: str, snapshot_name: str) -> NoReturn:
"""
snapshot_client = compute_v1.SnapshotsClient()
- operation = snapshot_client.delete_unary(project=project_id, snapshot=snapshot_name)
- op_client = compute_v1.GlobalOperationsClient()
- operation = op_client.wait(project=project_id, operation=operation.name)
+ operation = snapshot_client.delete(project=project_id, snapshot=snapshot_name)
- if operation.error:
- print("Error during snapshot deletion:", operation.error, file=sys.stderr)
- raise RuntimeError(operation.error)
- if operation.warnings:
- print("Warnings during snapshot deletion:\n", file=sys.stderr)
- for warning in operation.warnings:
- print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+ wait_for_extended_operation(operation, "snapshot deletion")
return
diff --git a/samples/snippets/tests/test_create_vm.py b/samples/snippets/tests/test_create_vm.py
index fbda262ea..58382ed92 100644
--- a/samples/snippets/tests/test_create_vm.py
+++ b/samples/snippets/tests/test_create_vm.py
@@ -230,9 +230,6 @@ def test_create_with_existing_disks(boot_disk, empty_disk):
[boot_disk.name, empty_disk.name])
try:
- print(instance.disks)
- for disk in instance.disks:
- print(disk, dir(disk), type(disk), disk.disk_size_gb)
assert any(
disk.disk_size_gb == 13 for disk in instance.disks
)
diff --git a/samples/snippets/tests/test_instance_suspend_resume.py b/samples/snippets/tests/test_instance_suspend_resume.py
new file mode 100644
index 000000000..a6f2ca103
--- /dev/null
+++ b/samples/snippets/tests/test_instance_suspend_resume.py
@@ -0,0 +1,69 @@
+# 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.
+import time
+import uuid
+
+import google.auth
+from google.cloud import compute_v1
+import pytest
+
+
+from ..images.get import get_image_from_family
+from ..instances.create import create_instance, disk_from_image
+from ..instances.delete import delete_instance
+from ..instances.resume import resume_instance
+from ..instances.suspend import suspend_instance
+
+PROJECT = google.auth.default()[1]
+
+INSTANCE_ZONE = "europe-central2-b"
+
+
+def _get_status(instance: compute_v1.Instance) -> compute_v1.Instance.Status:
+ instance_client = compute_v1.InstancesClient()
+ return instance_client.get(
+ project=PROJECT, zone=INSTANCE_ZONE, instance=instance.name
+ ).status
+
+
+@pytest.fixture
+def compute_instance():
+ instance_name = "test-instance-" + uuid.uuid4().hex[:10]
+ newest_debian = get_image_from_family(project="ubuntu-os-cloud", family="ubuntu-2004-lts")
+ disk_type = f"zones/{INSTANCE_ZONE}/diskTypes/pd-standard"
+ disks = [disk_from_image(disk_type, 100, True, newest_debian.self_link)]
+ instance = create_instance(
+ PROJECT, INSTANCE_ZONE, instance_name, disks
+ )
+ yield instance
+
+ delete_instance(PROJECT, INSTANCE_ZONE, instance_name)
+
+
+def test_instance_suspend_resume(compute_instance):
+ assert _get_status(compute_instance) == compute_v1.Instance.Status.RUNNING.name
+
+ # Once the machine is running, give it some time to fully start all processes
+ # before trying to suspend it
+ time.sleep(45)
+
+ suspend_instance(PROJECT, INSTANCE_ZONE, compute_instance.name)
+
+ while _get_status(compute_instance) == compute_v1.Instance.Status.SUSPENDING.name:
+ time.sleep(5)
+
+ assert _get_status(compute_instance) == compute_v1.Instance.Status.SUSPENDED.name
+
+ resume_instance(PROJECT, INSTANCE_ZONE, compute_instance.name)
+ assert _get_status(compute_instance) == compute_v1.Instance.Status.RUNNING.name
diff --git a/samples/snippets/usage_report/usage_reports.py b/samples/snippets/usage_report/usage_reports.py
index 85e5ea9cd..1c89bf3e8 100644
--- a/samples/snippets/usage_report/usage_reports.py
+++ b/samples/snippets/usage_report/usage_reports.py
@@ -26,6 +26,10 @@
# [START compute_usage_report_set]
# [START compute_usage_report_get]
# [START compute_usage_report_disable]
+import sys
+from typing import Any
+
+from google.api_core.extended_operation import ExtendedOperation
from google.cloud import compute_v1
@@ -35,6 +39,54 @@
# [START compute_usage_report_set]
+
+
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def set_usage_export_bucket(
project_id: str, bucket_name: str, report_name_prefix: str = ""
) -> None:
@@ -64,14 +116,11 @@ def set_usage_export_bucket(
)
projects_client = compute_v1.ProjectsClient()
- operation = projects_client.set_usage_export_bucket_unary(
+ operation = projects_client.set_usage_export_bucket(
project=project_id, usage_export_location_resource=usage_export_location
)
- op_client = compute_v1.GlobalOperationsClient()
-
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = op_client.wait(operation=operation.name, project=project_id)
+ wait_for_extended_operation(operation, "setting GCE usage bucket")
# [END compute_usage_report_set]
@@ -115,6 +164,54 @@ def get_usage_export_bucket(project_id: str) -> compute_v1.UsageExportLocation:
# [START compute_usage_report_disable]
+
+
+def wait_for_extended_operation(
+ operation: ExtendedOperation, verbose_name: str = "operation", timeout: int = 300
+) -> Any:
+ """
+ This method will wait for the extended (long-running) operation to
+ complete. If the operation is successful, it will return its result.
+ If the operation ends with an error, an exception will be raised.
+ If there were any warnings during the execution of the operation
+ they will be printed to sys.stderr.
+
+ Args:
+ operation: a long-running operation you want to wait on.
+ verbose_name: (optional) a more verbose name of the operation,
+ used only during error and warning reporting.
+ timeout: how long (in seconds) to wait for operation to finish.
+ If None, wait indefinitely.
+
+ Returns:
+ Whatever the operation.result() returns.
+
+ Raises:
+ This method will raise the exception received from `operation.exception()`
+ or RuntimeError if there is no exception set, but there is an `error_code`
+ set for the `operation`.
+
+ In case of an operation taking longer than `timeout` seconds to complete,
+ a `concurrent.futures.TimeoutError` will be raised.
+ """
+ result = operation.result(timeout=timeout)
+
+ if operation.error_code:
+ print(
+ f"Error during {verbose_name}: [Code: {operation.error_code}]: {operation.error_message}",
+ file=sys.stderr,
+ )
+ print(f"Operation ID: {operation.name}")
+ raise operation.exception() or RuntimeError(operation.error_message)
+
+ if operation.warnings:
+ print(f"Warnings during {verbose_name}:\n", file=sys.stderr)
+ for warning in operation.warnings:
+ print(f" - {warning.code}: {warning.message}", file=sys.stderr)
+
+ return result
+
+
def disable_usage_export(project_id: str) -> None:
"""
Disable Compute Engine usage export bucket for the Cloud Project.
@@ -126,14 +223,11 @@ def disable_usage_export(project_id: str) -> None:
# Setting `usage_export_location_resource` to an
# empty object will disable the usage report generation.
- operation = projects_client.set_usage_export_bucket_unary(
+ operation = projects_client.set_usage_export_bucket(
project=project_id, usage_export_location_resource={}
)
- op_client = compute_v1.GlobalOperationsClient()
-
- while operation.status != compute_v1.Operation.Status.DONE:
- operation = op_client.wait(operation=operation.name, project=project_id)
+ wait_for_extended_operation(operation, "disabling GCE usage bucket")
# [END compute_usage_report_disable]
diff --git a/setup.py b/setup.py
index e4faf73aa..54647dbf5 100644
--- a/setup.py
+++ b/setup.py
@@ -19,7 +19,7 @@
import os
import setuptools # type: ignore
-version = "1.2.0"
+version = "1.3.0"
package_root = os.path.abspath(os.path.dirname(__file__))
@@ -44,7 +44,7 @@
platforms="Posix; MacOS X; Windows",
include_package_data=True,
install_requires=(
- "google-api-core[grpc] >= 2.4.0, <3.0.0dev",
+ "google-api-core[grpc] >= 2.7.0, <3.0.0dev",
"proto-plus >= 1.19.7",
"dataclasses >= 0.6; python_version < '3.7'",
),
diff --git a/testing/constraints-3.6.txt b/testing/constraints-3.6.txt
index 3931a2ca4..3ab1eb09b 100644
--- a/testing/constraints-3.6.txt
+++ b/testing/constraints-3.6.txt
@@ -5,6 +5,6 @@
# 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==2.4.0
+google-api-core==2.7.0
proto-plus==1.19.7
dataclasses==0.6.0
diff --git a/tests/unit/gapic/compute_v1/test_accelerator_types.py b/tests/unit/gapic/compute_v1/test_accelerator_types.py
index a8223fd67..153d59834 100644
--- a/tests/unit/gapic/compute_v1/test_accelerator_types.py
+++ b/tests/unit/gapic/compute_v1/test_accelerator_types.py
@@ -1622,6 +1622,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = AcceleratorTypesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_accelerator_types_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -1655,6 +1668,14 @@ def test_accelerator_types_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_accelerator_types_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_addresses.py b/tests/unit/gapic/compute_v1/test_addresses.py
index 8c42368df..fc05e7323 100644
--- a/tests/unit/gapic/compute_v1/test_addresses.py
+++ b/tests/unit/gapic/compute_v1/test_addresses.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -862,7 +864,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = AddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -906,10 +908,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -934,7 +936,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(request_type=compute.DeleteAddressRequest):
+def test_delete_rest_required_fields(request_type=compute.DeleteAddressRequest):
transport_class = transports.AddressesRestTransport
request_init = {}
@@ -963,9 +965,615 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteAddressReq
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "address" in jsonified_request
+ assert jsonified_request["address"] == "address_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = AddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "delete",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_rest_unset_required_fields():
+ transport = transports.AddressesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "address",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_rest_interceptors(null_interceptor):
+ transport = transports.AddressesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.AddressesRestInterceptor(),
+ )
+ client = AddressesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.AddressesRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.AddressesRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteAddressRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteAddressRequest
+):
+ client = AddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "address": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete(request)
+
+
+def test_delete_rest_flattened():
+ client = AddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "address": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ address="address_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/addresses/{address}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_rest_flattened_error(transport: str = "rest"):
+ client = AddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete(
+ compute.DeleteAddressRequest(),
+ project="project_value",
+ region="region_value",
+ address="address_value",
+ )
+
+
+def test_delete_rest_error():
+ client = AddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DeleteAddressRequest,
+ dict,
+ ],
+)
+def test_delete_unary_rest(request_type):
+ client = AddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "address": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.delete_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_delete_unary_rest_required_fields(request_type=compute.DeleteAddressRequest):
+ transport_class = transports.AddressesRestTransport
+
+ request_init = {}
+ request_init["address"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["address"] = "address_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "address" in jsonified_request
+ assert jsonified_request["address"] == "address_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = AddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "delete",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_unary_rest_unset_required_fields():
+ transport = transports.AddressesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "address",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_unary_rest_interceptors(null_interceptor):
+ transport = transports.AddressesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.AddressesRestInterceptor(),
+ )
+ client = AddressesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.AddressesRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.AddressesRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteAddressRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteAddressRequest
+):
+ client = AddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "address": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete_unary(request)
+
+
+def test_delete_unary_rest_flattened():
+ client = AddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "address": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ address="address_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/addresses/{address}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+ client = AddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete_unary(
+ compute.DeleteAddressRequest(),
+ project="project_value",
+ region="region_value",
+ address="address_value",
+ )
+
+
+def test_delete_unary_rest_error():
+ client = AddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetAddressRequest,
+ dict,
+ ],
+)
+def test_get_rest(request_type):
+ client = AddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "address": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Address(
+ address="address_value",
+ address_type="address_type_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ id=205,
+ ip_version="ip_version_value",
+ kind="kind_value",
+ name="name_value",
+ network="network_value",
+ network_tier="network_tier_value",
+ prefix_length=1391,
+ purpose="purpose_value",
+ region="region_value",
+ self_link="self_link_value",
+ status="status_value",
+ subnetwork="subnetwork_value",
+ users=["users_value"],
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Address.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Address)
+ assert response.address == "address_value"
+ assert response.address_type == "address_type_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.id == 205
+ assert response.ip_version == "ip_version_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.network == "network_value"
+ assert response.network_tier == "network_tier_value"
+ assert response.prefix_length == 1391
+ assert response.purpose == "purpose_value"
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.status == "status_value"
+ assert response.subnetwork == "subnetwork_value"
+ assert response.users == ["users_value"]
+
+
+def test_get_rest_required_fields(request_type=compute.GetAddressRequest):
+ transport_class = transports.AddressesRestTransport
+
+ request_init = {}
+ request_init["address"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["address"] = "address_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -983,7 +1591,7 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteAddressReq
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Address()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -994,32 +1602,32 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteAddressReq
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "get",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Address.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.AddressesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"address",
@@ -1031,7 +1639,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.AddressesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.AddressesRestInterceptor(),
@@ -1042,9 +1650,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.AddressesRestInterceptor, "post_delete"
+ transports.AddressesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.AddressesRestInterceptor, "pre_delete"
+ transports.AddressesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1059,17 +1667,17 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.Address.to_json(compute.Address())
- request = compute.DeleteAddressRequest()
+ request = compute.GetAddressRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.Address
- client.delete_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1081,8 +1689,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteAddressRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetAddressRequest
):
client = AddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1102,10 +1710,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.get(request)
-def test_delete_unary_rest_flattened():
+def test_get_rest_flattened():
client = AddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1114,7 +1722,7 @@ def test_delete_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Address()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1134,12 +1742,12 @@ def test_delete_unary_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Address.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1152,7 +1760,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = AddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1161,15 +1769,15 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteAddressRequest(),
+ client.get(
+ compute.GetAddressRequest(),
project="project_value",
region="region_value",
address="address_value",
)
-def test_delete_unary_rest_error():
+def test_get_rest_error():
client = AddressesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1178,77 +1786,105 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetAddressRequest,
+ compute.InsertAddressRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_insert_rest(request_type):
client = AddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "address": "sample3"}
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["address_resource"] = {
+ "address": "address_value",
+ "address_type": "address_type_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "prefix_length": 1391,
+ "purpose": "purpose_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "subnetwork": "subnetwork_value",
+ "users": ["users_value_1", "users_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Address(
- address="address_value",
- address_type="address_type_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
- ip_version="ip_version_value",
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- network="network_value",
- network_tier="network_tier_value",
- prefix_length=1391,
- purpose="purpose_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- status="status_value",
- subnetwork="subnetwork_value",
- users=["users_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Address.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Address)
- assert response.address == "address_value"
- assert response.address_type == "address_type_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
- assert response.ip_version == "ip_version_value"
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.network == "network_value"
- assert response.network_tier == "network_tier_value"
- assert response.prefix_length == 1391
- assert response.purpose == "purpose_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.status == "status_value"
- assert response.subnetwork == "subnetwork_value"
- assert response.users == ["users_value"]
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_rest_required_fields(request_type=compute.GetAddressRequest):
+def test_insert_rest_required_fields(request_type=compute.InsertAddressRequest):
transport_class = transports.AddressesRestTransport
request_init = {}
- request_init["address"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -1262,23 +1898,22 @@ def test_get_rest_required_fields(request_type=compute.GetAddressRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["address"] = "address_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "address" in jsonified_request
- assert jsonified_request["address"] == "address_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -1291,7 +1926,7 @@ def test_get_rest_required_fields(request_type=compute.GetAddressRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Address()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1302,35 +1937,36 @@ def test_get_rest_required_fields(request_type=compute.GetAddressRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Address.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.AddressesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
- "address",
+ "addressResource",
"project",
"region",
)
@@ -1339,7 +1975,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.AddressesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.AddressesRestInterceptor(),
@@ -1350,9 +1986,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.AddressesRestInterceptor, "post_get"
+ transports.AddressesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.AddressesRestInterceptor, "pre_get"
+ transports.AddressesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1367,17 +2003,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Address.to_json(compute.Address())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetAddressRequest()
+ request = compute.InsertAddressRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Address
+ post.return_value = compute.Operation
- client.get(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1389,8 +2025,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetAddressRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertAddressRequest
):
client = AddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1398,7 +2034,26 @@ def test_get_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "address": "sample3"}
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["address_resource"] = {
+ "address": "address_value",
+ "address_type": "address_type_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "prefix_length": 1391,
+ "purpose": "purpose_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "subnetwork": "subnetwork_value",
+ "users": ["users_value_1", "users_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1410,10 +2065,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.insert(request)
-def test_get_rest_flattened():
+def test_insert_rest_flattened():
client = AddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1422,45 +2077,41 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Address()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "region": "sample2",
- "address": "sample3",
- }
+ sample_request = {"project": "sample1", "region": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- address="address_value",
+ address_resource=compute.Address(address="address_value"),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Address.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/addresses/{address}"
+ "%s/compute/v1/projects/{project}/regions/{region}/addresses"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = AddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1469,15 +2120,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetAddressRequest(),
+ client.insert(
+ compute.InsertAddressRequest(),
project="project_value",
region="region_value",
- address="address_value",
+ address_resource=compute.Address(address="address_value"),
)
-def test_get_rest_error():
+def test_insert_rest_error():
client = AddressesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1557,28 +2208,6 @@ def test_insert_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_insert_unary_rest_required_fields(request_type=compute.InsertAddressRequest):
@@ -2253,6 +2882,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = AddressesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_addresses_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2288,6 +2930,14 @@ def test_addresses_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_addresses_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_autoscalers.py b/tests/unit/gapic/compute_v1/test_autoscalers.py
index 642400d85..e2ab20a3c 100644
--- a/tests/unit/gapic/compute_v1/test_autoscalers.py
+++ b/tests/unit/gapic/compute_v1/test_autoscalers.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -871,7 +873,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -915,10 +917,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -943,9 +945,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteAutoscalerRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteAutoscalerRequest):
transport_class = transports.AutoscalersRestTransport
request_init = {}
@@ -1016,14 +1016,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.AutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1042,7 +1042,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.AutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1082,7 +1082,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1094,7 +1094,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteAutoscalerRequest
):
client = AutoscalersClient(
@@ -1115,10 +1115,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1152,7 +1152,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1165,7 +1165,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1174,7 +1174,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteAutoscalerRequest(),
project="project_value",
zone="zone_value",
@@ -1182,7 +1182,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1191,11 +1191,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetAutoscalerRequest,
+ compute.DeleteAutoscalerRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1208,44 +1208,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Autoscaler(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- recommended_size=1693,
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- status="status_value",
- target="target_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Autoscaler.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Autoscaler)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.recommended_size == 1693
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.status == "status_value"
- assert response.target == "target_value"
- assert response.zone == "zone_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetAutoscalerRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteAutoscalerRequest,
+):
transport_class = transports.AutoscalersRestTransport
request_init = {}
@@ -1263,7 +1265,7 @@ def test_get_rest_required_fields(request_type=compute.GetAutoscalerRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1274,7 +1276,9 @@ def test_get_rest_required_fields(request_type=compute.GetAutoscalerRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1292,7 +1296,7 @@ def test_get_rest_required_fields(request_type=compute.GetAutoscalerRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Autoscaler()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1303,32 +1307,32 @@ def test_get_rest_required_fields(request_type=compute.GetAutoscalerRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Autoscaler.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.AutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"autoscaler",
@@ -1340,7 +1344,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.AutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1353,9 +1357,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.AutoscalersRestInterceptor, "post_get"
+ transports.AutoscalersRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.AutoscalersRestInterceptor, "pre_get"
+ transports.AutoscalersRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1370,17 +1374,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Autoscaler.to_json(compute.Autoscaler())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetAutoscalerRequest()
+ request = compute.DeleteAutoscalerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Autoscaler
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1392,8 +1396,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetAutoscalerRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteAutoscalerRequest
):
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1413,10 +1417,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1425,7 +1429,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Autoscaler()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1445,12 +1449,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Autoscaler.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1463,7 +1467,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1472,15 +1476,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetAutoscalerRequest(),
+ client.delete_unary(
+ compute.DeleteAutoscalerRequest(),
project="project_value",
zone="zone_value",
autoscaler="autoscaler_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1489,132 +1493,65 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertAutoscalerRequest,
+ compute.GetAutoscalerRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
- request_init["autoscaler_resource"] = {
- "autoscaling_policy": {
- "cool_down_period_sec": 2112,
- "cpu_utilization": {
- "predictive_method": "predictive_method_value",
- "utilization_target": 0.19540000000000002,
- },
- "custom_metric_utilizations": [
- {
- "filter": "filter_value",
- "metric": "metric_value",
- "single_instance_assignment": 0.2766,
- "utilization_target": 0.19540000000000002,
- "utilization_target_type": "utilization_target_type_value",
- }
- ],
- "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
- "max_num_replicas": 1703,
- "min_num_replicas": 1701,
- "mode": "mode_value",
- "scale_in_control": {
- "max_scaled_in_replicas": {
- "calculated": 1042,
- "fixed": 528,
- "percent": 753,
- },
- "time_window_sec": 1600,
- },
- "scaling_schedules": {},
- },
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "recommended_size": 1693,
- "region": "region_value",
- "scaling_schedule_status": {},
- "self_link": "self_link_value",
- "status": "status_value",
- "status_details": [{"message": "message_value", "type_": "type__value"}],
- "target": "target_value",
- "zone": "zone_value",
- }
+ request_init = {"project": "sample1", "zone": "sample2", "autoscaler": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.Autoscaler(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ recommended_size=1693,
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
+ status="status_value",
+ target="target_value",
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Autoscaler.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.Autoscaler)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.recommended_size == 1693
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
+ assert response.status == "status_value"
+ assert response.target == "target_value"
assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertAutoscalerRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetAutoscalerRequest):
transport_class = transports.AutoscalersRestTransport
request_init = {}
+ request_init["autoscaler"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -1628,22 +1565,23 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["autoscaler"] = "autoscaler_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "autoscaler" in jsonified_request
+ assert jsonified_request["autoscaler"] == "autoscaler_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -1656,7 +1594,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Autoscaler()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1667,36 +1605,35 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Autoscaler.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.AutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
- "autoscalerResource",
+ "autoscaler",
"project",
"zone",
)
@@ -1705,7 +1642,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.AutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1718,9 +1655,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.AutoscalersRestInterceptor, "post_insert"
+ transports.AutoscalersRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.AutoscalersRestInterceptor, "pre_insert"
+ transports.AutoscalersRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1735,17 +1672,17 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.Autoscaler.to_json(compute.Autoscaler())
- request = compute.InsertAutoscalerRequest()
+ request = compute.GetAutoscalerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.Autoscaler
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1757,8 +1694,1523 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertAutoscalerRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetAutoscalerRequest
+):
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "autoscaler": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Autoscaler()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "autoscaler": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ autoscaler="autoscaler_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Autoscaler.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/autoscalers/{autoscaler}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetAutoscalerRequest(),
+ project="project_value",
+ zone="zone_value",
+ autoscaler="autoscaler_value",
+ )
+
+
+def test_get_rest_error():
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertAutoscalerRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["autoscaler_resource"] = {
+ "autoscaling_policy": {
+ "cool_down_period_sec": 2112,
+ "cpu_utilization": {
+ "predictive_method": "predictive_method_value",
+ "utilization_target": 0.19540000000000002,
+ },
+ "custom_metric_utilizations": [
+ {
+ "filter": "filter_value",
+ "metric": "metric_value",
+ "single_instance_assignment": 0.2766,
+ "utilization_target": 0.19540000000000002,
+ "utilization_target_type": "utilization_target_type_value",
+ }
+ ],
+ "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
+ "max_num_replicas": 1703,
+ "min_num_replicas": 1701,
+ "mode": "mode_value",
+ "scale_in_control": {
+ "max_scaled_in_replicas": {
+ "calculated": 1042,
+ "fixed": 528,
+ "percent": 753,
+ },
+ "time_window_sec": 1600,
+ },
+ "scaling_schedules": {},
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recommended_size": 1693,
+ "region": "region_value",
+ "scaling_schedule_status": {},
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "status_details": [{"message": "message_value", "type_": "type__value"}],
+ "target": "target_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertAutoscalerRequest):
+ transport_class = transports.AutoscalersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.AutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "autoscalerResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.AutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.AutoscalersRestInterceptor(),
+ )
+ client = AutoscalersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.AutoscalersRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.AutoscalersRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertAutoscalerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertAutoscalerRequest
+):
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["autoscaler_resource"] = {
+ "autoscaling_policy": {
+ "cool_down_period_sec": 2112,
+ "cpu_utilization": {
+ "predictive_method": "predictive_method_value",
+ "utilization_target": 0.19540000000000002,
+ },
+ "custom_metric_utilizations": [
+ {
+ "filter": "filter_value",
+ "metric": "metric_value",
+ "single_instance_assignment": 0.2766,
+ "utilization_target": 0.19540000000000002,
+ "utilization_target_type": "utilization_target_type_value",
+ }
+ ],
+ "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
+ "max_num_replicas": 1703,
+ "min_num_replicas": 1701,
+ "mode": "mode_value",
+ "scale_in_control": {
+ "max_scaled_in_replicas": {
+ "calculated": 1042,
+ "fixed": 528,
+ "percent": 753,
+ },
+ "time_window_sec": 1600,
+ },
+ "scaling_schedules": {},
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recommended_size": 1693,
+ "region": "region_value",
+ "scaling_schedule_status": {},
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "status_details": [{"message": "message_value", "type_": "type__value"}],
+ "target": "target_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ autoscaler_resource=compute.Autoscaler(
+ autoscaling_policy=compute.AutoscalingPolicy(cool_down_period_sec=2112)
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/autoscalers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertAutoscalerRequest(),
+ project="project_value",
+ zone="zone_value",
+ autoscaler_resource=compute.Autoscaler(
+ autoscaling_policy=compute.AutoscalingPolicy(cool_down_period_sec=2112)
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertAutoscalerRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["autoscaler_resource"] = {
+ "autoscaling_policy": {
+ "cool_down_period_sec": 2112,
+ "cpu_utilization": {
+ "predictive_method": "predictive_method_value",
+ "utilization_target": 0.19540000000000002,
+ },
+ "custom_metric_utilizations": [
+ {
+ "filter": "filter_value",
+ "metric": "metric_value",
+ "single_instance_assignment": 0.2766,
+ "utilization_target": 0.19540000000000002,
+ "utilization_target_type": "utilization_target_type_value",
+ }
+ ],
+ "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
+ "max_num_replicas": 1703,
+ "min_num_replicas": 1701,
+ "mode": "mode_value",
+ "scale_in_control": {
+ "max_scaled_in_replicas": {
+ "calculated": 1042,
+ "fixed": 528,
+ "percent": 753,
+ },
+ "time_window_sec": 1600,
+ },
+ "scaling_schedules": {},
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recommended_size": 1693,
+ "region": "region_value",
+ "scaling_schedule_status": {},
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "status_details": [{"message": "message_value", "type_": "type__value"}],
+ "target": "target_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertAutoscalerRequest,
+):
+ transport_class = transports.AutoscalersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.AutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "autoscalerResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.AutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.AutoscalersRestInterceptor(),
+ )
+ client = AutoscalersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.AutoscalersRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.AutoscalersRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertAutoscalerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertAutoscalerRequest
+):
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["autoscaler_resource"] = {
+ "autoscaling_policy": {
+ "cool_down_period_sec": 2112,
+ "cpu_utilization": {
+ "predictive_method": "predictive_method_value",
+ "utilization_target": 0.19540000000000002,
+ },
+ "custom_metric_utilizations": [
+ {
+ "filter": "filter_value",
+ "metric": "metric_value",
+ "single_instance_assignment": 0.2766,
+ "utilization_target": 0.19540000000000002,
+ "utilization_target_type": "utilization_target_type_value",
+ }
+ ],
+ "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
+ "max_num_replicas": 1703,
+ "min_num_replicas": 1701,
+ "mode": "mode_value",
+ "scale_in_control": {
+ "max_scaled_in_replicas": {
+ "calculated": 1042,
+ "fixed": 528,
+ "percent": 753,
+ },
+ "time_window_sec": 1600,
+ },
+ "scaling_schedules": {},
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recommended_size": 1693,
+ "region": "region_value",
+ "scaling_schedule_status": {},
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "status_details": [{"message": "message_value", "type_": "type__value"}],
+ "target": "target_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ autoscaler_resource=compute.Autoscaler(
+ autoscaling_policy=compute.AutoscalingPolicy(cool_down_period_sec=2112)
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/autoscalers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertAutoscalerRequest(),
+ project="project_value",
+ zone="zone_value",
+ autoscaler_resource=compute.Autoscaler(
+ autoscaling_policy=compute.AutoscalingPolicy(cool_down_period_sec=2112)
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListAutoscalersRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.AutoscalerList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.AutoscalerList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListAutoscalersRequest):
+ transport_class = transports.AutoscalersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.AutoscalerList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.AutoscalerList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.AutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.AutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.AutoscalersRestInterceptor(),
+ )
+ client = AutoscalersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.AutoscalersRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.AutoscalersRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.AutoscalerList.to_json(
+ compute.AutoscalerList()
+ )
+
+ request = compute.ListAutoscalersRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.AutoscalerList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListAutoscalersRequest
+):
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.AutoscalerList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.AutoscalerList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/autoscalers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListAutoscalersRequest(),
+ project="project_value",
+ zone="zone_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.AutoscalerList(
+ items=[
+ compute.Autoscaler(),
+ compute.Autoscaler(),
+ compute.Autoscaler(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.AutoscalerList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.AutoscalerList(
+ items=[
+ compute.Autoscaler(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.AutoscalerList(
+ items=[
+ compute.Autoscaler(),
+ compute.Autoscaler(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.AutoscalerList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Autoscaler) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchAutoscalerRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["autoscaler_resource"] = {
+ "autoscaling_policy": {
+ "cool_down_period_sec": 2112,
+ "cpu_utilization": {
+ "predictive_method": "predictive_method_value",
+ "utilization_target": 0.19540000000000002,
+ },
+ "custom_metric_utilizations": [
+ {
+ "filter": "filter_value",
+ "metric": "metric_value",
+ "single_instance_assignment": 0.2766,
+ "utilization_target": 0.19540000000000002,
+ "utilization_target_type": "utilization_target_type_value",
+ }
+ ],
+ "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
+ "max_num_replicas": 1703,
+ "min_num_replicas": 1701,
+ "mode": "mode_value",
+ "scale_in_control": {
+ "max_scaled_in_replicas": {
+ "calculated": 1042,
+ "fixed": 528,
+ "percent": 753,
+ },
+ "time_window_sec": 1600,
+ },
+ "scaling_schedules": {},
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recommended_size": 1693,
+ "region": "region_value",
+ "scaling_schedule_status": {},
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "status_details": [{"message": "message_value", "type_": "type__value"}],
+ "target": "target_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchAutoscalerRequest):
+ transport_class = transports.AutoscalersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "autoscaler",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = AutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.AutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "autoscaler",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "autoscalerResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.AutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.AutoscalersRestInterceptor(),
+ )
+ client = AutoscalersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.AutoscalersRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.AutoscalersRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchAutoscalerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchAutoscalerRequest
):
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1822,10 +3274,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.patch(request)
-def test_insert_unary_rest_flattened():
+def test_patch_rest_flattened():
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1857,7 +3309,7 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1870,7 +3322,7 @@ def test_insert_unary_rest_flattened():
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1879,8 +3331,8 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertAutoscalerRequest(),
+ client.patch(
+ compute.PatchAutoscalerRequest(),
project="project_value",
zone="zone_value",
autoscaler_resource=compute.Autoscaler(
@@ -1889,7 +3341,7 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_insert_unary_rest_error():
+def test_patch_rest_error():
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1898,11 +3350,11 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListAutoscalersRequest,
+ compute.PatchAutoscalerRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_patch_unary_rest(request_type):
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1910,35 +3362,93 @@ def test_list_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["autoscaler_resource"] = {
+ "autoscaling_policy": {
+ "cool_down_period_sec": 2112,
+ "cpu_utilization": {
+ "predictive_method": "predictive_method_value",
+ "utilization_target": 0.19540000000000002,
+ },
+ "custom_metric_utilizations": [
+ {
+ "filter": "filter_value",
+ "metric": "metric_value",
+ "single_instance_assignment": 0.2766,
+ "utilization_target": 0.19540000000000002,
+ "utilization_target_type": "utilization_target_type_value",
+ }
+ ],
+ "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
+ "max_num_replicas": 1703,
+ "min_num_replicas": 1701,
+ "mode": "mode_value",
+ "scale_in_control": {
+ "max_scaled_in_replicas": {
+ "calculated": 1042,
+ "fixed": 528,
+ "percent": 753,
+ },
+ "time_window_sec": 1600,
+ },
+ "scaling_schedules": {},
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recommended_size": 1693,
+ "region": "region_value",
+ "scaling_schedule_status": {},
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "status_details": [{"message": "message_value", "type_": "type__value"}],
+ "target": "target_value",
+ "zone": "zone_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.AutoscalerList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.AutoscalerList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_list_rest_required_fields(request_type=compute.ListAutoscalersRequest):
+def test_patch_unary_rest_required_fields(request_type=compute.PatchAutoscalerRequest):
transport_class = transports.AutoscalersRestTransport
request_init = {}
@@ -1955,7 +3465,7 @@ def test_list_rest_required_fields(request_type=compute.ListAutoscalersRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1965,15 +3475,12 @@ def test_list_rest_required_fields(request_type=compute.ListAutoscalersRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
+ "autoscaler",
+ "request_id",
)
)
jsonified_request.update(unset_fields)
@@ -1991,7 +3498,7 @@ def test_list_rest_required_fields(request_type=compute.ListAutoscalersRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.AutoscalerList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2002,42 +3509,41 @@ def test_list_rest_required_fields(request_type=compute.ListAutoscalersRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.AutoscalerList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_unary_rest_unset_required_fields():
transport = transports.AutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "autoscaler",
+ "requestId",
)
)
& set(
(
+ "autoscalerResource",
"project",
"zone",
)
@@ -2046,7 +3552,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_unary_rest_interceptors(null_interceptor):
transport = transports.AutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2059,9 +3565,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.AutoscalersRestInterceptor, "post_list"
+ transports.AutoscalersRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.AutoscalersRestInterceptor, "pre_list"
+ transports.AutoscalersRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2076,19 +3582,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.AutoscalerList.to_json(
- compute.AutoscalerList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListAutoscalersRequest()
+ request = compute.PatchAutoscalerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.AutoscalerList
+ post.return_value = compute.Operation
- client.list(
+ client.patch_unary(
request,
metadata=[
("key", "val"),
@@ -2100,8 +3604,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListAutoscalersRequest
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchAutoscalerRequest
):
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2110,6 +3614,50 @@ def test_list_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["autoscaler_resource"] = {
+ "autoscaling_policy": {
+ "cool_down_period_sec": 2112,
+ "cpu_utilization": {
+ "predictive_method": "predictive_method_value",
+ "utilization_target": 0.19540000000000002,
+ },
+ "custom_metric_utilizations": [
+ {
+ "filter": "filter_value",
+ "metric": "metric_value",
+ "single_instance_assignment": 0.2766,
+ "utilization_target": 0.19540000000000002,
+ "utilization_target_type": "utilization_target_type_value",
+ }
+ ],
+ "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
+ "max_num_replicas": 1703,
+ "min_num_replicas": 1701,
+ "mode": "mode_value",
+ "scale_in_control": {
+ "max_scaled_in_replicas": {
+ "calculated": 1042,
+ "fixed": 528,
+ "percent": 753,
+ },
+ "time_window_sec": 1600,
+ },
+ "scaling_schedules": {},
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recommended_size": 1693,
+ "region": "region_value",
+ "scaling_schedule_status": {},
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "status_details": [{"message": "message_value", "type_": "type__value"}],
+ "target": "target_value",
+ "zone": "zone_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2121,10 +3669,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch_unary(request)
-def test_list_rest_flattened():
+def test_patch_unary_rest_flattened():
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2133,7 +3681,7 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.AutoscalerList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "zone": "sample2"}
@@ -2142,18 +3690,21 @@ def test_list_rest_flattened():
mock_args = dict(
project="project_value",
zone="zone_value",
+ autoscaler_resource=compute.Autoscaler(
+ autoscaling_policy=compute.AutoscalingPolicy(cool_down_period_sec=2112)
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.AutoscalerList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -2166,7 +3717,7 @@ def test_list_rest_flattened():
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2175,82 +3726,30 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListAutoscalersRequest(),
+ client.patch_unary(
+ compute.PatchAutoscalerRequest(),
project="project_value",
zone="zone_value",
+ autoscaler_resource=compute.Autoscaler(
+ autoscaling_policy=compute.AutoscalingPolicy(cool_down_period_sec=2112)
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_unary_rest_error():
client = AutoscalersClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.AutoscalerList(
- items=[
- compute.Autoscaler(),
- compute.Autoscaler(),
- compute.Autoscaler(),
- ],
- next_page_token="abc",
- ),
- compute.AutoscalerList(
- items=[],
- next_page_token="def",
- ),
- compute.AutoscalerList(
- items=[
- compute.Autoscaler(),
- ],
- next_page_token="ghi",
- ),
- compute.AutoscalerList(
- items=[
- compute.Autoscaler(),
- compute.Autoscaler(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.AutoscalerList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "zone": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Autoscaler) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchAutoscalerRequest,
+ compute.UpdateAutoscalerRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_update_rest(request_type):
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2338,10 +3837,10 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.update(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2366,7 +3865,7 @@ def test_patch_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(request_type=compute.PatchAutoscalerRequest):
+def test_update_rest_required_fields(request_type=compute.UpdateAutoscalerRequest):
transport_class = transports.AutoscalersRestTransport
request_init = {}
@@ -2383,7 +3882,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchAutoscalerRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2393,7 +3892,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchAutoscalerRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
@@ -2427,7 +3926,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchAutoscalerRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "put",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -2439,19 +3938,19 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchAutoscalerRe
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.update(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_update_rest_unset_required_fields():
transport = transports.AutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.update._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
@@ -2470,7 +3969,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_update_rest_interceptors(null_interceptor):
transport = transports.AutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2483,9 +3982,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.AutoscalersRestInterceptor, "post_patch"
+ transports.AutoscalersRestInterceptor, "post_update"
) as post, mock.patch.object(
- transports.AutoscalersRestInterceptor, "pre_patch"
+ transports.AutoscalersRestInterceptor, "pre_update"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2502,7 +4001,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchAutoscalerRequest()
+ request = compute.UpdateAutoscalerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2510,7 +4009,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.update(
request,
metadata=[
("key", "val"),
@@ -2522,8 +4021,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchAutoscalerRequest
+def test_update_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateAutoscalerRequest
):
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2587,10 +4086,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.update(request)
-def test_patch_unary_rest_flattened():
+def test_update_rest_flattened():
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2622,7 +4121,7 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.update(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -2635,7 +4134,7 @@ def test_patch_unary_rest_flattened():
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_rest_flattened_error(transport: str = "rest"):
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2644,8 +4143,8 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchAutoscalerRequest(),
+ client.update(
+ compute.UpdateAutoscalerRequest(),
project="project_value",
zone="zone_value",
autoscaler_resource=compute.Autoscaler(
@@ -2654,7 +4153,7 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_patch_unary_rest_error():
+def test_update_rest_error():
client = AutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2759,28 +4258,6 @@ def test_update_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_unary_rest_required_fields(
@@ -3154,6 +4631,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = AutoscalersClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_autoscalers_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3191,6 +4681,14 @@ def test_autoscalers_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_autoscalers_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_backend_buckets.py b/tests/unit/gapic/compute_v1/test_backend_buckets.py
index 67ca3c614..fbf4ee56e 100644
--- a/tests/unit/gapic/compute_v1/test_backend_buckets.py
+++ b/tests/unit/gapic/compute_v1/test_backend_buckets.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -525,7 +527,7 @@ def test_backend_buckets_client_client_options_credentials_file(
dict,
],
)
-def test_add_signed_url_key_unary_rest(request_type):
+def test_add_signed_url_key_rest(request_type):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -573,10 +575,10 @@ def test_add_signed_url_key_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_signed_url_key_unary(request)
+ response = client.add_signed_url_key(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -601,7 +603,7 @@ def test_add_signed_url_key_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_add_signed_url_key_unary_rest_required_fields(
+def test_add_signed_url_key_rest_required_fields(
request_type=compute.AddSignedUrlKeyBackendBucketRequest,
):
transport_class = transports.BackendBucketsRestTransport
@@ -671,14 +673,14 @@ def test_add_signed_url_key_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_signed_url_key_unary(request)
+ response = client.add_signed_url_key(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_add_signed_url_key_unary_rest_unset_required_fields():
+def test_add_signed_url_key_rest_unset_required_fields():
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -697,7 +699,7 @@ def test_add_signed_url_key_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_signed_url_key_unary_rest_interceptors(null_interceptor):
+def test_add_signed_url_key_rest_interceptors(null_interceptor):
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -737,7 +739,7 @@ def test_add_signed_url_key_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_signed_url_key_unary(
+ client.add_signed_url_key(
request,
metadata=[
("key", "val"),
@@ -749,7 +751,7 @@ def test_add_signed_url_key_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_signed_url_key_unary_rest_bad_request(
+def test_add_signed_url_key_rest_bad_request(
transport: str = "rest", request_type=compute.AddSignedUrlKeyBackendBucketRequest
):
client = BackendBucketsClient(
@@ -774,10 +776,10 @@ def test_add_signed_url_key_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_signed_url_key_unary(request)
+ client.add_signed_url_key(request)
-def test_add_signed_url_key_unary_rest_flattened():
+def test_add_signed_url_key_rest_flattened():
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -807,7 +809,7 @@ def test_add_signed_url_key_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_signed_url_key_unary(**mock_args)
+ client.add_signed_url_key(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -820,7 +822,7 @@ def test_add_signed_url_key_unary_rest_flattened():
)
-def test_add_signed_url_key_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_signed_url_key_rest_flattened_error(transport: str = "rest"):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -829,7 +831,7 @@ def test_add_signed_url_key_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_signed_url_key_unary(
+ client.add_signed_url_key(
compute.AddSignedUrlKeyBackendBucketRequest(),
project="project_value",
backend_bucket="backend_bucket_value",
@@ -837,7 +839,7 @@ def test_add_signed_url_key_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_add_signed_url_key_unary_rest_error():
+def test_add_signed_url_key_rest_error():
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -846,11 +848,11 @@ def test_add_signed_url_key_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteBackendBucketRequest,
+ compute.AddSignedUrlKeyBackendBucketRequest,
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_add_signed_url_key_unary_rest(request_type):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -858,6 +860,10 @@ def test_delete_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "backend_bucket": "sample2"}
+ request_init["signed_url_key_resource"] = {
+ "key_name": "key_name_value",
+ "key_value": "key_value_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -894,36 +900,14 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.add_signed_url_key_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteBackendBucketRequest,
+def test_add_signed_url_key_unary_rest_required_fields(
+ request_type=compute.AddSignedUrlKeyBackendBucketRequest,
):
transport_class = transports.BackendBucketsRestTransport
@@ -941,7 +925,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).add_signed_url_key._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -951,7 +935,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).add_signed_url_key._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -980,9 +964,10 @@ def test_delete_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -991,32 +976,33 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.add_signed_url_key_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_add_signed_url_key_unary_rest_unset_required_fields():
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.add_signed_url_key._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"backendBucket",
"project",
+ "signedUrlKeyResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_add_signed_url_key_unary_rest_interceptors(null_interceptor):
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1029,9 +1015,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendBucketsRestInterceptor, "post_delete"
+ transports.BackendBucketsRestInterceptor, "post_add_signed_url_key"
) as post, mock.patch.object(
- transports.BackendBucketsRestInterceptor, "pre_delete"
+ transports.BackendBucketsRestInterceptor, "pre_add_signed_url_key"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1048,7 +1034,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteBackendBucketRequest()
+ request = compute.AddSignedUrlKeyBackendBucketRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1056,7 +1042,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.add_signed_url_key_unary(
request,
metadata=[
("key", "val"),
@@ -1068,8 +1054,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteBackendBucketRequest
+def test_add_signed_url_key_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddSignedUrlKeyBackendBucketRequest
):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1078,6 +1064,10 @@ def test_delete_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "backend_bucket": "sample2"}
+ request_init["signed_url_key_resource"] = {
+ "key_name": "key_name_value",
+ "key_value": "key_value_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1089,10 +1079,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.add_signed_url_key_unary(request)
-def test_delete_unary_rest_flattened():
+def test_add_signed_url_key_unary_rest_flattened():
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1110,6 +1100,7 @@ def test_delete_unary_rest_flattened():
mock_args = dict(
project="project_value",
backend_bucket="backend_bucket_value",
+ signed_url_key_resource=compute.SignedUrlKey(key_name="key_name_value"),
)
mock_args.update(sample_request)
@@ -1121,20 +1112,20 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.add_signed_url_key_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/backendBuckets/{backend_bucket}"
+ "%s/compute/v1/projects/{project}/global/backendBuckets/{backend_bucket}/addSignedUrlKey"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_signed_url_key_unary_rest_flattened_error(transport: str = "rest"):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1143,14 +1134,15 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteBackendBucketRequest(),
+ client.add_signed_url_key_unary(
+ compute.AddSignedUrlKeyBackendBucketRequest(),
project="project_value",
backend_bucket="backend_bucket_value",
+ signed_url_key_resource=compute.SignedUrlKey(key_name="key_name_value"),
)
-def test_delete_unary_rest_error():
+def test_add_signed_url_key_unary_rest_error():
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1159,11 +1151,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteSignedUrlKeyBackendBucketRequest,
+ compute.DeleteBackendBucketRequest,
dict,
],
)
-def test_delete_signed_url_key_unary_rest(request_type):
+def test_delete_rest(request_type):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1207,10 +1199,10 @@ def test_delete_signed_url_key_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_signed_url_key_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1235,14 +1227,11 @@ def test_delete_signed_url_key_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_signed_url_key_unary_rest_required_fields(
- request_type=compute.DeleteSignedUrlKeyBackendBucketRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteBackendBucketRequest):
transport_class = transports.BackendBucketsRestTransport
request_init = {}
request_init["backend_bucket"] = ""
- request_init["key_name"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1252,38 +1241,27 @@ def test_delete_signed_url_key_unary_rest_required_fields(
)
# verify fields with default values are dropped
- assert "keyName" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_signed_url_key._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- assert "keyName" in jsonified_request
- assert jsonified_request["keyName"] == request_init["key_name"]
jsonified_request["backendBucket"] = "backend_bucket_value"
- jsonified_request["keyName"] = "key_name_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_signed_url_key._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "key_name",
- "request_id",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "backendBucket" in jsonified_request
assert jsonified_request["backendBucket"] == "backend_bucket_value"
- assert "keyName" in jsonified_request
- assert jsonified_request["keyName"] == "key_name_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -1305,7 +1283,7 @@ def test_delete_signed_url_key_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
@@ -1316,35 +1294,24 @@ def test_delete_signed_url_key_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_signed_url_key_unary(request)
+ response = client.delete(request)
- expected_params = [
- (
- "keyName",
- "",
- ),
- ]
+ expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_signed_url_key_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete_signed_url_key._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "keyName",
- "requestId",
- )
- )
+ set(("requestId",))
& set(
(
"backendBucket",
- "keyName",
"project",
)
)
@@ -1352,7 +1319,7 @@ def test_delete_signed_url_key_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_signed_url_key_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1365,9 +1332,9 @@ def test_delete_signed_url_key_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendBucketsRestInterceptor, "post_delete_signed_url_key"
+ transports.BackendBucketsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.BackendBucketsRestInterceptor, "pre_delete_signed_url_key"
+ transports.BackendBucketsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1384,7 +1351,7 @@ def test_delete_signed_url_key_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteSignedUrlKeyBackendBucketRequest()
+ request = compute.DeleteBackendBucketRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1392,7 +1359,7 @@ def test_delete_signed_url_key_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_signed_url_key_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1404,8 +1371,8 @@ def test_delete_signed_url_key_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_signed_url_key_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteSignedUrlKeyBackendBucketRequest
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteBackendBucketRequest
):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1425,10 +1392,10 @@ def test_delete_signed_url_key_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_signed_url_key_unary(request)
+ client.delete(request)
-def test_delete_signed_url_key_unary_rest_flattened():
+def test_delete_rest_flattened():
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1446,7 +1413,6 @@ def test_delete_signed_url_key_unary_rest_flattened():
mock_args = dict(
project="project_value",
backend_bucket="backend_bucket_value",
- key_name="key_name_value",
)
mock_args.update(sample_request)
@@ -1458,20 +1424,20 @@ def test_delete_signed_url_key_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_signed_url_key_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/backendBuckets/{backend_bucket}/deleteSignedUrlKey"
+ "%s/compute/v1/projects/{project}/global/backendBuckets/{backend_bucket}"
% client.transport._host,
args[1],
)
-def test_delete_signed_url_key_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1480,15 +1446,14 @@ def test_delete_signed_url_key_unary_rest_flattened_error(transport: str = "rest
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_signed_url_key_unary(
- compute.DeleteSignedUrlKeyBackendBucketRequest(),
+ client.delete(
+ compute.DeleteBackendBucketRequest(),
project="project_value",
backend_bucket="backend_bucket_value",
- key_name="key_name_value",
)
-def test_delete_signed_url_key_unary_rest_error():
+def test_delete_rest_error():
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1497,11 +1462,11 @@ def test_delete_signed_url_key_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetBackendBucketRequest,
+ compute.DeleteBackendBucketRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1514,42 +1479,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendBucket(
- bucket_name="bucket_name_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
- custom_response_headers=["custom_response_headers_value"],
description="description_value",
- edge_security_policy="edge_security_policy_value",
- enable_cdn=True,
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendBucket.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.BackendBucket)
- assert response.bucket_name == "bucket_name_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.custom_response_headers == ["custom_response_headers_value"]
- assert response.description == "description_value"
- assert response.edge_security_policy == "edge_security_policy_value"
- assert response.enable_cdn is True
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetBackendBucketRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteBackendBucketRequest,
+):
transport_class = transports.BackendBucketsRestTransport
request_init = {}
@@ -1566,7 +1535,7 @@ def test_get_rest_required_fields(request_type=compute.GetBackendBucketRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1576,7 +1545,9 @@ def test_get_rest_required_fields(request_type=compute.GetBackendBucketRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1592,7 +1563,7 @@ def test_get_rest_required_fields(request_type=compute.GetBackendBucketRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.BackendBucket()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1603,32 +1574,32 @@ def test_get_rest_required_fields(request_type=compute.GetBackendBucketRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendBucket.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"backendBucket",
@@ -1639,7 +1610,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1652,9 +1623,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendBucketsRestInterceptor, "post_get"
+ transports.BackendBucketsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.BackendBucketsRestInterceptor, "pre_get"
+ transports.BackendBucketsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1669,19 +1640,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.BackendBucket.to_json(
- compute.BackendBucket()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetBackendBucketRequest()
+ request = compute.DeleteBackendBucketRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.BackendBucket
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1693,9 +1662,9 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetBackendBucketRequest
-):
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteBackendBucketRequest
+):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1714,10 +1683,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1726,7 +1695,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendBucket()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "backend_bucket": "sample2"}
@@ -1741,12 +1710,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendBucket.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1759,7 +1728,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1768,14 +1737,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetBackendBucketRequest(),
+ client.delete_unary(
+ compute.DeleteBackendBucketRequest(),
project="project_value",
backend_bucket="backend_bucket_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1784,59 +1753,18 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertBackendBucketRequest,
+ compute.DeleteSignedUrlKeyBackendBucketRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_delete_signed_url_key_rest(request_type):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["backend_bucket_resource"] = {
- "bucket_name": "bucket_name_value",
- "cdn_policy": {
- "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
- "cache_key_policy": {
- "include_http_headers": [
- "include_http_headers_value_1",
- "include_http_headers_value_2",
- ],
- "query_string_whitelist": [
- "query_string_whitelist_value_1",
- "query_string_whitelist_value_2",
- ],
- },
- "cache_mode": "cache_mode_value",
- "client_ttl": 1074,
- "default_ttl": 1176,
- "max_ttl": 761,
- "negative_caching": True,
- "negative_caching_policy": [{"code": 411, "ttl": 340}],
- "request_coalescing": True,
- "serve_while_stale": 1813,
- "signed_url_cache_max_age_sec": 2890,
- "signed_url_key_names": [
- "signed_url_key_names_value_1",
- "signed_url_key_names_value_2",
- ],
- },
- "creation_timestamp": "creation_timestamp_value",
- "custom_response_headers": [
- "custom_response_headers_value_1",
- "custom_response_headers_value_2",
- ],
- "description": "description_value",
- "edge_security_policy": "edge_security_policy_value",
- "enable_cdn": True,
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "self_link": "self_link_value",
- }
+ request_init = {"project": "sample1", "backend_bucket": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1873,10 +1801,10 @@ def test_insert_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_signed_url_key(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1901,12 +1829,14 @@ def test_insert_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertBackendBucketRequest,
+def test_delete_signed_url_key_rest_required_fields(
+ request_type=compute.DeleteSignedUrlKeyBackendBucketRequest,
):
transport_class = transports.BackendBucketsRestTransport
request_init = {}
+ request_init["backend_bucket"] = ""
+ request_init["key_name"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1916,24 +1846,38 @@ def test_insert_unary_rest_required_fields(
)
# verify fields with default values are dropped
+ assert "keyName" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete_signed_url_key._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ assert "keyName" in jsonified_request
+ assert jsonified_request["keyName"] == request_init["key_name"]
+ jsonified_request["backendBucket"] = "backend_bucket_value"
+ jsonified_request["keyName"] = "key_name_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete_signed_url_key._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "key_name",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "backendBucket" in jsonified_request
+ assert jsonified_request["backendBucket"] == "backend_bucket_value"
+ assert "keyName" in jsonified_request
+ assert jsonified_request["keyName"] == "key_name_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -1958,7 +1902,6 @@ def test_insert_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1967,24 +1910,35 @@ def test_insert_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_signed_url_key(request)
- expected_params = []
+ expected_params = [
+ (
+ "keyName",
+ "",
+ ),
+ ]
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_delete_signed_url_key_rest_unset_required_fields():
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.delete_signed_url_key._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "keyName",
+ "requestId",
+ )
+ )
& set(
(
- "backendBucketResource",
+ "backendBucket",
+ "keyName",
"project",
)
)
@@ -1992,7 +1946,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_delete_signed_url_key_rest_interceptors(null_interceptor):
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2005,9 +1959,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendBucketsRestInterceptor, "post_insert"
+ transports.BackendBucketsRestInterceptor, "post_delete_signed_url_key"
) as post, mock.patch.object(
- transports.BackendBucketsRestInterceptor, "pre_insert"
+ transports.BackendBucketsRestInterceptor, "pre_delete_signed_url_key"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2024,7 +1978,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.InsertBackendBucketRequest()
+ request = compute.DeleteSignedUrlKeyBackendBucketRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2032,7 +1986,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.insert_unary(
+ client.delete_signed_url_key(
request,
metadata=[
("key", "val"),
@@ -2044,8 +1998,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertBackendBucketRequest
+def test_delete_signed_url_key_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteSignedUrlKeyBackendBucketRequest
):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2053,48 +2007,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["backend_bucket_resource"] = {
- "bucket_name": "bucket_name_value",
- "cdn_policy": {
- "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
- "cache_key_policy": {
- "include_http_headers": [
- "include_http_headers_value_1",
- "include_http_headers_value_2",
- ],
- "query_string_whitelist": [
- "query_string_whitelist_value_1",
- "query_string_whitelist_value_2",
- ],
- },
- "cache_mode": "cache_mode_value",
- "client_ttl": 1074,
- "default_ttl": 1176,
- "max_ttl": 761,
- "negative_caching": True,
- "negative_caching_policy": [{"code": 411, "ttl": 340}],
- "request_coalescing": True,
- "serve_while_stale": 1813,
- "signed_url_cache_max_age_sec": 2890,
- "signed_url_key_names": [
- "signed_url_key_names_value_1",
- "signed_url_key_names_value_2",
- ],
- },
- "creation_timestamp": "creation_timestamp_value",
- "custom_response_headers": [
- "custom_response_headers_value_1",
- "custom_response_headers_value_2",
- ],
- "description": "description_value",
- "edge_security_policy": "edge_security_policy_value",
- "enable_cdn": True,
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "self_link": "self_link_value",
- }
+ request_init = {"project": "sample1", "backend_bucket": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2106,10 +2019,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.delete_signed_url_key(request)
-def test_insert_unary_rest_flattened():
+def test_delete_signed_url_key_rest_flattened():
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2121,14 +2034,13 @@ def test_insert_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "backend_bucket": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- backend_bucket_resource=compute.BackendBucket(
- bucket_name="bucket_name_value"
- ),
+ backend_bucket="backend_bucket_value",
+ key_name="key_name_value",
)
mock_args.update(sample_request)
@@ -2140,20 +2052,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.delete_signed_url_key(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/backendBuckets"
+ "%s/compute/v1/projects/{project}/global/backendBuckets/{backend_bucket}/deleteSignedUrlKey"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_signed_url_key_rest_flattened_error(transport: str = "rest"):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2162,16 +2074,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertBackendBucketRequest(),
+ client.delete_signed_url_key(
+ compute.DeleteSignedUrlKeyBackendBucketRequest(),
project="project_value",
- backend_bucket_resource=compute.BackendBucket(
- bucket_name="bucket_name_value"
- ),
+ backend_bucket="backend_bucket_value",
+ key_name="key_name_value",
)
-def test_insert_unary_rest_error():
+def test_delete_signed_url_key_rest_error():
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2180,50 +2091,68 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListBackendBucketsRequest,
+ compute.DeleteSignedUrlKeyBackendBucketRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_delete_signed_url_key_unary_rest(request_type):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "backend_bucket": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendBucketList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendBucketList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.delete_signed_url_key_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_list_rest_required_fields(request_type=compute.ListBackendBucketsRequest):
+def test_delete_signed_url_key_unary_rest_required_fields(
+ request_type=compute.DeleteSignedUrlKeyBackendBucketRequest,
+):
transport_class = transports.BackendBucketsRestTransport
request_init = {}
+ request_init["backend_bucket"] = ""
+ request_init["key_name"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -2233,34 +2162,2543 @@ def test_list_rest_required_fields(request_type=compute.ListBackendBucketsReques
)
# verify fields with default values are dropped
+ assert "keyName" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).delete_signed_url_key._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ assert "keyName" in jsonified_request
+ assert jsonified_request["keyName"] == request_init["key_name"]
+ jsonified_request["backendBucket"] = "backend_bucket_value"
+ jsonified_request["keyName"] = "key_name_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).delete_signed_url_key._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
+ "key_name",
+ "request_id",
)
)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "project" in jsonified_request
- assert jsonified_request["project"] == "project_value"
+ assert "backendBucket" in jsonified_request
+ assert jsonified_request["backendBucket"] == "backend_bucket_value"
+ assert "keyName" in jsonified_request
+ assert jsonified_request["keyName"] == "key_name_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete_signed_url_key_unary(request)
+
+ expected_params = [
+ (
+ "keyName",
+ "",
+ ),
+ ]
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_signed_url_key_unary_rest_unset_required_fields():
+ transport = transports.BackendBucketsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete_signed_url_key._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "keyName",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "backendBucket",
+ "keyName",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_signed_url_key_unary_rest_interceptors(null_interceptor):
+ transport = transports.BackendBucketsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.BackendBucketsRestInterceptor(),
+ )
+ client = BackendBucketsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.BackendBucketsRestInterceptor, "post_delete_signed_url_key"
+ ) as post, mock.patch.object(
+ transports.BackendBucketsRestInterceptor, "pre_delete_signed_url_key"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteSignedUrlKeyBackendBucketRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete_signed_url_key_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_signed_url_key_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteSignedUrlKeyBackendBucketRequest
+):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_bucket": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete_signed_url_key_unary(request)
+
+
+def test_delete_signed_url_key_unary_rest_flattened():
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "backend_bucket": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ backend_bucket="backend_bucket_value",
+ key_name="key_name_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete_signed_url_key_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/backendBuckets/{backend_bucket}/deleteSignedUrlKey"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_signed_url_key_unary_rest_flattened_error(transport: str = "rest"):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete_signed_url_key_unary(
+ compute.DeleteSignedUrlKeyBackendBucketRequest(),
+ project="project_value",
+ backend_bucket="backend_bucket_value",
+ key_name="key_name_value",
+ )
+
+
+def test_delete_signed_url_key_unary_rest_error():
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetBackendBucketRequest,
+ dict,
+ ],
+)
+def test_get_rest(request_type):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_bucket": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendBucket(
+ bucket_name="bucket_name_value",
+ creation_timestamp="creation_timestamp_value",
+ custom_response_headers=["custom_response_headers_value"],
+ description="description_value",
+ edge_security_policy="edge_security_policy_value",
+ enable_cdn=True,
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendBucket.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.BackendBucket)
+ assert response.bucket_name == "bucket_name_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.custom_response_headers == ["custom_response_headers_value"]
+ assert response.description == "description_value"
+ assert response.edge_security_policy == "edge_security_policy_value"
+ assert response.enable_cdn is True
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_get_rest_required_fields(request_type=compute.GetBackendBucketRequest):
+ transport_class = transports.BackendBucketsRestTransport
+
+ request_init = {}
+ request_init["backend_bucket"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["backendBucket"] = "backend_bucket_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "backendBucket" in jsonified_request
+ assert jsonified_request["backendBucket"] == "backend_bucket_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendBucket()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendBucket.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.BackendBucketsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "backendBucket",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.BackendBucketsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.BackendBucketsRestInterceptor(),
+ )
+ client = BackendBucketsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.BackendBucketsRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.BackendBucketsRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.BackendBucket.to_json(
+ compute.BackendBucket()
+ )
+
+ request = compute.GetBackendBucketRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.BackendBucket
+
+ client.get(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetBackendBucketRequest
+):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_bucket": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendBucket()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "backend_bucket": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ backend_bucket="backend_bucket_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendBucket.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/backendBuckets/{backend_bucket}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetBackendBucketRequest(),
+ project="project_value",
+ backend_bucket="backend_bucket_value",
+ )
+
+
+def test_get_rest_error():
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertBackendBucketRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["backend_bucket_resource"] = {
+ "bucket_name": "bucket_name_value",
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_cdn": True,
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertBackendBucketRequest):
+ transport_class = transports.BackendBucketsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.BackendBucketsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "backendBucketResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.BackendBucketsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.BackendBucketsRestInterceptor(),
+ )
+ client = BackendBucketsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.BackendBucketsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.BackendBucketsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertBackendBucketRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertBackendBucketRequest
+):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["backend_bucket_resource"] = {
+ "bucket_name": "bucket_name_value",
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_cdn": True,
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ backend_bucket_resource=compute.BackendBucket(
+ bucket_name="bucket_name_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/backendBuckets"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertBackendBucketRequest(),
+ project="project_value",
+ backend_bucket_resource=compute.BackendBucket(
+ bucket_name="bucket_name_value"
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertBackendBucketRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["backend_bucket_resource"] = {
+ "bucket_name": "bucket_name_value",
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_cdn": True,
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertBackendBucketRequest,
+):
+ transport_class = transports.BackendBucketsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.BackendBucketsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "backendBucketResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.BackendBucketsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.BackendBucketsRestInterceptor(),
+ )
+ client = BackendBucketsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.BackendBucketsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.BackendBucketsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertBackendBucketRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertBackendBucketRequest
+):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["backend_bucket_resource"] = {
+ "bucket_name": "bucket_name_value",
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_cdn": True,
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ backend_bucket_resource=compute.BackendBucket(
+ bucket_name="bucket_name_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/backendBuckets"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertBackendBucketRequest(),
+ project="project_value",
+ backend_bucket_resource=compute.BackendBucket(
+ bucket_name="bucket_name_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListBackendBucketsRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendBucketList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendBucketList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListBackendBucketsRequest):
+ transport_class = transports.BackendBucketsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendBucketList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendBucketList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.BackendBucketsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.BackendBucketsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.BackendBucketsRestInterceptor(),
+ )
+ client = BackendBucketsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.BackendBucketsRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.BackendBucketsRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.BackendBucketList.to_json(
+ compute.BackendBucketList()
+ )
+
+ request = compute.ListBackendBucketsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.BackendBucketList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListBackendBucketsRequest
+):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendBucketList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendBucketList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/backendBuckets"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListBackendBucketsRequest(),
+ project="project_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.BackendBucketList(
+ items=[
+ compute.BackendBucket(),
+ compute.BackendBucket(),
+ compute.BackendBucket(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.BackendBucketList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.BackendBucketList(
+ items=[
+ compute.BackendBucket(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.BackendBucketList(
+ items=[
+ compute.BackendBucket(),
+ compute.BackendBucket(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.BackendBucketList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.BackendBucket) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchBackendBucketRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_bucket": "sample2"}
+ request_init["backend_bucket_resource"] = {
+ "bucket_name": "bucket_name_value",
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_cdn": True,
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchBackendBucketRequest):
+ transport_class = transports.BackendBucketsRestTransport
+
+ request_init = {}
+ request_init["backend_bucket"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["backendBucket"] = "backend_bucket_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "backendBucket" in jsonified_request
+ assert jsonified_request["backendBucket"] == "backend_bucket_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.BackendBucketsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "backendBucket",
+ "backendBucketResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.BackendBucketsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.BackendBucketsRestInterceptor(),
+ )
+ client = BackendBucketsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.BackendBucketsRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.BackendBucketsRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchBackendBucketRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchBackendBucketRequest
+):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_bucket": "sample2"}
+ request_init["backend_bucket_resource"] = {
+ "bucket_name": "bucket_name_value",
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_cdn": True,
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "backend_bucket": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ backend_bucket="backend_bucket_value",
+ backend_bucket_resource=compute.BackendBucket(
+ bucket_name="bucket_name_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/backendBuckets/{backend_bucket}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchBackendBucketRequest(),
+ project="project_value",
+ backend_bucket="backend_bucket_value",
+ backend_bucket_resource=compute.BackendBucket(
+ bucket_name="bucket_name_value"
+ ),
+ )
+
+
+def test_patch_rest_error():
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchBackendBucketRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_bucket": "sample2"}
+ request_init["backend_bucket_resource"] = {
+ "bucket_name": "bucket_name_value",
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_cdn": True,
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchBackendBucketRequest,
+):
+ transport_class = transports.BackendBucketsRestTransport
+
+ request_init = {}
+ request_init["backend_bucket"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["backendBucket"] = "backend_bucket_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "backendBucket" in jsonified_request
+ assert jsonified_request["backendBucket"] == "backend_bucket_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_unary_rest_unset_required_fields():
+ transport = transports.BackendBucketsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "backendBucket",
+ "backendBucketResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_unary_rest_interceptors(null_interceptor):
+ transport = transports.BackendBucketsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.BackendBucketsRestInterceptor(),
+ )
+ client = BackendBucketsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.BackendBucketsRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.BackendBucketsRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchBackendBucketRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchBackendBucketRequest
+):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_bucket": "sample2"}
+ request_init["backend_bucket_resource"] = {
+ "bucket_name": "bucket_name_value",
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_cdn": True,
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_unary(request)
+
+
+def test_patch_unary_rest_flattened():
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "backend_bucket": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ backend_bucket="backend_bucket_value",
+ backend_bucket_resource=compute.BackendBucket(
+ bucket_name="bucket_name_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/backendBuckets/{backend_bucket}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_unary(
+ compute.PatchBackendBucketRequest(),
+ project="project_value",
+ backend_bucket="backend_bucket_value",
+ backend_bucket_resource=compute.BackendBucket(
+ bucket_name="bucket_name_value"
+ ),
+ )
+
+
+def test_patch_unary_rest_error():
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetEdgeSecurityPolicyBackendBucketRequest,
+ dict,
+ ],
+)
+def test_set_edge_security_policy_rest(request_type):
+ client = BackendBucketsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_bucket": "sample2"}
+ request_init["security_policy_reference_resource"] = {
+ "security_policy": "security_policy_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_edge_security_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_set_edge_security_policy_rest_required_fields(
+ request_type=compute.SetEdgeSecurityPolicyBackendBucketRequest,
+):
+ transport_class = transports.BackendBucketsRestTransport
+
+ request_init = {}
+ request_init["backend_bucket"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_edge_security_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["backendBucket"] = "backend_bucket_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_edge_security_policy._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "backendBucket" in jsonified_request
+ assert jsonified_request["backendBucket"] == "backend_bucket_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2269,7 +4707,7 @@ def test_list_rest_required_fields(request_type=compute.ListBackendBucketsReques
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.BackendBucketList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2280,46 +4718,45 @@ def test_list_rest_required_fields(request_type=compute.ListBackendBucketsReques
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendBucketList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.set_edge_security_policy(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_set_edge_security_policy_rest_unset_required_fields():
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.set_edge_security_policy._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "backendBucket",
+ "project",
+ "securityPolicyReferenceResource",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_set_edge_security_policy_rest_interceptors(null_interceptor):
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2332,9 +4769,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendBucketsRestInterceptor, "post_list"
+ transports.BackendBucketsRestInterceptor, "post_set_edge_security_policy"
) as post, mock.patch.object(
- transports.BackendBucketsRestInterceptor, "pre_list"
+ transports.BackendBucketsRestInterceptor, "pre_set_edge_security_policy"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2349,19 +4786,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.BackendBucketList.to_json(
- compute.BackendBucketList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListBackendBucketsRequest()
+ request = compute.SetEdgeSecurityPolicyBackendBucketRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.BackendBucketList
+ post.return_value = compute.Operation
- client.list(
+ client.set_edge_security_policy(
request,
metadata=[
("key", "val"),
@@ -2373,8 +4808,9 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListBackendBucketsRequest
+def test_set_edge_security_policy_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.SetEdgeSecurityPolicyBackendBucketRequest,
):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2382,7 +4818,10 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "backend_bucket": "sample2"}
+ request_init["security_policy_reference_resource"] = {
+ "security_policy": "security_policy_value"
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2394,10 +4833,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.set_edge_security_policy(request)
-def test_list_rest_flattened():
+def test_set_edge_security_policy_rest_flattened():
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2406,39 +4845,43 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendBucketList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "backend_bucket": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ backend_bucket="backend_bucket_value",
+ security_policy_reference_resource=compute.SecurityPolicyReference(
+ security_policy="security_policy_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendBucketList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.set_edge_security_policy(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/backendBuckets"
+ "%s/compute/v1/projects/{project}/global/backendBuckets/{backend_bucket}/setEdgeSecurityPolicy"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_set_edge_security_policy_rest_flattened_error(transport: str = "rest"):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2447,81 +4890,30 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListBackendBucketsRequest(),
+ client.set_edge_security_policy(
+ compute.SetEdgeSecurityPolicyBackendBucketRequest(),
project="project_value",
+ backend_bucket="backend_bucket_value",
+ security_policy_reference_resource=compute.SecurityPolicyReference(
+ security_policy="security_policy_value"
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_set_edge_security_policy_rest_error():
client = BackendBucketsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.BackendBucketList(
- items=[
- compute.BackendBucket(),
- compute.BackendBucket(),
- compute.BackendBucket(),
- ],
- next_page_token="abc",
- ),
- compute.BackendBucketList(
- items=[],
- next_page_token="def",
- ),
- compute.BackendBucketList(
- items=[
- compute.BackendBucket(),
- ],
- next_page_token="ghi",
- ),
- compute.BackendBucketList(
- items=[
- compute.BackendBucket(),
- compute.BackendBucket(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.BackendBucketList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.BackendBucket) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchBackendBucketRequest,
+ compute.SetEdgeSecurityPolicyBackendBucketRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_set_edge_security_policy_unary_rest(request_type):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2529,46 +4921,8 @@ def test_patch_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "backend_bucket": "sample2"}
- request_init["backend_bucket_resource"] = {
- "bucket_name": "bucket_name_value",
- "cdn_policy": {
- "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
- "cache_key_policy": {
- "include_http_headers": [
- "include_http_headers_value_1",
- "include_http_headers_value_2",
- ],
- "query_string_whitelist": [
- "query_string_whitelist_value_1",
- "query_string_whitelist_value_2",
- ],
- },
- "cache_mode": "cache_mode_value",
- "client_ttl": 1074,
- "default_ttl": 1176,
- "max_ttl": 761,
- "negative_caching": True,
- "negative_caching_policy": [{"code": 411, "ttl": 340}],
- "request_coalescing": True,
- "serve_while_stale": 1813,
- "signed_url_cache_max_age_sec": 2890,
- "signed_url_key_names": [
- "signed_url_key_names_value_1",
- "signed_url_key_names_value_2",
- ],
- },
- "creation_timestamp": "creation_timestamp_value",
- "custom_response_headers": [
- "custom_response_headers_value_1",
- "custom_response_headers_value_2",
- ],
- "description": "description_value",
- "edge_security_policy": "edge_security_policy_value",
- "enable_cdn": True,
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "self_link": "self_link_value",
+ request_init["security_policy_reference_resource"] = {
+ "security_policy": "security_policy_value"
}
request = request_type(request_init)
@@ -2606,36 +4960,14 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.set_edge_security_policy_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchBackendBucketRequest,
+def test_set_edge_security_policy_unary_rest_required_fields(
+ request_type=compute.SetEdgeSecurityPolicyBackendBucketRequest,
):
transport_class = transports.BackendBucketsRestTransport
@@ -2653,7 +4985,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).set_edge_security_policy._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2663,7 +4995,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).set_edge_security_policy._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -2692,7 +5024,7 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -2704,33 +5036,33 @@ def test_patch_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.set_edge_security_policy_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_set_edge_security_policy_unary_rest_unset_required_fields():
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.set_edge_security_policy._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"backendBucket",
- "backendBucketResource",
"project",
+ "securityPolicyReferenceResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_set_edge_security_policy_unary_rest_interceptors(null_interceptor):
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2743,9 +5075,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendBucketsRestInterceptor, "post_patch"
+ transports.BackendBucketsRestInterceptor, "post_set_edge_security_policy"
) as post, mock.patch.object(
- transports.BackendBucketsRestInterceptor, "pre_patch"
+ transports.BackendBucketsRestInterceptor, "pre_set_edge_security_policy"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2762,7 +5094,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchBackendBucketRequest()
+ request = compute.SetEdgeSecurityPolicyBackendBucketRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2770,7 +5102,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.set_edge_security_policy_unary(
request,
metadata=[
("key", "val"),
@@ -2782,8 +5114,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchBackendBucketRequest
+def test_set_edge_security_policy_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.SetEdgeSecurityPolicyBackendBucketRequest,
):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2792,46 +5125,8 @@ def test_patch_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "backend_bucket": "sample2"}
- request_init["backend_bucket_resource"] = {
- "bucket_name": "bucket_name_value",
- "cdn_policy": {
- "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
- "cache_key_policy": {
- "include_http_headers": [
- "include_http_headers_value_1",
- "include_http_headers_value_2",
- ],
- "query_string_whitelist": [
- "query_string_whitelist_value_1",
- "query_string_whitelist_value_2",
- ],
- },
- "cache_mode": "cache_mode_value",
- "client_ttl": 1074,
- "default_ttl": 1176,
- "max_ttl": 761,
- "negative_caching": True,
- "negative_caching_policy": [{"code": 411, "ttl": 340}],
- "request_coalescing": True,
- "serve_while_stale": 1813,
- "signed_url_cache_max_age_sec": 2890,
- "signed_url_key_names": [
- "signed_url_key_names_value_1",
- "signed_url_key_names_value_2",
- ],
- },
- "creation_timestamp": "creation_timestamp_value",
- "custom_response_headers": [
- "custom_response_headers_value_1",
- "custom_response_headers_value_2",
- ],
- "description": "description_value",
- "edge_security_policy": "edge_security_policy_value",
- "enable_cdn": True,
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "self_link": "self_link_value",
+ request_init["security_policy_reference_resource"] = {
+ "security_policy": "security_policy_value"
}
request = request_type(request_init)
@@ -2844,10 +5139,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.set_edge_security_policy_unary(request)
-def test_patch_unary_rest_flattened():
+def test_set_edge_security_policy_unary_rest_flattened():
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2865,8 +5160,8 @@ def test_patch_unary_rest_flattened():
mock_args = dict(
project="project_value",
backend_bucket="backend_bucket_value",
- backend_bucket_resource=compute.BackendBucket(
- bucket_name="bucket_name_value"
+ security_policy_reference_resource=compute.SecurityPolicyReference(
+ security_policy="security_policy_value"
),
)
mock_args.update(sample_request)
@@ -2879,20 +5174,20 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.set_edge_security_policy_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/backendBuckets/{backend_bucket}"
+ "%s/compute/v1/projects/{project}/global/backendBuckets/{backend_bucket}/setEdgeSecurityPolicy"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_edge_security_policy_unary_rest_flattened_error(transport: str = "rest"):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2901,17 +5196,17 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchBackendBucketRequest(),
+ client.set_edge_security_policy_unary(
+ compute.SetEdgeSecurityPolicyBackendBucketRequest(),
project="project_value",
backend_bucket="backend_bucket_value",
- backend_bucket_resource=compute.BackendBucket(
- bucket_name="bucket_name_value"
+ security_policy_reference_resource=compute.SecurityPolicyReference(
+ security_policy="security_policy_value"
),
)
-def test_patch_unary_rest_error():
+def test_set_edge_security_policy_unary_rest_error():
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2920,11 +5215,11 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetEdgeSecurityPolicyBackendBucketRequest,
+ compute.UpdateBackendBucketRequest,
dict,
],
)
-def test_set_edge_security_policy_unary_rest(request_type):
+def test_update_rest(request_type):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2932,8 +5227,46 @@ def test_set_edge_security_policy_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "backend_bucket": "sample2"}
- request_init["security_policy_reference_resource"] = {
- "security_policy": "security_policy_value"
+ request_init["backend_bucket_resource"] = {
+ "bucket_name": "bucket_name_value",
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_cdn": True,
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
}
request = request_type(request_init)
@@ -2971,10 +5304,10 @@ def test_set_edge_security_policy_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_edge_security_policy_unary(request)
+ response = client.update(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2999,9 +5332,7 @@ def test_set_edge_security_policy_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_set_edge_security_policy_unary_rest_required_fields(
- request_type=compute.SetEdgeSecurityPolicyBackendBucketRequest,
-):
+def test_update_rest_required_fields(request_type=compute.UpdateBackendBucketRequest):
transport_class = transports.BackendBucketsRestTransport
request_init = {}
@@ -3018,7 +5349,7 @@ def test_set_edge_security_policy_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_edge_security_policy._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3028,7 +5359,7 @@ def test_set_edge_security_policy_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_edge_security_policy._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -3057,7 +5388,7 @@ def test_set_edge_security_policy_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "put",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -3069,33 +5400,33 @@ def test_set_edge_security_policy_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_edge_security_policy_unary(request)
+ response = client.update(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_edge_security_policy_unary_rest_unset_required_fields():
+def test_update_rest_unset_required_fields():
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_edge_security_policy._get_unset_required_fields({})
+ unset_fields = transport.update._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"backendBucket",
+ "backendBucketResource",
"project",
- "securityPolicyReferenceResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_edge_security_policy_unary_rest_interceptors(null_interceptor):
+def test_update_rest_interceptors(null_interceptor):
transport = transports.BackendBucketsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3108,9 +5439,9 @@ def test_set_edge_security_policy_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendBucketsRestInterceptor, "post_set_edge_security_policy"
+ transports.BackendBucketsRestInterceptor, "post_update"
) as post, mock.patch.object(
- transports.BackendBucketsRestInterceptor, "pre_set_edge_security_policy"
+ transports.BackendBucketsRestInterceptor, "pre_update"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3127,7 +5458,7 @@ def test_set_edge_security_policy_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetEdgeSecurityPolicyBackendBucketRequest()
+ request = compute.UpdateBackendBucketRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3135,7 +5466,7 @@ def test_set_edge_security_policy_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_edge_security_policy_unary(
+ client.update(
request,
metadata=[
("key", "val"),
@@ -3147,9 +5478,8 @@ def test_set_edge_security_policy_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_edge_security_policy_unary_rest_bad_request(
- transport: str = "rest",
- request_type=compute.SetEdgeSecurityPolicyBackendBucketRequest,
+def test_update_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateBackendBucketRequest
):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3158,8 +5488,46 @@ def test_set_edge_security_policy_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "backend_bucket": "sample2"}
- request_init["security_policy_reference_resource"] = {
- "security_policy": "security_policy_value"
+ request_init["backend_bucket_resource"] = {
+ "bucket_name": "bucket_name_value",
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_cdn": True,
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
}
request = request_type(request_init)
@@ -3172,10 +5540,10 @@ def test_set_edge_security_policy_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_edge_security_policy_unary(request)
+ client.update(request)
-def test_set_edge_security_policy_unary_rest_flattened():
+def test_update_rest_flattened():
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3193,8 +5561,8 @@ def test_set_edge_security_policy_unary_rest_flattened():
mock_args = dict(
project="project_value",
backend_bucket="backend_bucket_value",
- security_policy_reference_resource=compute.SecurityPolicyReference(
- security_policy="security_policy_value"
+ backend_bucket_resource=compute.BackendBucket(
+ bucket_name="bucket_name_value"
),
)
mock_args.update(sample_request)
@@ -3207,20 +5575,20 @@ def test_set_edge_security_policy_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_edge_security_policy_unary(**mock_args)
+ client.update(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/backendBuckets/{backend_bucket}/setEdgeSecurityPolicy"
+ "%s/compute/v1/projects/{project}/global/backendBuckets/{backend_bucket}"
% client.transport._host,
args[1],
)
-def test_set_edge_security_policy_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_rest_flattened_error(transport: str = "rest"):
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3229,17 +5597,17 @@ def test_set_edge_security_policy_unary_rest_flattened_error(transport: str = "r
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_edge_security_policy_unary(
- compute.SetEdgeSecurityPolicyBackendBucketRequest(),
+ client.update(
+ compute.UpdateBackendBucketRequest(),
project="project_value",
backend_bucket="backend_bucket_value",
- security_policy_reference_resource=compute.SecurityPolicyReference(
- security_policy="security_policy_value"
+ backend_bucket_resource=compute.BackendBucket(
+ bucket_name="bucket_name_value"
),
)
-def test_set_edge_security_policy_unary_rest_error():
+def test_update_rest_error():
client = BackendBucketsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3341,28 +5709,6 @@ def test_update_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_unary_rest_required_fields(
@@ -3723,6 +6069,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = BackendBucketsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_backend_buckets_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3762,6 +6121,14 @@ def test_backend_buckets_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_backend_buckets_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_backend_services.py b/tests/unit/gapic/compute_v1/test_backend_services.py
index ce912851f..3ba727add 100644
--- a/tests/unit/gapic/compute_v1/test_backend_services.py
+++ b/tests/unit/gapic/compute_v1/test_backend_services.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -539,7 +541,7 @@ def test_backend_services_client_client_options_credentials_file(
dict,
],
)
-def test_add_signed_url_key_unary_rest(request_type):
+def test_add_signed_url_key_rest(request_type):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -587,10 +589,10 @@ def test_add_signed_url_key_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_signed_url_key_unary(request)
+ response = client.add_signed_url_key(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -615,7 +617,7 @@ def test_add_signed_url_key_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_add_signed_url_key_unary_rest_required_fields(
+def test_add_signed_url_key_rest_required_fields(
request_type=compute.AddSignedUrlKeyBackendServiceRequest,
):
transport_class = transports.BackendServicesRestTransport
@@ -685,14 +687,14 @@ def test_add_signed_url_key_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_signed_url_key_unary(request)
+ response = client.add_signed_url_key(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_add_signed_url_key_unary_rest_unset_required_fields():
+def test_add_signed_url_key_rest_unset_required_fields():
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -711,7 +713,7 @@ def test_add_signed_url_key_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_signed_url_key_unary_rest_interceptors(null_interceptor):
+def test_add_signed_url_key_rest_interceptors(null_interceptor):
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -751,7 +753,7 @@ def test_add_signed_url_key_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_signed_url_key_unary(
+ client.add_signed_url_key(
request,
metadata=[
("key", "val"),
@@ -763,7 +765,7 @@ def test_add_signed_url_key_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_signed_url_key_unary_rest_bad_request(
+def test_add_signed_url_key_rest_bad_request(
transport: str = "rest", request_type=compute.AddSignedUrlKeyBackendServiceRequest
):
client = BackendServicesClient(
@@ -788,10 +790,10 @@ def test_add_signed_url_key_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_signed_url_key_unary(request)
+ client.add_signed_url_key(request)
-def test_add_signed_url_key_unary_rest_flattened():
+def test_add_signed_url_key_rest_flattened():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -821,7 +823,7 @@ def test_add_signed_url_key_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_signed_url_key_unary(**mock_args)
+ client.add_signed_url_key(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -834,7 +836,7 @@ def test_add_signed_url_key_unary_rest_flattened():
)
-def test_add_signed_url_key_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_signed_url_key_rest_flattened_error(transport: str = "rest"):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -843,7 +845,7 @@ def test_add_signed_url_key_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_signed_url_key_unary(
+ client.add_signed_url_key(
compute.AddSignedUrlKeyBackendServiceRequest(),
project="project_value",
backend_service="backend_service_value",
@@ -851,7 +853,7 @@ def test_add_signed_url_key_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_add_signed_url_key_unary_rest_error():
+def test_add_signed_url_key_rest_error():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -860,54 +862,71 @@ def test_add_signed_url_key_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.AggregatedListBackendServicesRequest,
+ compute.AddSignedUrlKeyBackendServiceRequest,
dict,
],
)
-def test_aggregated_list_rest(request_type):
+def test_add_signed_url_key_unary_rest(request_type):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init["signed_url_key_resource"] = {
+ "key_name": "key_name_value",
+ "key_value": "key_value_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendServiceAggregatedList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- unreachables=["unreachables_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendServiceAggregatedList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.aggregated_list(request)
+ response = client.add_signed_url_key_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.AggregatedListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
- assert response.unreachables == ["unreachables_value"]
+ assert isinstance(response, compute.Operation)
-def test_aggregated_list_rest_required_fields(
- request_type=compute.AggregatedListBackendServicesRequest,
+def test_add_signed_url_key_unary_rest_required_fields(
+ request_type=compute.AddSignedUrlKeyBackendServiceRequest,
):
transport_class = transports.BackendServicesRestTransport
request_init = {}
+ request_init["backend_service"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -920,30 +939,24 @@ def test_aggregated_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).aggregated_list._get_unset_required_fields(jsonified_request)
+ ).add_signed_url_key._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["backendService"] = "backend_service_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).aggregated_list._get_unset_required_fields(jsonified_request)
+ ).add_signed_url_key._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "include_all_scopes",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "backendService" in jsonified_request
+ assert jsonified_request["backendService"] == "backend_service_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -954,7 +967,7 @@ def test_aggregated_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.BackendServiceAggregatedList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -965,49 +978,45 @@ def test_aggregated_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendServiceAggregatedList.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.aggregated_list(request)
+ response = client.add_signed_url_key_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_aggregated_list_rest_unset_required_fields():
+def test_add_signed_url_key_unary_rest_unset_required_fields():
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.aggregated_list._get_unset_required_fields({})
+ unset_fields = transport.add_signed_url_key._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "includeAllScopes",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "backendService",
+ "project",
+ "signedUrlKeyResource",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_aggregated_list_rest_interceptors(null_interceptor):
+def test_add_signed_url_key_unary_rest_interceptors(null_interceptor):
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1020,9 +1029,9 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendServicesRestInterceptor, "post_aggregated_list"
+ transports.BackendServicesRestInterceptor, "post_add_signed_url_key"
) as post, mock.patch.object(
- transports.BackendServicesRestInterceptor, "pre_aggregated_list"
+ transports.BackendServicesRestInterceptor, "pre_add_signed_url_key"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1037,19 +1046,17 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.BackendServiceAggregatedList.to_json(
- compute.BackendServiceAggregatedList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.AggregatedListBackendServicesRequest()
+ request = compute.AddSignedUrlKeyBackendServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.BackendServiceAggregatedList
+ post.return_value = compute.Operation
- client.aggregated_list(
+ client.add_signed_url_key_unary(
request,
metadata=[
("key", "val"),
@@ -1061,8 +1068,8 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_aggregated_list_rest_bad_request(
- transport: str = "rest", request_type=compute.AggregatedListBackendServicesRequest
+def test_add_signed_url_key_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddSignedUrlKeyBackendServiceRequest
):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1070,7 +1077,11 @@ def test_aggregated_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init["signed_url_key_resource"] = {
+ "key_name": "key_name_value",
+ "key_value": "key_value_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1082,10 +1093,10 @@ def test_aggregated_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.aggregated_list(request)
+ client.add_signed_url_key_unary(request)
-def test_aggregated_list_rest_flattened():
+def test_add_signed_url_key_unary_rest_flattened():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1094,39 +1105,41 @@ def test_aggregated_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendServiceAggregatedList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "backend_service": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ backend_service="backend_service_value",
+ signed_url_key_resource=compute.SignedUrlKey(key_name="key_name_value"),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendServiceAggregatedList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.aggregated_list(**mock_args)
+ client.add_signed_url_key_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/aggregated/backendServices"
+ "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}/addSignedUrlKey"
% client.transport._host,
args[1],
)
-def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
+def test_add_signed_url_key_unary_rest_flattened_error(transport: str = "rest"):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1135,173 +1148,71 @@ def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.aggregated_list(
- compute.AggregatedListBackendServicesRequest(),
+ client.add_signed_url_key_unary(
+ compute.AddSignedUrlKeyBackendServiceRequest(),
project="project_value",
+ backend_service="backend_service_value",
+ signed_url_key_resource=compute.SignedUrlKey(key_name="key_name_value"),
)
-def test_aggregated_list_rest_pager(transport: str = "rest"):
+def test_add_signed_url_key_unary_rest_error():
client = BackendServicesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.BackendServiceAggregatedList(
- items={
- "a": compute.BackendServicesScopedList(),
- "b": compute.BackendServicesScopedList(),
- "c": compute.BackendServicesScopedList(),
- },
- next_page_token="abc",
- ),
- compute.BackendServiceAggregatedList(
- items={},
- next_page_token="def",
- ),
- compute.BackendServiceAggregatedList(
- items={
- "g": compute.BackendServicesScopedList(),
- },
- next_page_token="ghi",
- ),
- compute.BackendServiceAggregatedList(
- items={
- "h": compute.BackendServicesScopedList(),
- "i": compute.BackendServicesScopedList(),
- },
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(
- compute.BackendServiceAggregatedList.to_json(x) for x in response
- )
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.aggregated_list(request=sample_request)
-
- assert isinstance(pager.get("a"), compute.BackendServicesScopedList)
- assert pager.get("h") is None
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, tuple) for i in results)
- for result in results:
- assert isinstance(result, tuple)
- assert tuple(type(t) for t in result) == (
- str,
- compute.BackendServicesScopedList,
- )
-
- assert pager.get("a") is None
- assert isinstance(pager.get("h"), compute.BackendServicesScopedList)
-
- pages = list(client.aggregated_list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteBackendServiceRequest,
+ compute.AggregatedListBackendServicesRequest,
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_aggregated_list_rest(request_type):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init = {"project": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
+ return_value = compute.BackendServiceAggregatedList(
+ id="id_value",
kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
+ next_page_token="next_page_token_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ unreachables=["unreachables_value"],
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.BackendServiceAggregatedList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.aggregated_list(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert isinstance(response, pagers.AggregatedListPager)
+ assert response.id == "id_value"
assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
+ assert response.next_page_token == "next_page_token_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.unreachables == ["unreachables_value"]
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteBackendServiceRequest,
+def test_aggregated_list_rest_required_fields(
+ request_type=compute.AggregatedListBackendServicesRequest,
):
transport_class = transports.BackendServicesRestTransport
request_init = {}
- request_init["backend_service"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1314,24 +1225,30 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).aggregated_list._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["backendService"] = "backend_service_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).aggregated_list._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "include_all_scopes",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "backendService" in jsonified_request
- assert jsonified_request["backendService"] == "backend_service_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -1342,7 +1259,7 @@ def test_delete_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.BackendServiceAggregatedList()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1353,43 +1270,49 @@ def test_delete_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "get",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.BackendServiceAggregatedList.to_json(
+ return_value
+ )
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.aggregated_list(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_aggregated_list_rest_unset_required_fields():
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.aggregated_list._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
- & set(
+ set(
(
- "backendService",
- "project",
+ "filter",
+ "includeAllScopes",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
)
)
+ & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_aggregated_list_rest_interceptors(null_interceptor):
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1402,9 +1325,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendServicesRestInterceptor, "post_delete"
+ transports.BackendServicesRestInterceptor, "post_aggregated_list"
) as post, mock.patch.object(
- transports.BackendServicesRestInterceptor, "pre_delete"
+ transports.BackendServicesRestInterceptor, "pre_aggregated_list"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1419,17 +1342,19 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.BackendServiceAggregatedList.to_json(
+ compute.BackendServiceAggregatedList()
+ )
- request = compute.DeleteBackendServiceRequest()
+ request = compute.AggregatedListBackendServicesRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.BackendServiceAggregatedList
- client.delete_unary(
+ client.aggregated_list(
request,
metadata=[
("key", "val"),
@@ -1441,8 +1366,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteBackendServiceRequest
+def test_aggregated_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.AggregatedListBackendServicesRequest
):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1450,7 +1375,7 @@ def test_delete_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init = {"project": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1462,10 +1387,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.aggregated_list(request)
-def test_delete_unary_rest_flattened():
+def test_aggregated_list_rest_flattened():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1474,40 +1399,39 @@ def test_delete_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.BackendServiceAggregatedList()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "backend_service": "sample2"}
+ sample_request = {"project": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- backend_service="backend_service_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.BackendServiceAggregatedList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.aggregated_list(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}"
+ "%s/compute/v1/projects/{project}/aggregated/backendServices"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1516,27 +1440,95 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteBackendServiceRequest(),
+ client.aggregated_list(
+ compute.AggregatedListBackendServicesRequest(),
project="project_value",
- backend_service="backend_service_value",
)
-def test_delete_unary_rest_error():
+def test_aggregated_list_rest_pager(transport: str = "rest"):
client = BackendServicesClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
)
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.BackendServiceAggregatedList(
+ items={
+ "a": compute.BackendServicesScopedList(),
+ "b": compute.BackendServicesScopedList(),
+ "c": compute.BackendServicesScopedList(),
+ },
+ next_page_token="abc",
+ ),
+ compute.BackendServiceAggregatedList(
+ items={},
+ next_page_token="def",
+ ),
+ compute.BackendServiceAggregatedList(
+ items={
+ "g": compute.BackendServicesScopedList(),
+ },
+ next_page_token="ghi",
+ ),
+ compute.BackendServiceAggregatedList(
+ items={
+ "h": compute.BackendServicesScopedList(),
+ "i": compute.BackendServicesScopedList(),
+ },
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.BackendServiceAggregatedList.to_json(x) for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.aggregated_list(request=sample_request)
+
+ assert isinstance(pager.get("a"), compute.BackendServicesScopedList)
+ assert pager.get("h") is None
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, tuple) for i in results)
+ for result in results:
+ assert isinstance(result, tuple)
+ assert tuple(type(t) for t in result) == (
+ str,
+ compute.BackendServicesScopedList,
+ )
+
+ assert pager.get("a") is None
+ assert isinstance(pager.get("h"), compute.BackendServicesScopedList)
+
+ pages = list(client.aggregated_list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteSignedUrlKeyBackendServiceRequest,
+ compute.DeleteBackendServiceRequest,
dict,
],
)
-def test_delete_signed_url_key_unary_rest(request_type):
+def test_delete_rest(request_type):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1580,10 +1572,10 @@ def test_delete_signed_url_key_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_signed_url_key_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1608,14 +1600,11 @@ def test_delete_signed_url_key_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_signed_url_key_unary_rest_required_fields(
- request_type=compute.DeleteSignedUrlKeyBackendServiceRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteBackendServiceRequest):
transport_class = transports.BackendServicesRestTransport
request_init = {}
request_init["backend_service"] = ""
- request_init["key_name"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1625,38 +1614,27 @@ def test_delete_signed_url_key_unary_rest_required_fields(
)
# verify fields with default values are dropped
- assert "keyName" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_signed_url_key._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- assert "keyName" in jsonified_request
- assert jsonified_request["keyName"] == request_init["key_name"]
jsonified_request["backendService"] = "backend_service_value"
- jsonified_request["keyName"] = "key_name_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_signed_url_key._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "key_name",
- "request_id",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "backendService" in jsonified_request
assert jsonified_request["backendService"] == "backend_service_value"
- assert "keyName" in jsonified_request
- assert jsonified_request["keyName"] == "key_name_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -1678,7 +1656,7 @@ def test_delete_signed_url_key_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
@@ -1689,35 +1667,24 @@ def test_delete_signed_url_key_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_signed_url_key_unary(request)
+ response = client.delete(request)
- expected_params = [
- (
- "keyName",
- "",
- ),
- ]
+ expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_signed_url_key_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete_signed_url_key._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "keyName",
- "requestId",
- )
- )
+ set(("requestId",))
& set(
(
"backendService",
- "keyName",
"project",
)
)
@@ -1725,7 +1692,7 @@ def test_delete_signed_url_key_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_signed_url_key_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1738,9 +1705,9 @@ def test_delete_signed_url_key_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendServicesRestInterceptor, "post_delete_signed_url_key"
+ transports.BackendServicesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.BackendServicesRestInterceptor, "pre_delete_signed_url_key"
+ transports.BackendServicesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1757,7 +1724,7 @@ def test_delete_signed_url_key_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteSignedUrlKeyBackendServiceRequest()
+ request = compute.DeleteBackendServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1765,7 +1732,7 @@ def test_delete_signed_url_key_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_signed_url_key_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1777,9 +1744,8 @@ def test_delete_signed_url_key_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_signed_url_key_unary_rest_bad_request(
- transport: str = "rest",
- request_type=compute.DeleteSignedUrlKeyBackendServiceRequest,
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteBackendServiceRequest
):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1799,10 +1765,10 @@ def test_delete_signed_url_key_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_signed_url_key_unary(request)
+ client.delete(request)
-def test_delete_signed_url_key_unary_rest_flattened():
+def test_delete_rest_flattened():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1820,7 +1786,6 @@ def test_delete_signed_url_key_unary_rest_flattened():
mock_args = dict(
project="project_value",
backend_service="backend_service_value",
- key_name="key_name_value",
)
mock_args.update(sample_request)
@@ -1832,20 +1797,20 @@ def test_delete_signed_url_key_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_signed_url_key_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}/deleteSignedUrlKey"
+ "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}"
% client.transport._host,
args[1],
)
-def test_delete_signed_url_key_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1854,15 +1819,14 @@ def test_delete_signed_url_key_unary_rest_flattened_error(transport: str = "rest
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_signed_url_key_unary(
- compute.DeleteSignedUrlKeyBackendServiceRequest(),
+ client.delete(
+ compute.DeleteBackendServiceRequest(),
project="project_value",
backend_service="backend_service_value",
- key_name="key_name_value",
)
-def test_delete_signed_url_key_unary_rest_error():
+def test_delete_rest_error():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1871,11 +1835,11 @@ def test_delete_signed_url_key_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetBackendServiceRequest,
+ compute.DeleteBackendServiceRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1888,68 +1852,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendService(
- affinity_cookie_ttl_sec=2432,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
- custom_request_headers=["custom_request_headers_value"],
- custom_response_headers=["custom_response_headers_value"],
description="description_value",
- edge_security_policy="edge_security_policy_value",
- enable_c_d_n=True,
- fingerprint="fingerprint_value",
- health_checks=["health_checks_value"],
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- load_balancing_scheme="load_balancing_scheme_value",
- locality_lb_policy="locality_lb_policy_value",
name="name_value",
- network="network_value",
- port=453,
- port_name="port_name_value",
- protocol="protocol_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
- security_policy="security_policy_value",
self_link="self_link_value",
- session_affinity="session_affinity_value",
- timeout_sec=1185,
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendService.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.BackendService)
- assert response.affinity_cookie_ttl_sec == 2432
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.custom_request_headers == ["custom_request_headers_value"]
- assert response.custom_response_headers == ["custom_response_headers_value"]
- assert response.description == "description_value"
- assert response.edge_security_policy == "edge_security_policy_value"
- assert response.enable_c_d_n is True
- assert response.fingerprint == "fingerprint_value"
- assert response.health_checks == ["health_checks_value"]
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.load_balancing_scheme == "load_balancing_scheme_value"
- assert response.locality_lb_policy == "locality_lb_policy_value"
- assert response.name == "name_value"
- assert response.network == "network_value"
- assert response.port == 453
- assert response.port_name == "port_name_value"
- assert response.protocol == "protocol_value"
- assert response.region == "region_value"
- assert response.security_policy == "security_policy_value"
- assert response.self_link == "self_link_value"
- assert response.session_affinity == "session_affinity_value"
- assert response.timeout_sec == 1185
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetBackendServiceRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteBackendServiceRequest,
+):
transport_class = transports.BackendServicesRestTransport
request_init = {}
@@ -1966,7 +1908,7 @@ def test_get_rest_required_fields(request_type=compute.GetBackendServiceRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1976,7 +1918,9 @@ def test_get_rest_required_fields(request_type=compute.GetBackendServiceRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1992,7 +1936,7 @@ def test_get_rest_required_fields(request_type=compute.GetBackendServiceRequest)
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.BackendService()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2003,32 +1947,32 @@ def test_get_rest_required_fields(request_type=compute.GetBackendServiceRequest)
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendService.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"backendService",
@@ -2039,7 +1983,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2052,9 +1996,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendServicesRestInterceptor, "post_get"
+ transports.BackendServicesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.BackendServicesRestInterceptor, "pre_get"
+ transports.BackendServicesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2069,19 +2013,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.BackendService.to_json(
- compute.BackendService()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetBackendServiceRequest()
+ request = compute.DeleteBackendServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.BackendService
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -2093,8 +2035,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetBackendServiceRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteBackendServiceRequest
):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2114,10 +2056,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2126,7 +2068,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendService()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "backend_service": "sample2"}
@@ -2141,12 +2083,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendService.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -2159,7 +2101,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2168,14 +2110,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetBackendServiceRequest(),
+ client.delete_unary(
+ compute.DeleteBackendServiceRequest(),
project="project_value",
backend_service="backend_service_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2184,11 +2126,11 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetHealthBackendServiceRequest,
+ compute.DeleteSignedUrlKeyBackendServiceRequest,
dict,
],
)
-def test_get_health_rest(request_type):
+def test_delete_signed_url_key_rest(request_type):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2196,36 +2138,78 @@ def test_get_health_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "backend_service": "sample2"}
- request_init["resource_group_reference_resource"] = {"group": "group_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendServiceGroupHealth(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendServiceGroupHealth.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_health(request)
+ response = client.delete_signed_url_key(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.BackendServiceGroupHealth)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_health_rest_required_fields(
- request_type=compute.GetHealthBackendServiceRequest,
+def test_delete_signed_url_key_rest_required_fields(
+ request_type=compute.DeleteSignedUrlKeyBackendServiceRequest,
):
transport_class = transports.BackendServicesRestTransport
request_init = {}
request_init["backend_service"] = ""
+ request_init["key_name"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -2235,25 +2219,38 @@ def test_get_health_rest_required_fields(
)
# verify fields with default values are dropped
+ assert "keyName" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_health._get_unset_required_fields(jsonified_request)
+ ).delete_signed_url_key._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ assert "keyName" in jsonified_request
+ assert jsonified_request["keyName"] == request_init["key_name"]
jsonified_request["backendService"] = "backend_service_value"
+ jsonified_request["keyName"] = "key_name_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_health._get_unset_required_fields(jsonified_request)
+ ).delete_signed_url_key._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "key_name",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "backendService" in jsonified_request
assert jsonified_request["backendService"] == "backend_service_value"
+ assert "keyName" in jsonified_request
+ assert jsonified_request["keyName"] == "key_name_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -2264,7 +2261,7 @@ def test_get_health_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.BackendServiceGroupHealth()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2278,42 +2275,51 @@ def test_get_health_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendServiceGroupHealth.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_health(request)
+ response = client.delete_signed_url_key(request)
- expected_params = []
+ expected_params = [
+ (
+ "keyName",
+ "",
+ ),
+ ]
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_health_rest_unset_required_fields():
+def test_delete_signed_url_key_rest_unset_required_fields():
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_health._get_unset_required_fields({})
+ unset_fields = transport.delete_signed_url_key._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(
+ (
+ "keyName",
+ "requestId",
+ )
+ )
& set(
(
"backendService",
+ "keyName",
"project",
- "resourceGroupReferenceResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_health_rest_interceptors(null_interceptor):
+def test_delete_signed_url_key_rest_interceptors(null_interceptor):
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2326,9 +2332,9 @@ def test_get_health_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendServicesRestInterceptor, "post_get_health"
+ transports.BackendServicesRestInterceptor, "post_delete_signed_url_key"
) as post, mock.patch.object(
- transports.BackendServicesRestInterceptor, "pre_get_health"
+ transports.BackendServicesRestInterceptor, "pre_delete_signed_url_key"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2343,19 +2349,17 @@ def test_get_health_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.BackendServiceGroupHealth.to_json(
- compute.BackendServiceGroupHealth()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetHealthBackendServiceRequest()
+ request = compute.DeleteSignedUrlKeyBackendServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.BackendServiceGroupHealth
+ post.return_value = compute.Operation
- client.get_health(
+ client.delete_signed_url_key(
request,
metadata=[
("key", "val"),
@@ -2367,8 +2371,9 @@ def test_get_health_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_health_rest_bad_request(
- transport: str = "rest", request_type=compute.GetHealthBackendServiceRequest
+def test_delete_signed_url_key_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DeleteSignedUrlKeyBackendServiceRequest,
):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2377,7 +2382,6 @@ def test_get_health_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "backend_service": "sample2"}
- request_init["resource_group_reference_resource"] = {"group": "group_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2389,10 +2393,10 @@ def test_get_health_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_health(request)
+ client.delete_signed_url_key(request)
-def test_get_health_rest_flattened():
+def test_delete_signed_url_key_rest_flattened():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2401,7 +2405,7 @@ def test_get_health_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendServiceGroupHealth()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "backend_service": "sample2"}
@@ -2410,34 +2414,32 @@ def test_get_health_rest_flattened():
mock_args = dict(
project="project_value",
backend_service="backend_service_value",
- resource_group_reference_resource=compute.ResourceGroupReference(
- group="group_value"
- ),
+ key_name="key_name_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendServiceGroupHealth.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_health(**mock_args)
+ client.delete_signed_url_key(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}/getHealth"
+ "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}/deleteSignedUrlKey"
% client.transport._host,
args[1],
)
-def test_get_health_rest_flattened_error(transport: str = "rest"):
+def test_delete_signed_url_key_rest_flattened_error(transport: str = "rest"):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2446,17 +2448,15 @@ def test_get_health_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_health(
- compute.GetHealthBackendServiceRequest(),
+ client.delete_signed_url_key(
+ compute.DeleteSignedUrlKeyBackendServiceRequest(),
project="project_value",
backend_service="backend_service_value",
- resource_group_reference_resource=compute.ResourceGroupReference(
- group="group_value"
- ),
+ key_name="key_name_value",
)
-def test_get_health_rest_error():
+def test_delete_signed_url_key_rest_error():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2465,165 +2465,18 @@ def test_get_health_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertBackendServiceRequest,
+ compute.DeleteSignedUrlKeyBackendServiceRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_delete_signed_url_key_unary_rest(request_type):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["backend_service_resource"] = {
- "affinity_cookie_ttl_sec": 2432,
- "backends": [
- {
- "balancing_mode": "balancing_mode_value",
- "capacity_scaler": 0.1575,
- "description": "description_value",
- "failover": True,
- "group": "group_value",
- "max_connections": 1608,
- "max_connections_per_endpoint": 2990,
- "max_connections_per_instance": 2978,
- "max_rate": 849,
- "max_rate_per_endpoint": 0.22310000000000002,
- "max_rate_per_instance": 0.22190000000000001,
- "max_utilization": 0.1633,
- }
- ],
- "cdn_policy": {
- "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
- "cache_key_policy": {
- "include_host": True,
- "include_http_headers": [
- "include_http_headers_value_1",
- "include_http_headers_value_2",
- ],
- "include_named_cookies": [
- "include_named_cookies_value_1",
- "include_named_cookies_value_2",
- ],
- "include_protocol": True,
- "include_query_string": True,
- "query_string_blacklist": [
- "query_string_blacklist_value_1",
- "query_string_blacklist_value_2",
- ],
- "query_string_whitelist": [
- "query_string_whitelist_value_1",
- "query_string_whitelist_value_2",
- ],
- },
- "cache_mode": "cache_mode_value",
- "client_ttl": 1074,
- "default_ttl": 1176,
- "max_ttl": 761,
- "negative_caching": True,
- "negative_caching_policy": [{"code": 411, "ttl": 340}],
- "request_coalescing": True,
- "serve_while_stale": 1813,
- "signed_url_cache_max_age_sec": 2890,
- "signed_url_key_names": [
- "signed_url_key_names_value_1",
- "signed_url_key_names_value_2",
- ],
- },
- "circuit_breakers": {
- "max_connections": 1608,
- "max_pending_requests": 2149,
- "max_requests": 1313,
- "max_requests_per_connection": 2902,
- "max_retries": 1187,
- },
- "connection_draining": {"draining_timeout_sec": 2124},
- "connection_tracking_policy": {
- "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
- "enable_strong_affinity": True,
- "idle_timeout_sec": 1694,
- "tracking_mode": "tracking_mode_value",
- },
- "consistent_hash": {
- "http_cookie": {
- "name": "name_value",
- "path": "path_value",
- "ttl": {"nanos": 543, "seconds": 751},
- },
- "http_header_name": "http_header_name_value",
- "minimum_ring_size": 1829,
- },
- "creation_timestamp": "creation_timestamp_value",
- "custom_request_headers": [
- "custom_request_headers_value_1",
- "custom_request_headers_value_2",
- ],
- "custom_response_headers": [
- "custom_response_headers_value_1",
- "custom_response_headers_value_2",
- ],
- "description": "description_value",
- "edge_security_policy": "edge_security_policy_value",
- "enable_c_d_n": True,
- "failover_policy": {
- "disable_connection_drain_on_failover": True,
- "drop_traffic_if_unhealthy": True,
- "failover_ratio": 0.1494,
- },
- "fingerprint": "fingerprint_value",
- "health_checks": ["health_checks_value_1", "health_checks_value_2"],
- "iap": {
- "enabled": True,
- "oauth2_client_id": "oauth2_client_id_value",
- "oauth2_client_secret": "oauth2_client_secret_value",
- "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
- },
- "id": 205,
- "kind": "kind_value",
- "load_balancing_scheme": "load_balancing_scheme_value",
- "locality_lb_policies": [
- {
- "custom_policy": {"data": "data_value", "name": "name_value"},
- "policy": {"name": "name_value"},
- }
- ],
- "locality_lb_policy": "locality_lb_policy_value",
- "log_config": {"enable": True, "sample_rate": 0.1165},
- "max_stream_duration": {},
- "name": "name_value",
- "network": "network_value",
- "outlier_detection": {
- "base_ejection_time": {},
- "consecutive_errors": 1956,
- "consecutive_gateway_failure": 2880,
- "enforcing_consecutive_errors": 3006,
- "enforcing_consecutive_gateway_failure": 3930,
- "enforcing_success_rate": 2334,
- "interval": {},
- "max_ejection_percent": 2118,
- "success_rate_minimum_hosts": 2799,
- "success_rate_request_volume": 2915,
- "success_rate_stdev_factor": 2663,
- },
- "port": 453,
- "port_name": "port_name_value",
- "protocol": "protocol_value",
- "region": "region_value",
- "security_policy": "security_policy_value",
- "security_settings": {
- "client_tls_policy": "client_tls_policy_value",
- "subject_alt_names": [
- "subject_alt_names_value_1",
- "subject_alt_names_value_2",
- ],
- },
- "self_link": "self_link_value",
- "session_affinity": "session_affinity_value",
- "subsetting": {"policy": "policy_value"},
- "timeout_sec": 1185,
- }
+ request_init = {"project": "sample1", "backend_service": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -2660,40 +2513,20 @@ def test_insert_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_signed_url_key_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertBackendServiceRequest,
+def test_delete_signed_url_key_unary_rest_required_fields(
+ request_type=compute.DeleteSignedUrlKeyBackendServiceRequest,
):
transport_class = transports.BackendServicesRestTransport
request_init = {}
+ request_init["backend_service"] = ""
+ request_init["key_name"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -2703,24 +2536,38 @@ def test_insert_unary_rest_required_fields(
)
# verify fields with default values are dropped
+ assert "keyName" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete_signed_url_key._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ assert "keyName" in jsonified_request
+ assert jsonified_request["keyName"] == request_init["key_name"]
+ jsonified_request["backendService"] = "backend_service_value"
+ jsonified_request["keyName"] = "key_name_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete_signed_url_key._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "key_name",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "backendService" in jsonified_request
+ assert jsonified_request["backendService"] == "backend_service_value"
+ assert "keyName" in jsonified_request
+ assert jsonified_request["keyName"] == "key_name_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -2745,7 +2592,6 @@ def test_insert_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -2754,32 +2600,43 @@ def test_insert_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_signed_url_key_unary(request)
- expected_params = []
+ expected_params = [
+ (
+ "keyName",
+ "",
+ ),
+ ]
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_delete_signed_url_key_unary_rest_unset_required_fields():
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.delete_signed_url_key._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
- & set(
+ set(
(
- "backendServiceResource",
- "project",
+ "keyName",
+ "requestId",
)
)
- )
+ & set(
+ (
+ "backendService",
+ "keyName",
+ "project",
+ )
+ )
+ )
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_delete_signed_url_key_unary_rest_interceptors(null_interceptor):
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2792,9 +2649,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendServicesRestInterceptor, "post_insert"
+ transports.BackendServicesRestInterceptor, "post_delete_signed_url_key"
) as post, mock.patch.object(
- transports.BackendServicesRestInterceptor, "pre_insert"
+ transports.BackendServicesRestInterceptor, "pre_delete_signed_url_key"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2811,7 +2668,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.InsertBackendServiceRequest()
+ request = compute.DeleteSignedUrlKeyBackendServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2819,7 +2676,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.insert_unary(
+ client.delete_signed_url_key_unary(
request,
metadata=[
("key", "val"),
@@ -2831,8 +2688,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertBackendServiceRequest
+def test_delete_signed_url_key_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DeleteSignedUrlKeyBackendServiceRequest,
):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2840,154 +2698,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["backend_service_resource"] = {
- "affinity_cookie_ttl_sec": 2432,
- "backends": [
- {
- "balancing_mode": "balancing_mode_value",
- "capacity_scaler": 0.1575,
- "description": "description_value",
- "failover": True,
- "group": "group_value",
- "max_connections": 1608,
- "max_connections_per_endpoint": 2990,
- "max_connections_per_instance": 2978,
- "max_rate": 849,
- "max_rate_per_endpoint": 0.22310000000000002,
- "max_rate_per_instance": 0.22190000000000001,
- "max_utilization": 0.1633,
- }
- ],
- "cdn_policy": {
- "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
- "cache_key_policy": {
- "include_host": True,
- "include_http_headers": [
- "include_http_headers_value_1",
- "include_http_headers_value_2",
- ],
- "include_named_cookies": [
- "include_named_cookies_value_1",
- "include_named_cookies_value_2",
- ],
- "include_protocol": True,
- "include_query_string": True,
- "query_string_blacklist": [
- "query_string_blacklist_value_1",
- "query_string_blacklist_value_2",
- ],
- "query_string_whitelist": [
- "query_string_whitelist_value_1",
- "query_string_whitelist_value_2",
- ],
- },
- "cache_mode": "cache_mode_value",
- "client_ttl": 1074,
- "default_ttl": 1176,
- "max_ttl": 761,
- "negative_caching": True,
- "negative_caching_policy": [{"code": 411, "ttl": 340}],
- "request_coalescing": True,
- "serve_while_stale": 1813,
- "signed_url_cache_max_age_sec": 2890,
- "signed_url_key_names": [
- "signed_url_key_names_value_1",
- "signed_url_key_names_value_2",
- ],
- },
- "circuit_breakers": {
- "max_connections": 1608,
- "max_pending_requests": 2149,
- "max_requests": 1313,
- "max_requests_per_connection": 2902,
- "max_retries": 1187,
- },
- "connection_draining": {"draining_timeout_sec": 2124},
- "connection_tracking_policy": {
- "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
- "enable_strong_affinity": True,
- "idle_timeout_sec": 1694,
- "tracking_mode": "tracking_mode_value",
- },
- "consistent_hash": {
- "http_cookie": {
- "name": "name_value",
- "path": "path_value",
- "ttl": {"nanos": 543, "seconds": 751},
- },
- "http_header_name": "http_header_name_value",
- "minimum_ring_size": 1829,
- },
- "creation_timestamp": "creation_timestamp_value",
- "custom_request_headers": [
- "custom_request_headers_value_1",
- "custom_request_headers_value_2",
- ],
- "custom_response_headers": [
- "custom_response_headers_value_1",
- "custom_response_headers_value_2",
- ],
- "description": "description_value",
- "edge_security_policy": "edge_security_policy_value",
- "enable_c_d_n": True,
- "failover_policy": {
- "disable_connection_drain_on_failover": True,
- "drop_traffic_if_unhealthy": True,
- "failover_ratio": 0.1494,
- },
- "fingerprint": "fingerprint_value",
- "health_checks": ["health_checks_value_1", "health_checks_value_2"],
- "iap": {
- "enabled": True,
- "oauth2_client_id": "oauth2_client_id_value",
- "oauth2_client_secret": "oauth2_client_secret_value",
- "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
- },
- "id": 205,
- "kind": "kind_value",
- "load_balancing_scheme": "load_balancing_scheme_value",
- "locality_lb_policies": [
- {
- "custom_policy": {"data": "data_value", "name": "name_value"},
- "policy": {"name": "name_value"},
- }
- ],
- "locality_lb_policy": "locality_lb_policy_value",
- "log_config": {"enable": True, "sample_rate": 0.1165},
- "max_stream_duration": {},
- "name": "name_value",
- "network": "network_value",
- "outlier_detection": {
- "base_ejection_time": {},
- "consecutive_errors": 1956,
- "consecutive_gateway_failure": 2880,
- "enforcing_consecutive_errors": 3006,
- "enforcing_consecutive_gateway_failure": 3930,
- "enforcing_success_rate": 2334,
- "interval": {},
- "max_ejection_percent": 2118,
- "success_rate_minimum_hosts": 2799,
- "success_rate_request_volume": 2915,
- "success_rate_stdev_factor": 2663,
- },
- "port": 453,
- "port_name": "port_name_value",
- "protocol": "protocol_value",
- "region": "region_value",
- "security_policy": "security_policy_value",
- "security_settings": {
- "client_tls_policy": "client_tls_policy_value",
- "subject_alt_names": [
- "subject_alt_names_value_1",
- "subject_alt_names_value_2",
- ],
- },
- "self_link": "self_link_value",
- "session_affinity": "session_affinity_value",
- "subsetting": {"policy": "policy_value"},
- "timeout_sec": 1185,
- }
+ request_init = {"project": "sample1", "backend_service": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2999,10 +2710,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.delete_signed_url_key_unary(request)
-def test_insert_unary_rest_flattened():
+def test_delete_signed_url_key_unary_rest_flattened():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3014,14 +2725,13 @@ def test_insert_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "backend_service": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- backend_service_resource=compute.BackendService(
- affinity_cookie_ttl_sec=2432
- ),
+ backend_service="backend_service_value",
+ key_name="key_name_value",
)
mock_args.update(sample_request)
@@ -3033,20 +2743,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.delete_signed_url_key_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/backendServices"
+ "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}/deleteSignedUrlKey"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_signed_url_key_unary_rest_flattened_error(transport: str = "rest"):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3055,16 +2765,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertBackendServiceRequest(),
+ client.delete_signed_url_key_unary(
+ compute.DeleteSignedUrlKeyBackendServiceRequest(),
project="project_value",
- backend_service_resource=compute.BackendService(
- affinity_cookie_ttl_sec=2432
- ),
+ backend_service="backend_service_value",
+ key_name="key_name_value",
)
-def test_insert_unary_rest_error():
+def test_delete_signed_url_key_unary_rest_error():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3073,50 +2782,89 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListBackendServicesRequest,
+ compute.GetBackendServiceRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_get_rest(request_type):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "backend_service": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendServiceList(
- id="id_value",
+ return_value = compute.BackendService(
+ affinity_cookie_ttl_sec=2432,
+ creation_timestamp="creation_timestamp_value",
+ custom_request_headers=["custom_request_headers_value"],
+ custom_response_headers=["custom_response_headers_value"],
+ description="description_value",
+ edge_security_policy="edge_security_policy_value",
+ enable_c_d_n=True,
+ fingerprint="fingerprint_value",
+ health_checks=["health_checks_value"],
+ id=205,
kind="kind_value",
- next_page_token="next_page_token_value",
+ load_balancing_scheme="load_balancing_scheme_value",
+ locality_lb_policy="locality_lb_policy_value",
+ name="name_value",
+ network="network_value",
+ port=453,
+ port_name="port_name_value",
+ protocol="protocol_value",
+ region="region_value",
+ security_policy="security_policy_value",
self_link="self_link_value",
+ session_affinity="session_affinity_value",
+ timeout_sec=1185,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendServiceList.to_json(return_value)
+ json_return_value = compute.BackendService.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, compute.BackendService)
+ assert response.affinity_cookie_ttl_sec == 2432
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.custom_request_headers == ["custom_request_headers_value"]
+ assert response.custom_response_headers == ["custom_response_headers_value"]
+ assert response.description == "description_value"
+ assert response.edge_security_policy == "edge_security_policy_value"
+ assert response.enable_c_d_n is True
+ assert response.fingerprint == "fingerprint_value"
+ assert response.health_checks == ["health_checks_value"]
+ assert response.id == 205
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
-
-
-def test_list_rest_required_fields(request_type=compute.ListBackendServicesRequest):
- transport_class = transports.BackendServicesRestTransport
-
- request_init = {}
+ assert response.load_balancing_scheme == "load_balancing_scheme_value"
+ assert response.locality_lb_policy == "locality_lb_policy_value"
+ assert response.name == "name_value"
+ assert response.network == "network_value"
+ assert response.port == 453
+ assert response.port_name == "port_name_value"
+ assert response.protocol == "protocol_value"
+ assert response.region == "region_value"
+ assert response.security_policy == "security_policy_value"
+ assert response.self_link == "self_link_value"
+ assert response.session_affinity == "session_affinity_value"
+ assert response.timeout_sec == 1185
+
+
+def test_get_rest_required_fields(request_type=compute.GetBackendServiceRequest):
+ transport_class = transports.BackendServicesRestTransport
+
+ request_init = {}
+ request_init["backend_service"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -3129,29 +2877,22 @@ def test_list_rest_required_fields(request_type=compute.ListBackendServicesReque
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["backendService"] = "backend_service_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "backendService" in jsonified_request
+ assert jsonified_request["backendService"] == "backend_service_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -3162,7 +2903,7 @@ def test_list_rest_required_fields(request_type=compute.ListBackendServicesReque
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.BackendServiceList()
+ return_value = compute.BackendService()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3180,39 +2921,36 @@ def test_list_rest_required_fields(request_type=compute.ListBackendServicesReque
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendServiceList.to_json(return_value)
+ json_return_value = compute.BackendService.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(())
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "backendService",
+ "project",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3225,9 +2963,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendServicesRestInterceptor, "post_list"
+ transports.BackendServicesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.BackendServicesRestInterceptor, "pre_list"
+ transports.BackendServicesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3242,19 +2980,19 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.BackendServiceList.to_json(
- compute.BackendServiceList()
+ req.return_value._content = compute.BackendService.to_json(
+ compute.BackendService()
)
- request = compute.ListBackendServicesRequest()
+ request = compute.GetBackendServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.BackendServiceList
+ post.return_value = compute.BackendService
- client.list(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -3266,8 +3004,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListBackendServicesRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetBackendServiceRequest
):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3275,7 +3013,7 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "backend_service": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3287,10 +3025,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.get(request)
-def test_list_rest_flattened():
+def test_get_rest_flattened():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3299,39 +3037,40 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendServiceList()
+ return_value = compute.BackendService()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "backend_service": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ backend_service="backend_service_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendServiceList.to_json(return_value)
+ json_return_value = compute.BackendService.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/backendServices"
+ "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3340,115 +3079,342 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListBackendServicesRequest(),
+ client.get(
+ compute.GetBackendServiceRequest(),
project="project_value",
+ backend_service="backend_service_value",
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_get_rest_error():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetHealthBackendServiceRequest,
+ dict,
+ ],
+)
+def test_get_health_rest(request_type):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ transport="rest",
)
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init["resource_group_reference_resource"] = {"group": "group_value"}
+ request = request_type(request_init)
+
# Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.BackendServiceList(
- items=[
- compute.BackendService(),
- compute.BackendService(),
- compute.BackendService(),
- ],
- next_page_token="abc",
- ),
- compute.BackendServiceList(
- items=[],
- next_page_token="def",
- ),
- compute.BackendServiceList(
- items=[
- compute.BackendService(),
- ],
- next_page_token="ghi",
- ),
- compute.BackendServiceList(
- items=[
- compute.BackendService(),
- compute.BackendService(),
- ],
- ),
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendServiceGroupHealth(
+ kind="kind_value",
)
- # Two responses for two calls
- response = response + response
- # Wrap the values into proper Response objs
- response = tuple(compute.BackendServiceList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendServiceGroupHealth.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_health(request)
- sample_request = {"project": "sample1"}
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.BackendServiceGroupHealth)
+ assert response.kind == "kind_value"
- pager = client.list(request=sample_request)
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.BackendService) for i in results)
+def test_get_health_rest_required_fields(
+ request_type=compute.GetHealthBackendServiceRequest,
+):
+ transport_class = transports.BackendServicesRestTransport
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
+ request_init = {}
+ request_init["backend_service"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_health._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["backendService"] = "backend_service_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_health._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "backendService" in jsonified_request
+ assert jsonified_request["backendService"] == "backend_service_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
-@pytest.mark.parametrize(
- "request_type",
- [
- compute.PatchBackendServiceRequest,
- dict,
- ],
-)
-def test_patch_unary_rest(request_type):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
+ request = request_type(request_init)
- # send a request that will satisfy transcoding
- request_init = {"project": "sample1", "backend_service": "sample2"}
- request_init["backend_service_resource"] = {
- "affinity_cookie_ttl_sec": 2432,
- "backends": [
- {
- "balancing_mode": "balancing_mode_value",
- "capacity_scaler": 0.1575,
- "description": "description_value",
- "failover": True,
- "group": "group_value",
- "max_connections": 1608,
- "max_connections_per_endpoint": 2990,
- "max_connections_per_instance": 2978,
- "max_rate": 849,
- "max_rate_per_endpoint": 0.22310000000000002,
- "max_rate_per_instance": 0.22190000000000001,
- "max_utilization": 0.1633,
- }
- ],
- "cdn_policy": {
- "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
- "cache_key_policy": {
- "include_host": True,
- "include_http_headers": [
- "include_http_headers_value_1",
- "include_http_headers_value_2",
- ],
- "include_named_cookies": [
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendServiceGroupHealth()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendServiceGroupHealth.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_health(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_health_rest_unset_required_fields():
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_health._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "backendService",
+ "project",
+ "resourceGroupReferenceResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_health_rest_interceptors(null_interceptor):
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.BackendServicesRestInterceptor(),
+ )
+ client = BackendServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "post_get_health"
+ ) as post, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "pre_get_health"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.BackendServiceGroupHealth.to_json(
+ compute.BackendServiceGroupHealth()
+ )
+
+ request = compute.GetHealthBackendServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.BackendServiceGroupHealth
+
+ client.get_health(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_health_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetHealthBackendServiceRequest
+):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init["resource_group_reference_resource"] = {"group": "group_value"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_health(request)
+
+
+def test_get_health_rest_flattened():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendServiceGroupHealth()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "backend_service": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ backend_service="backend_service_value",
+ resource_group_reference_resource=compute.ResourceGroupReference(
+ group="group_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendServiceGroupHealth.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_health(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}/getHealth"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_health_rest_flattened_error(transport: str = "rest"):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_health(
+ compute.GetHealthBackendServiceRequest(),
+ project="project_value",
+ backend_service="backend_service_value",
+ resource_group_reference_resource=compute.ResourceGroupReference(
+ group="group_value"
+ ),
+ )
+
+
+def test_get_health_rest_error():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertBackendServiceRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
"include_named_cookies_value_1",
"include_named_cookies_value_2",
],
@@ -3605,10 +3571,3235 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertBackendServiceRequest):
+ transport_class = transports.BackendServicesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "backendServiceResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.BackendServicesRestInterceptor(),
+ )
+ client = BackendServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertBackendServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertBackendServiceRequest
+):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/backendServices"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertBackendServiceRequest(),
+ project="project_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertBackendServiceRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertBackendServiceRequest,
+):
+ transport_class = transports.BackendServicesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "backendServiceResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.BackendServicesRestInterceptor(),
+ )
+ client = BackendServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertBackendServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertBackendServiceRequest
+):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/backendServices"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertBackendServiceRequest(),
+ project="project_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListBackendServicesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendServiceList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendServiceList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListBackendServicesRequest):
+ transport_class = transports.BackendServicesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendServiceList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendServiceList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.BackendServicesRestInterceptor(),
+ )
+ client = BackendServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.BackendServiceList.to_json(
+ compute.BackendServiceList()
+ )
+
+ request = compute.ListBackendServicesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.BackendServiceList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListBackendServicesRequest
+):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendServiceList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendServiceList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/backendServices"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListBackendServicesRequest(),
+ project="project_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.BackendServiceList(
+ items=[
+ compute.BackendService(),
+ compute.BackendService(),
+ compute.BackendService(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.BackendServiceList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.BackendServiceList(
+ items=[
+ compute.BackendService(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.BackendServiceList(
+ items=[
+ compute.BackendService(),
+ compute.BackendService(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.BackendServiceList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.BackendService) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchBackendServiceRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchBackendServiceRequest):
+ transport_class = transports.BackendServicesRestTransport
+
+ request_init = {}
+ request_init["backend_service"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["backendService"] = "backend_service_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "backendService" in jsonified_request
+ assert jsonified_request["backendService"] == "backend_service_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "backendService",
+ "backendServiceResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.BackendServicesRestInterceptor(),
+ )
+ client = BackendServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchBackendServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchBackendServiceRequest
+):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "backend_service": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ backend_service="backend_service_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchBackendServiceRequest(),
+ project="project_value",
+ backend_service="backend_service_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
+ )
+
+
+def test_patch_rest_error():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchBackendServiceRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchBackendServiceRequest,
+):
+ transport_class = transports.BackendServicesRestTransport
+
+ request_init = {}
+ request_init["backend_service"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["backendService"] = "backend_service_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "backendService" in jsonified_request
+ assert jsonified_request["backendService"] == "backend_service_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_unary_rest_unset_required_fields():
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "backendService",
+ "backendServiceResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_unary_rest_interceptors(null_interceptor):
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.BackendServicesRestInterceptor(),
+ )
+ client = BackendServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchBackendServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchBackendServiceRequest
+):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_unary(request)
+
+
+def test_patch_unary_rest_flattened():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "backend_service": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ backend_service="backend_service_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_unary(
+ compute.PatchBackendServiceRequest(),
+ project="project_value",
+ backend_service="backend_service_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
+ )
+
+
+def test_patch_unary_rest_error():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetEdgeSecurityPolicyBackendServiceRequest,
+ dict,
+ ],
+)
+def test_set_edge_security_policy_rest(request_type):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init["security_policy_reference_resource"] = {
+ "security_policy": "security_policy_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_edge_security_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_set_edge_security_policy_rest_required_fields(
+ request_type=compute.SetEdgeSecurityPolicyBackendServiceRequest,
+):
+ transport_class = transports.BackendServicesRestTransport
+
+ request_init = {}
+ request_init["backend_service"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_edge_security_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["backendService"] = "backend_service_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_edge_security_policy._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "backendService" in jsonified_request
+ assert jsonified_request["backendService"] == "backend_service_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_edge_security_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_edge_security_policy_rest_unset_required_fields():
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_edge_security_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "backendService",
+ "project",
+ "securityPolicyReferenceResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_edge_security_policy_rest_interceptors(null_interceptor):
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.BackendServicesRestInterceptor(),
+ )
+ client = BackendServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "post_set_edge_security_policy"
+ ) as post, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "pre_set_edge_security_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetEdgeSecurityPolicyBackendServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_edge_security_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_edge_security_policy_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.SetEdgeSecurityPolicyBackendServiceRequest,
+):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init["security_policy_reference_resource"] = {
+ "security_policy": "security_policy_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_edge_security_policy(request)
+
+
+def test_set_edge_security_policy_rest_flattened():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "backend_service": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ backend_service="backend_service_value",
+ security_policy_reference_resource=compute.SecurityPolicyReference(
+ security_policy="security_policy_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_edge_security_policy(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}/setEdgeSecurityPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_edge_security_policy_rest_flattened_error(transport: str = "rest"):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_edge_security_policy(
+ compute.SetEdgeSecurityPolicyBackendServiceRequest(),
+ project="project_value",
+ backend_service="backend_service_value",
+ security_policy_reference_resource=compute.SecurityPolicyReference(
+ security_policy="security_policy_value"
+ ),
+ )
+
+
+def test_set_edge_security_policy_rest_error():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetEdgeSecurityPolicyBackendServiceRequest,
+ dict,
+ ],
+)
+def test_set_edge_security_policy_unary_rest(request_type):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init["security_policy_reference_resource"] = {
+ "security_policy": "security_policy_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_edge_security_policy_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_set_edge_security_policy_unary_rest_required_fields(
+ request_type=compute.SetEdgeSecurityPolicyBackendServiceRequest,
+):
+ transport_class = transports.BackendServicesRestTransport
+
+ request_init = {}
+ request_init["backend_service"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_edge_security_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["backendService"] = "backend_service_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_edge_security_policy._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "backendService" in jsonified_request
+ assert jsonified_request["backendService"] == "backend_service_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_edge_security_policy_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_edge_security_policy_unary_rest_unset_required_fields():
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_edge_security_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "backendService",
+ "project",
+ "securityPolicyReferenceResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_edge_security_policy_unary_rest_interceptors(null_interceptor):
+ transport = transports.BackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.BackendServicesRestInterceptor(),
+ )
+ client = BackendServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "post_set_edge_security_policy"
+ ) as post, mock.patch.object(
+ transports.BackendServicesRestInterceptor, "pre_set_edge_security_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetEdgeSecurityPolicyBackendServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_edge_security_policy_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_edge_security_policy_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.SetEdgeSecurityPolicyBackendServiceRequest,
+):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init["security_policy_reference_resource"] = {
+ "security_policy": "security_policy_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_edge_security_policy_unary(request)
+
+
+def test_set_edge_security_policy_unary_rest_flattened():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "backend_service": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ backend_service="backend_service_value",
+ security_policy_reference_resource=compute.SecurityPolicyReference(
+ security_policy="security_policy_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_edge_security_policy_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}/setEdgeSecurityPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_edge_security_policy_unary_rest_flattened_error(transport: str = "rest"):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_edge_security_policy_unary(
+ compute.SetEdgeSecurityPolicyBackendServiceRequest(),
+ project="project_value",
+ backend_service="backend_service_value",
+ security_policy_reference_resource=compute.SecurityPolicyReference(
+ security_policy="security_policy_value"
+ ),
+ )
+
+
+def test_set_edge_security_policy_unary_rest_error():
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetSecurityPolicyBackendServiceRequest,
+ dict,
+ ],
+)
+def test_set_security_policy_rest(request_type):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init["security_policy_reference_resource"] = {
+ "security_policy": "security_policy_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_security_policy(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -3633,8 +6824,8 @@ def test_patch_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchBackendServiceRequest,
+def test_set_security_policy_rest_required_fields(
+ request_type=compute.SetSecurityPolicyBackendServiceRequest,
):
transport_class = transports.BackendServicesRestTransport
@@ -3652,7 +6843,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).set_security_policy._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3662,7 +6853,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).set_security_policy._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -3691,7 +6882,7 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -3703,33 +6894,33 @@ def test_patch_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.set_security_policy(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_set_security_policy_rest_unset_required_fields():
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.set_security_policy._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"backendService",
- "backendServiceResource",
"project",
+ "securityPolicyReferenceResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_set_security_policy_rest_interceptors(null_interceptor):
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3742,9 +6933,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendServicesRestInterceptor, "post_patch"
+ transports.BackendServicesRestInterceptor, "post_set_security_policy"
) as post, mock.patch.object(
- transports.BackendServicesRestInterceptor, "pre_patch"
+ transports.BackendServicesRestInterceptor, "pre_set_security_policy"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3754,189 +6945,45 @@ def test_patch_unary_rest_interceptors(null_interceptor):
"uri": "my_uri",
"body": None,
"query_params": {},
- }
-
- req.return_value = Response()
- req.return_value.status_code = 200
- req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
-
- request = compute.PatchBackendServiceRequest()
- metadata = [
- ("key", "val"),
- ("cephalopod", "squid"),
- ]
- pre.return_value = request, metadata
- post.return_value = compute.Operation
-
- client.patch_unary(
- request,
- metadata=[
- ("key", "val"),
- ("cephalopod", "squid"),
- ],
- )
-
- pre.assert_called_once()
- post.assert_called_once()
-
-
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchBackendServiceRequest
-):
- client = BackendServicesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
- )
-
- # send a request that will satisfy transcoding
- request_init = {"project": "sample1", "backend_service": "sample2"}
- request_init["backend_service_resource"] = {
- "affinity_cookie_ttl_sec": 2432,
- "backends": [
- {
- "balancing_mode": "balancing_mode_value",
- "capacity_scaler": 0.1575,
- "description": "description_value",
- "failover": True,
- "group": "group_value",
- "max_connections": 1608,
- "max_connections_per_endpoint": 2990,
- "max_connections_per_instance": 2978,
- "max_rate": 849,
- "max_rate_per_endpoint": 0.22310000000000002,
- "max_rate_per_instance": 0.22190000000000001,
- "max_utilization": 0.1633,
- }
- ],
- "cdn_policy": {
- "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
- "cache_key_policy": {
- "include_host": True,
- "include_http_headers": [
- "include_http_headers_value_1",
- "include_http_headers_value_2",
- ],
- "include_named_cookies": [
- "include_named_cookies_value_1",
- "include_named_cookies_value_2",
- ],
- "include_protocol": True,
- "include_query_string": True,
- "query_string_blacklist": [
- "query_string_blacklist_value_1",
- "query_string_blacklist_value_2",
- ],
- "query_string_whitelist": [
- "query_string_whitelist_value_1",
- "query_string_whitelist_value_2",
- ],
- },
- "cache_mode": "cache_mode_value",
- "client_ttl": 1074,
- "default_ttl": 1176,
- "max_ttl": 761,
- "negative_caching": True,
- "negative_caching_policy": [{"code": 411, "ttl": 340}],
- "request_coalescing": True,
- "serve_while_stale": 1813,
- "signed_url_cache_max_age_sec": 2890,
- "signed_url_key_names": [
- "signed_url_key_names_value_1",
- "signed_url_key_names_value_2",
- ],
- },
- "circuit_breakers": {
- "max_connections": 1608,
- "max_pending_requests": 2149,
- "max_requests": 1313,
- "max_requests_per_connection": 2902,
- "max_retries": 1187,
- },
- "connection_draining": {"draining_timeout_sec": 2124},
- "connection_tracking_policy": {
- "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
- "enable_strong_affinity": True,
- "idle_timeout_sec": 1694,
- "tracking_mode": "tracking_mode_value",
- },
- "consistent_hash": {
- "http_cookie": {
- "name": "name_value",
- "path": "path_value",
- "ttl": {"nanos": 543, "seconds": 751},
- },
- "http_header_name": "http_header_name_value",
- "minimum_ring_size": 1829,
- },
- "creation_timestamp": "creation_timestamp_value",
- "custom_request_headers": [
- "custom_request_headers_value_1",
- "custom_request_headers_value_2",
- ],
- "custom_response_headers": [
- "custom_response_headers_value_1",
- "custom_response_headers_value_2",
- ],
- "description": "description_value",
- "edge_security_policy": "edge_security_policy_value",
- "enable_c_d_n": True,
- "failover_policy": {
- "disable_connection_drain_on_failover": True,
- "drop_traffic_if_unhealthy": True,
- "failover_ratio": 0.1494,
- },
- "fingerprint": "fingerprint_value",
- "health_checks": ["health_checks_value_1", "health_checks_value_2"],
- "iap": {
- "enabled": True,
- "oauth2_client_id": "oauth2_client_id_value",
- "oauth2_client_secret": "oauth2_client_secret_value",
- "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
- },
- "id": 205,
- "kind": "kind_value",
- "load_balancing_scheme": "load_balancing_scheme_value",
- "locality_lb_policies": [
- {
- "custom_policy": {"data": "data_value", "name": "name_value"},
- "policy": {"name": "name_value"},
- }
- ],
- "locality_lb_policy": "locality_lb_policy_value",
- "log_config": {"enable": True, "sample_rate": 0.1165},
- "max_stream_duration": {},
- "name": "name_value",
- "network": "network_value",
- "outlier_detection": {
- "base_ejection_time": {},
- "consecutive_errors": 1956,
- "consecutive_gateway_failure": 2880,
- "enforcing_consecutive_errors": 3006,
- "enforcing_consecutive_gateway_failure": 3930,
- "enforcing_success_rate": 2334,
- "interval": {},
- "max_ejection_percent": 2118,
- "success_rate_minimum_hosts": 2799,
- "success_rate_request_volume": 2915,
- "success_rate_stdev_factor": 2663,
- },
- "port": 453,
- "port_name": "port_name_value",
- "protocol": "protocol_value",
- "region": "region_value",
- "security_policy": "security_policy_value",
- "security_settings": {
- "client_tls_policy": "client_tls_policy_value",
- "subject_alt_names": [
- "subject_alt_names_value_1",
- "subject_alt_names_value_2",
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetSecurityPolicyBackendServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_security_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
],
- },
- "self_link": "self_link_value",
- "session_affinity": "session_affinity_value",
- "subsetting": {"policy": "policy_value"},
- "timeout_sec": 1185,
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_security_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetSecurityPolicyBackendServiceRequest
+):
+ client = BackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "backend_service": "sample2"}
+ request_init["security_policy_reference_resource"] = {
+ "security_policy": "security_policy_value"
}
request = request_type(request_init)
@@ -3949,10 +6996,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.set_security_policy(request)
-def test_patch_unary_rest_flattened():
+def test_set_security_policy_rest_flattened():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3970,8 +7017,8 @@ def test_patch_unary_rest_flattened():
mock_args = dict(
project="project_value",
backend_service="backend_service_value",
- backend_service_resource=compute.BackendService(
- affinity_cookie_ttl_sec=2432
+ security_policy_reference_resource=compute.SecurityPolicyReference(
+ security_policy="security_policy_value"
),
)
mock_args.update(sample_request)
@@ -3984,20 +7031,20 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.set_security_policy(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}"
+ "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}/setSecurityPolicy"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_security_policy_rest_flattened_error(transport: str = "rest"):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4006,17 +7053,17 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchBackendServiceRequest(),
+ client.set_security_policy(
+ compute.SetSecurityPolicyBackendServiceRequest(),
project="project_value",
backend_service="backend_service_value",
- backend_service_resource=compute.BackendService(
- affinity_cookie_ttl_sec=2432
+ security_policy_reference_resource=compute.SecurityPolicyReference(
+ security_policy="security_policy_value"
),
)
-def test_patch_unary_rest_error():
+def test_set_security_policy_rest_error():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4025,11 +7072,11 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetEdgeSecurityPolicyBackendServiceRequest,
+ compute.SetSecurityPolicyBackendServiceRequest,
dict,
],
)
-def test_set_edge_security_policy_unary_rest(request_type):
+def test_set_security_policy_unary_rest(request_type):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4076,36 +7123,14 @@ def test_set_edge_security_policy_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_edge_security_policy_unary(request)
+ response = client.set_security_policy_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_set_edge_security_policy_unary_rest_required_fields(
- request_type=compute.SetEdgeSecurityPolicyBackendServiceRequest,
+def test_set_security_policy_unary_rest_required_fields(
+ request_type=compute.SetSecurityPolicyBackendServiceRequest,
):
transport_class = transports.BackendServicesRestTransport
@@ -4123,7 +7148,7 @@ def test_set_edge_security_policy_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_edge_security_policy._get_unset_required_fields(jsonified_request)
+ ).set_security_policy._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4133,7 +7158,7 @@ def test_set_edge_security_policy_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_edge_security_policy._get_unset_required_fields(jsonified_request)
+ ).set_security_policy._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -4174,19 +7199,19 @@ def test_set_edge_security_policy_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_edge_security_policy_unary(request)
+ response = client.set_security_policy_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_edge_security_policy_unary_rest_unset_required_fields():
+def test_set_security_policy_unary_rest_unset_required_fields():
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_edge_security_policy._get_unset_required_fields({})
+ unset_fields = transport.set_security_policy._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
@@ -4200,7 +7225,7 @@ def test_set_edge_security_policy_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_edge_security_policy_unary_rest_interceptors(null_interceptor):
+def test_set_security_policy_unary_rest_interceptors(null_interceptor):
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -4213,9 +7238,9 @@ def test_set_edge_security_policy_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendServicesRestInterceptor, "post_set_edge_security_policy"
+ transports.BackendServicesRestInterceptor, "post_set_security_policy"
) as post, mock.patch.object(
- transports.BackendServicesRestInterceptor, "pre_set_edge_security_policy"
+ transports.BackendServicesRestInterceptor, "pre_set_security_policy"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4232,7 +7257,7 @@ def test_set_edge_security_policy_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetEdgeSecurityPolicyBackendServiceRequest()
+ request = compute.SetSecurityPolicyBackendServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -4240,7 +7265,7 @@ def test_set_edge_security_policy_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_edge_security_policy_unary(
+ client.set_security_policy_unary(
request,
metadata=[
("key", "val"),
@@ -4252,9 +7277,8 @@ def test_set_edge_security_policy_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_edge_security_policy_unary_rest_bad_request(
- transport: str = "rest",
- request_type=compute.SetEdgeSecurityPolicyBackendServiceRequest,
+def test_set_security_policy_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetSecurityPolicyBackendServiceRequest
):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4277,10 +7301,10 @@ def test_set_edge_security_policy_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_edge_security_policy_unary(request)
+ client.set_security_policy_unary(request)
-def test_set_edge_security_policy_unary_rest_flattened():
+def test_set_security_policy_unary_rest_flattened():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4312,20 +7336,20 @@ def test_set_edge_security_policy_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_edge_security_policy_unary(**mock_args)
+ client.set_security_policy_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}/setEdgeSecurityPolicy"
+ "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}/setSecurityPolicy"
% client.transport._host,
args[1],
)
-def test_set_edge_security_policy_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_security_policy_unary_rest_flattened_error(transport: str = "rest"):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4334,8 +7358,8 @@ def test_set_edge_security_policy_unary_rest_flattened_error(transport: str = "r
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_edge_security_policy_unary(
- compute.SetEdgeSecurityPolicyBackendServiceRequest(),
+ client.set_security_policy_unary(
+ compute.SetSecurityPolicyBackendServiceRequest(),
project="project_value",
backend_service="backend_service_value",
security_policy_reference_resource=compute.SecurityPolicyReference(
@@ -4344,7 +7368,7 @@ def test_set_edge_security_policy_unary_rest_flattened_error(transport: str = "r
)
-def test_set_edge_security_policy_unary_rest_error():
+def test_set_security_policy_unary_rest_error():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4353,11 +7377,11 @@ def test_set_edge_security_policy_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetSecurityPolicyBackendServiceRequest,
+ compute.UpdateBackendServiceRequest,
dict,
],
)
-def test_set_security_policy_unary_rest(request_type):
+def test_update_rest(request_type):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4365,8 +7389,152 @@ def test_set_security_policy_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "backend_service": "sample2"}
- request_init["security_policy_reference_resource"] = {
- "security_policy": "security_policy_value"
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
}
request = request_type(request_init)
@@ -4404,10 +7572,10 @@ def test_set_security_policy_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_security_policy_unary(request)
+ response = client.update(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -4432,9 +7600,7 @@ def test_set_security_policy_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_set_security_policy_unary_rest_required_fields(
- request_type=compute.SetSecurityPolicyBackendServiceRequest,
-):
+def test_update_rest_required_fields(request_type=compute.UpdateBackendServiceRequest):
transport_class = transports.BackendServicesRestTransport
request_init = {}
@@ -4451,7 +7617,7 @@ def test_set_security_policy_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_security_policy._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4461,7 +7627,7 @@ def test_set_security_policy_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_security_policy._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -4490,7 +7656,7 @@ def test_set_security_policy_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "put",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -4502,33 +7668,33 @@ def test_set_security_policy_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_security_policy_unary(request)
+ response = client.update(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_security_policy_unary_rest_unset_required_fields():
+def test_update_rest_unset_required_fields():
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_security_policy._get_unset_required_fields({})
+ unset_fields = transport.update._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"backendService",
+ "backendServiceResource",
"project",
- "securityPolicyReferenceResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_security_policy_unary_rest_interceptors(null_interceptor):
+def test_update_rest_interceptors(null_interceptor):
transport = transports.BackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -4541,9 +7707,9 @@ def test_set_security_policy_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.BackendServicesRestInterceptor, "post_set_security_policy"
+ transports.BackendServicesRestInterceptor, "post_update"
) as post, mock.patch.object(
- transports.BackendServicesRestInterceptor, "pre_set_security_policy"
+ transports.BackendServicesRestInterceptor, "pre_update"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4560,7 +7726,7 @@ def test_set_security_policy_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetSecurityPolicyBackendServiceRequest()
+ request = compute.UpdateBackendServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -4568,7 +7734,7 @@ def test_set_security_policy_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_security_policy_unary(
+ client.update(
request,
metadata=[
("key", "val"),
@@ -4580,8 +7746,8 @@ def test_set_security_policy_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_security_policy_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SetSecurityPolicyBackendServiceRequest
+def test_update_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateBackendServiceRequest
):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4590,8 +7756,152 @@ def test_set_security_policy_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "backend_service": "sample2"}
- request_init["security_policy_reference_resource"] = {
- "security_policy": "security_policy_value"
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
}
request = request_type(request_init)
@@ -4604,10 +7914,10 @@ def test_set_security_policy_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_security_policy_unary(request)
+ client.update(request)
-def test_set_security_policy_unary_rest_flattened():
+def test_update_rest_flattened():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4625,8 +7935,8 @@ def test_set_security_policy_unary_rest_flattened():
mock_args = dict(
project="project_value",
backend_service="backend_service_value",
- security_policy_reference_resource=compute.SecurityPolicyReference(
- security_policy="security_policy_value"
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
),
)
mock_args.update(sample_request)
@@ -4639,20 +7949,20 @@ def test_set_security_policy_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_security_policy_unary(**mock_args)
+ client.update(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}/setSecurityPolicy"
+ "%s/compute/v1/projects/{project}/global/backendServices/{backend_service}"
% client.transport._host,
args[1],
)
-def test_set_security_policy_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_rest_flattened_error(transport: str = "rest"):
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4661,17 +7971,17 @@ def test_set_security_policy_unary_rest_flattened_error(transport: str = "rest")
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_security_policy_unary(
- compute.SetSecurityPolicyBackendServiceRequest(),
+ client.update(
+ compute.UpdateBackendServiceRequest(),
project="project_value",
backend_service="backend_service_value",
- security_policy_reference_resource=compute.SecurityPolicyReference(
- security_policy="security_policy_value"
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
),
)
-def test_set_security_policy_unary_rest_error():
+def test_update_rest_error():
client = BackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4879,28 +8189,6 @@ def test_update_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_unary_rest_required_fields(
@@ -5367,6 +8655,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = BackendServicesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_backend_services_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -5409,6 +8710,14 @@ def test_backend_services_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_backend_services_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_disk_types.py b/tests/unit/gapic/compute_v1/test_disk_types.py
index 1e21e1acf..05dacdca2 100644
--- a/tests/unit/gapic/compute_v1/test_disk_types.py
+++ b/tests/unit/gapic/compute_v1/test_disk_types.py
@@ -1570,6 +1570,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = DiskTypesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_disk_types_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -1603,6 +1616,14 @@ def test_disk_types_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_disk_types_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_disks.py b/tests/unit/gapic/compute_v1/test_disks.py
index 62cfab0e3..86ce50da2 100644
--- a/tests/unit/gapic/compute_v1/test_disks.py
+++ b/tests/unit/gapic/compute_v1/test_disks.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -509,7 +511,7 @@ def test_disks_client_client_options_credentials_file(
dict,
],
)
-def test_add_resource_policies_unary_rest(request_type):
+def test_add_resource_policies_rest(request_type):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -556,10 +558,10 @@ def test_add_resource_policies_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_resource_policies_unary(request)
+ response = client.add_resource_policies(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -584,7 +586,7 @@ def test_add_resource_policies_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_add_resource_policies_unary_rest_required_fields(
+def test_add_resource_policies_rest_required_fields(
request_type=compute.AddResourcePoliciesDiskRequest,
):
transport_class = transports.DisksRestTransport
@@ -658,14 +660,14 @@ def test_add_resource_policies_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_resource_policies_unary(request)
+ response = client.add_resource_policies(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_add_resource_policies_unary_rest_unset_required_fields():
+def test_add_resource_policies_rest_unset_required_fields():
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -685,7 +687,7 @@ def test_add_resource_policies_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_resource_policies_unary_rest_interceptors(null_interceptor):
+def test_add_resource_policies_rest_interceptors(null_interceptor):
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
@@ -723,7 +725,7 @@ def test_add_resource_policies_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_resource_policies_unary(
+ client.add_resource_policies(
request,
metadata=[
("key", "val"),
@@ -735,7 +737,7 @@ def test_add_resource_policies_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_resource_policies_unary_rest_bad_request(
+def test_add_resource_policies_rest_bad_request(
transport: str = "rest", request_type=compute.AddResourcePoliciesDiskRequest
):
client = DisksClient(
@@ -759,10 +761,10 @@ def test_add_resource_policies_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_resource_policies_unary(request)
+ client.add_resource_policies(request)
-def test_add_resource_policies_unary_rest_flattened():
+def test_add_resource_policies_rest_flattened():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -795,7 +797,7 @@ def test_add_resource_policies_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_resource_policies_unary(**mock_args)
+ client.add_resource_policies(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -808,7 +810,7 @@ def test_add_resource_policies_unary_rest_flattened():
)
-def test_add_resource_policies_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_resource_policies_rest_flattened_error(transport: str = "rest"):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -817,7 +819,7 @@ def test_add_resource_policies_unary_rest_flattened_error(transport: str = "rest
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_resource_policies_unary(
+ client.add_resource_policies(
compute.AddResourcePoliciesDiskRequest(),
project="project_value",
zone="zone_value",
@@ -828,7 +830,7 @@ def test_add_resource_policies_unary_rest_flattened_error(transport: str = "rest
)
-def test_add_resource_policies_unary_rest_error():
+def test_add_resource_policies_rest_error():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -837,55 +839,72 @@ def test_add_resource_policies_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.AggregatedListDisksRequest,
+ compute.AddResourcePoliciesDiskRequest,
dict,
],
)
-def test_aggregated_list_rest(request_type):
+def test_add_resource_policies_unary_rest(request_type):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ request_init["disks_add_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.DiskAggregatedList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- unreachables=["unreachables_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.DiskAggregatedList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.aggregated_list(request)
+ response = client.add_resource_policies_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.AggregatedListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
- assert response.unreachables == ["unreachables_value"]
+ assert isinstance(response, compute.Operation)
-def test_aggregated_list_rest_required_fields(
- request_type=compute.AggregatedListDisksRequest,
+def test_add_resource_policies_unary_rest_required_fields(
+ request_type=compute.AddResourcePoliciesDiskRequest,
):
transport_class = transports.DisksRestTransport
request_init = {}
+ request_init["disk"] = ""
request_init["project"] = ""
+ request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -897,32 +916,29 @@ def test_aggregated_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).aggregated_list._get_unset_required_fields(jsonified_request)
+ ).add_resource_policies._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["disk"] = "disk_value"
jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).aggregated_list._get_unset_required_fields(jsonified_request)
+ ).add_resource_policies._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "include_all_scopes",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "disk" in jsonified_request
+ assert jsonified_request["disk"] == "disk_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -931,7 +947,7 @@ def test_aggregated_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.DiskAggregatedList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -942,47 +958,46 @@ def test_aggregated_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.DiskAggregatedList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.aggregated_list(request)
+ response = client.add_resource_policies_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_aggregated_list_rest_unset_required_fields():
+def test_add_resource_policies_unary_rest_unset_required_fields():
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.aggregated_list._get_unset_required_fields({})
+ unset_fields = transport.add_resource_policies._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "includeAllScopes",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "disk",
+ "disksAddResourcePoliciesRequestResource",
+ "project",
+ "zone",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_aggregated_list_rest_interceptors(null_interceptor):
+def test_add_resource_policies_unary_rest_interceptors(null_interceptor):
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
@@ -993,9 +1008,9 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.DisksRestInterceptor, "post_aggregated_list"
+ transports.DisksRestInterceptor, "post_add_resource_policies"
) as post, mock.patch.object(
- transports.DisksRestInterceptor, "pre_aggregated_list"
+ transports.DisksRestInterceptor, "pre_add_resource_policies"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1010,19 +1025,17 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.DiskAggregatedList.to_json(
- compute.DiskAggregatedList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.AggregatedListDisksRequest()
+ request = compute.AddResourcePoliciesDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.DiskAggregatedList
+ post.return_value = compute.Operation
- client.aggregated_list(
+ client.add_resource_policies_unary(
request,
metadata=[
("key", "val"),
@@ -1034,8 +1047,8 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_aggregated_list_rest_bad_request(
- transport: str = "rest", request_type=compute.AggregatedListDisksRequest
+def test_add_resource_policies_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddResourcePoliciesDiskRequest
):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1043,7 +1056,10 @@ def test_aggregated_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ request_init["disks_add_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1055,10 +1071,10 @@ def test_aggregated_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.aggregated_list(request)
+ client.add_resource_policies_unary(request)
-def test_aggregated_list_rest_flattened():
+def test_add_resource_policies_unary_rest_flattened():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1067,39 +1083,44 @@ def test_aggregated_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.DiskAggregatedList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ zone="zone_value",
+ disk="disk_value",
+ disks_add_resource_policies_request_resource=compute.DisksAddResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.DiskAggregatedList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.aggregated_list(**mock_args)
+ client.add_resource_policies_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/aggregated/disks"
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/addResourcePolicies"
% client.transport._host,
args[1],
)
-def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
+def test_add_resource_policies_unary_rest_flattened_error(transport: str = "rest"):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1108,202 +1129,75 @@ def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.aggregated_list(
- compute.AggregatedListDisksRequest(),
+ client.add_resource_policies_unary(
+ compute.AddResourcePoliciesDiskRequest(),
project="project_value",
+ zone="zone_value",
+ disk="disk_value",
+ disks_add_resource_policies_request_resource=compute.DisksAddResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
)
-def test_aggregated_list_rest_pager(transport: str = "rest"):
+def test_add_resource_policies_unary_rest_error():
client = DisksClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.DiskAggregatedList(
- items={
- "a": compute.DisksScopedList(),
- "b": compute.DisksScopedList(),
- "c": compute.DisksScopedList(),
- },
- next_page_token="abc",
- ),
- compute.DiskAggregatedList(
- items={},
- next_page_token="def",
- ),
- compute.DiskAggregatedList(
- items={
- "g": compute.DisksScopedList(),
- },
- next_page_token="ghi",
- ),
- compute.DiskAggregatedList(
- items={
- "h": compute.DisksScopedList(),
- "i": compute.DisksScopedList(),
- },
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.DiskAggregatedList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.aggregated_list(request=sample_request)
-
- assert isinstance(pager.get("a"), compute.DisksScopedList)
- assert pager.get("h") is None
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, tuple) for i in results)
- for result in results:
- assert isinstance(result, tuple)
- assert tuple(type(t) for t in result) == (str, compute.DisksScopedList)
-
- assert pager.get("a") is None
- assert isinstance(pager.get("h"), compute.DisksScopedList)
-
- pages = list(client.aggregated_list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.CreateSnapshotDiskRequest,
+ compute.AggregatedListDisksRequest,
dict,
],
)
-def test_create_snapshot_unary_rest(request_type):
+def test_aggregated_list_rest(request_type):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
- request_init["snapshot_resource"] = {
- "auto_created": True,
- "chain_name": "chain_name_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "disk_size_gb": 1261,
- "download_bytes": 1502,
- "id": 205,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "license_codes": [1361, 1362],
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "location_hint": "location_hint_value",
- "name": "name_value",
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "snapshot_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "source_disk": "source_disk_value",
- "source_disk_encryption_key": {},
- "source_disk_id": "source_disk_id_value",
- "status": "status_value",
- "storage_bytes": 1403,
- "storage_bytes_status": "storage_bytes_status_value",
- "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
- }
+ request_init = {"project": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
+ return_value = compute.DiskAggregatedList(
+ id="id_value",
kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
+ next_page_token="next_page_token_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ unreachables=["unreachables_value"],
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.DiskAggregatedList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.create_snapshot_unary(request)
+ response = client.aggregated_list(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert isinstance(response, pagers.AggregatedListPager)
+ assert response.id == "id_value"
assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
+ assert response.next_page_token == "next_page_token_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.unreachables == ["unreachables_value"]
-def test_create_snapshot_unary_rest_required_fields(
- request_type=compute.CreateSnapshotDiskRequest,
+def test_aggregated_list_rest_required_fields(
+ request_type=compute.AggregatedListDisksRequest,
):
transport_class = transports.DisksRestTransport
request_init = {}
- request_init["disk"] = ""
request_init["project"] = ""
- request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1315,34 +1209,32 @@ def test_create_snapshot_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).create_snapshot._get_unset_required_fields(jsonified_request)
+ ).aggregated_list._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["disk"] = "disk_value"
jsonified_request["project"] = "project_value"
- jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).create_snapshot._get_unset_required_fields(jsonified_request)
+ ).aggregated_list._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "guest_flush",
- "request_id",
+ "filter",
+ "include_all_scopes",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
)
)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "disk" in jsonified_request
- assert jsonified_request["disk"] == "disk_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "zone" in jsonified_request
- assert jsonified_request["zone"] == "zone_value"
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1351,7 +1243,7 @@ def test_create_snapshot_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.DiskAggregatedList()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1362,51 +1254,47 @@ def test_create_snapshot_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.DiskAggregatedList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.create_snapshot_unary(request)
+ response = client.aggregated_list(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_create_snapshot_unary_rest_unset_required_fields():
+def test_aggregated_list_rest_unset_required_fields():
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.create_snapshot._get_unset_required_fields({})
+ unset_fields = transport.aggregated_list._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
- "guestFlush",
- "requestId",
- )
- )
- & set(
- (
- "disk",
- "project",
- "snapshotResource",
- "zone",
+ "filter",
+ "includeAllScopes",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
)
)
+ & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_create_snapshot_unary_rest_interceptors(null_interceptor):
+def test_aggregated_list_rest_interceptors(null_interceptor):
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
@@ -1417,9 +1305,9 @@ def test_create_snapshot_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.DisksRestInterceptor, "post_create_snapshot"
+ transports.DisksRestInterceptor, "post_aggregated_list"
) as post, mock.patch.object(
- transports.DisksRestInterceptor, "pre_create_snapshot"
+ transports.DisksRestInterceptor, "pre_aggregated_list"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1434,17 +1322,19 @@ def test_create_snapshot_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.DiskAggregatedList.to_json(
+ compute.DiskAggregatedList()
+ )
- request = compute.CreateSnapshotDiskRequest()
+ request = compute.AggregatedListDisksRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.DiskAggregatedList
- client.create_snapshot_unary(
+ client.aggregated_list(
request,
metadata=[
("key", "val"),
@@ -1456,8 +1346,8 @@ def test_create_snapshot_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_create_snapshot_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.CreateSnapshotDiskRequest
+def test_aggregated_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.AggregatedListDisksRequest
):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1465,39 +1355,7 @@ def test_create_snapshot_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
- request_init["snapshot_resource"] = {
- "auto_created": True,
- "chain_name": "chain_name_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "disk_size_gb": 1261,
- "download_bytes": 1502,
- "id": 205,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "license_codes": [1361, 1362],
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "location_hint": "location_hint_value",
- "name": "name_value",
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "snapshot_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "source_disk": "source_disk_value",
- "source_disk_encryption_key": {},
- "source_disk_id": "source_disk_id_value",
- "status": "status_value",
- "storage_bytes": 1403,
- "storage_bytes_status": "storage_bytes_status_value",
- "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
- }
+ request_init = {"project": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1509,10 +1367,10 @@ def test_create_snapshot_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.create_snapshot_unary(request)
+ client.aggregated_list(request)
-def test_create_snapshot_unary_rest_flattened():
+def test_aggregated_list_rest_flattened():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1521,42 +1379,39 @@ def test_create_snapshot_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.DiskAggregatedList()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ sample_request = {"project": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- zone="zone_value",
- disk="disk_value",
- snapshot_resource=compute.Snapshot(auto_created=True),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.DiskAggregatedList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.create_snapshot_unary(**mock_args)
+ client.aggregated_list(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/createSnapshot"
+ "%s/compute/v1/projects/{project}/aggregated/disks"
% client.transport._host,
args[1],
)
-def test_create_snapshot_unary_rest_flattened_error(transport: str = "rest"):
+def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1565,76 +1420,169 @@ def test_create_snapshot_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.create_snapshot_unary(
- compute.CreateSnapshotDiskRequest(),
+ client.aggregated_list(
+ compute.AggregatedListDisksRequest(),
project="project_value",
- zone="zone_value",
- disk="disk_value",
- snapshot_resource=compute.Snapshot(auto_created=True),
)
-def test_create_snapshot_unary_rest_error():
- client = DisksClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
- )
-
-
-@pytest.mark.parametrize(
- "request_type",
- [
- compute.DeleteDiskRequest,
- dict,
- ],
-)
-def test_delete_unary_rest(request_type):
+def test_aggregated_list_rest_pager(transport: str = "rest"):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
- transport="rest",
+ transport=transport,
)
- # send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
- request = request_type(request_init)
-
# Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
- kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
- self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
- )
-
- # Wrap the value into a proper Response obj
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.DiskAggregatedList(
+ items={
+ "a": compute.DisksScopedList(),
+ "b": compute.DisksScopedList(),
+ "c": compute.DisksScopedList(),
+ },
+ next_page_token="abc",
+ ),
+ compute.DiskAggregatedList(
+ items={},
+ next_page_token="def",
+ ),
+ compute.DiskAggregatedList(
+ items={
+ "g": compute.DisksScopedList(),
+ },
+ next_page_token="ghi",
+ ),
+ compute.DiskAggregatedList(
+ items={
+ "h": compute.DisksScopedList(),
+ "i": compute.DisksScopedList(),
+ },
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.DiskAggregatedList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.aggregated_list(request=sample_request)
+
+ assert isinstance(pager.get("a"), compute.DisksScopedList)
+ assert pager.get("h") is None
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, tuple) for i in results)
+ for result in results:
+ assert isinstance(result, tuple)
+ assert tuple(type(t) for t in result) == (str, compute.DisksScopedList)
+
+ assert pager.get("a") is None
+ assert isinstance(pager.get("h"), compute.DisksScopedList)
+
+ pages = list(client.aggregated_list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.CreateSnapshotDiskRequest,
+ dict,
+ ],
+)
+def test_create_snapshot_rest(request_type):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ request_init["snapshot_resource"] = {
+ "auto_created": True,
+ "chain_name": "chain_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "download_bytes": 1502,
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "snapshot_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "status": "status_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.create_snapshot(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1659,7 +1607,9 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(request_type=compute.DeleteDiskRequest):
+def test_create_snapshot_rest_required_fields(
+ request_type=compute.CreateSnapshotDiskRequest,
+):
transport_class = transports.DisksRestTransport
request_init = {}
@@ -1677,7 +1627,7 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteDiskReques
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).create_snapshot._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1688,9 +1638,14 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteDiskReques
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).create_snapshot._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "guest_flush",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1719,9 +1674,10 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteDiskReques
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1730,25 +1686,31 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteDiskReques
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.create_snapshot(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_create_snapshot_rest_unset_required_fields():
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.create_snapshot._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "guestFlush",
+ "requestId",
+ )
+ )
& set(
(
"disk",
"project",
+ "snapshotResource",
"zone",
)
)
@@ -1756,7 +1718,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_create_snapshot_rest_interceptors(null_interceptor):
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
@@ -1767,9 +1729,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.DisksRestInterceptor, "post_delete"
+ transports.DisksRestInterceptor, "post_create_snapshot"
) as post, mock.patch.object(
- transports.DisksRestInterceptor, "pre_delete"
+ transports.DisksRestInterceptor, "pre_create_snapshot"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1786,7 +1748,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteDiskRequest()
+ request = compute.CreateSnapshotDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1794,7 +1756,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.create_snapshot(
request,
metadata=[
("key", "val"),
@@ -1806,8 +1768,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteDiskRequest
+def test_create_snapshot_rest_bad_request(
+ transport: str = "rest", request_type=compute.CreateSnapshotDiskRequest
):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1816,6 +1778,38 @@ def test_delete_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ request_init["snapshot_resource"] = {
+ "auto_created": True,
+ "chain_name": "chain_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "download_bytes": 1502,
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "snapshot_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "status": "status_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1827,10 +1821,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.create_snapshot(request)
-def test_delete_unary_rest_flattened():
+def test_create_snapshot_rest_flattened():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1849,6 +1843,7 @@ def test_delete_unary_rest_flattened():
project="project_value",
zone="zone_value",
disk="disk_value",
+ snapshot_resource=compute.Snapshot(auto_created=True),
)
mock_args.update(sample_request)
@@ -1860,20 +1855,20 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.create_snapshot(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/disks/{disk}"
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/createSnapshot"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_create_snapshot_rest_flattened_error(transport: str = "rest"):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1882,15 +1877,16 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteDiskRequest(),
+ client.create_snapshot(
+ compute.CreateSnapshotDiskRequest(),
project="project_value",
zone="zone_value",
disk="disk_value",
+ snapshot_resource=compute.Snapshot(auto_created=True),
)
-def test_delete_unary_rest_error():
+def test_create_snapshot_rest_error():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1899,11 +1895,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetDiskRequest,
+ compute.CreateSnapshotDiskRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_create_snapshot_unary_rest(request_type):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1911,89 +1907,83 @@ def test_get_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.Disk(
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- id=205,
- kind="kind_value",
- label_fingerprint="label_fingerprint_value",
- last_attach_timestamp="last_attach_timestamp_value",
- last_detach_timestamp="last_detach_timestamp_value",
- license_codes=[1360],
- licenses=["licenses_value"],
- location_hint="location_hint_value",
- name="name_value",
- options="options_value",
- physical_block_size_bytes=2663,
- provisioned_iops=1740,
- region="region_value",
- replica_zones=["replica_zones_value"],
- resource_policies=["resource_policies_value"],
- satisfies_pzs=True,
- self_link="self_link_value",
- size_gb=739,
- source_disk="source_disk_value",
- source_disk_id="source_disk_id_value",
- source_image="source_image_value",
- source_image_id="source_image_id_value",
- source_snapshot="source_snapshot_value",
- source_snapshot_id="source_snapshot_id_value",
- source_storage_object="source_storage_object_value",
- status="status_value",
- type_="type__value",
- users=["users_value"],
+ request_init["snapshot_resource"] = {
+ "auto_created": True,
+ "chain_name": "chain_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "download_bytes": 1502,
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "snapshot_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "status": "status_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Disk.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.create_snapshot_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Disk)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.label_fingerprint == "label_fingerprint_value"
- assert response.last_attach_timestamp == "last_attach_timestamp_value"
- assert response.last_detach_timestamp == "last_detach_timestamp_value"
- assert response.license_codes == [1360]
- assert response.licenses == ["licenses_value"]
- assert response.location_hint == "location_hint_value"
- assert response.name == "name_value"
- assert response.options == "options_value"
- assert response.physical_block_size_bytes == 2663
- assert response.provisioned_iops == 1740
- assert response.region == "region_value"
- assert response.replica_zones == ["replica_zones_value"]
- assert response.resource_policies == ["resource_policies_value"]
- assert response.satisfies_pzs is True
- assert response.self_link == "self_link_value"
- assert response.size_gb == 739
- assert response.source_disk == "source_disk_value"
- assert response.source_disk_id == "source_disk_id_value"
- assert response.source_image == "source_image_value"
- assert response.source_image_id == "source_image_id_value"
- assert response.source_snapshot == "source_snapshot_value"
- assert response.source_snapshot_id == "source_snapshot_id_value"
- assert response.source_storage_object == "source_storage_object_value"
- assert response.status == "status_value"
- assert response.type_ == "type__value"
- assert response.users == ["users_value"]
- assert response.zone == "zone_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetDiskRequest):
+def test_create_snapshot_unary_rest_required_fields(
+ request_type=compute.CreateSnapshotDiskRequest,
+):
transport_class = transports.DisksRestTransport
request_init = {}
@@ -2011,7 +2001,7 @@ def test_get_rest_required_fields(request_type=compute.GetDiskRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).create_snapshot._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2022,7 +2012,14 @@ def test_get_rest_required_fields(request_type=compute.GetDiskRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).create_snapshot._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "guest_flush",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2040,7 +2037,7 @@ def test_get_rest_required_fields(request_type=compute.GetDiskRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Disk()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2051,36 +2048,43 @@ def test_get_rest_required_fields(request_type=compute.GetDiskRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Disk.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.create_snapshot_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_create_snapshot_unary_rest_unset_required_fields():
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.create_snapshot._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(
+ (
+ "guestFlush",
+ "requestId",
+ )
+ )
& set(
(
"disk",
"project",
+ "snapshotResource",
"zone",
)
)
@@ -2088,7 +2092,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_create_snapshot_unary_rest_interceptors(null_interceptor):
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
@@ -2099,9 +2103,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.DisksRestInterceptor, "post_get"
+ transports.DisksRestInterceptor, "post_create_snapshot"
) as post, mock.patch.object(
- transports.DisksRestInterceptor, "pre_get"
+ transports.DisksRestInterceptor, "pre_create_snapshot"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2116,17 +2120,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Disk.to_json(compute.Disk())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetDiskRequest()
+ request = compute.CreateSnapshotDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Disk
+ post.return_value = compute.Operation
- client.get(
+ client.create_snapshot_unary(
request,
metadata=[
("key", "val"),
@@ -2138,8 +2142,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetDiskRequest
+def test_create_snapshot_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.CreateSnapshotDiskRequest
):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2148,6 +2152,38 @@ def test_get_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ request_init["snapshot_resource"] = {
+ "auto_created": True,
+ "chain_name": "chain_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "download_bytes": 1502,
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "snapshot_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "status": "status_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2159,10 +2195,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.create_snapshot_unary(request)
-def test_get_rest_flattened():
+def test_create_snapshot_unary_rest_flattened():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2171,7 +2207,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Disk()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
@@ -2181,31 +2217,32 @@ def test_get_rest_flattened():
project="project_value",
zone="zone_value",
disk="disk_value",
+ snapshot_resource=compute.Snapshot(auto_created=True),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Disk.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.create_snapshot_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/disks/{disk}"
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/createSnapshot"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_create_snapshot_unary_rest_flattened_error(transport: str = "rest"):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2214,15 +2251,16 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetDiskRequest(),
+ client.create_snapshot_unary(
+ compute.CreateSnapshotDiskRequest(),
project="project_value",
zone="zone_value",
disk="disk_value",
+ snapshot_resource=compute.Snapshot(auto_created=True),
)
-def test_get_rest_error():
+def test_create_snapshot_unary_rest_error():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2231,52 +2269,88 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicyDiskRequest,
+ compute.DeleteDiskRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_delete_rest(request_type):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
-
-
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicyDiskRequest,
-):
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_delete_rest_required_fields(request_type=compute.DeleteDiskRequest):
transport_class = transports.DisksRestTransport
request_init = {}
+ request_init["disk"] = ""
request_init["project"] = ""
- request_init["resource"] = ""
request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -2289,27 +2363,27 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["disk"] = "disk_value"
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "disk" in jsonified_request
+ assert jsonified_request["disk"] == "disk_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
assert "zone" in jsonified_request
assert jsonified_request["zone"] == "zone_value"
@@ -2320,7 +2394,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2331,36 +2405,36 @@ def test_get_iam_policy_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
+ set(("requestId",))
& set(
(
+ "disk",
"project",
- "resource",
"zone",
)
)
@@ -2368,7 +2442,7 @@ def test_get_iam_policy_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
@@ -2379,9 +2453,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.DisksRestInterceptor, "post_get_iam_policy"
+ transports.DisksRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.DisksRestInterceptor, "pre_get_iam_policy"
+ transports.DisksRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2396,17 +2470,17 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetIamPolicyDiskRequest()
+ request = compute.DeleteDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.get_iam_policy(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -2418,8 +2492,8 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.GetIamPolicyDiskRequest
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteDiskRequest
):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2427,7 +2501,7 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2439,10 +2513,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.delete(request)
-def test_get_iam_policy_rest_flattened():
+def test_delete_rest_flattened():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2451,45 +2525,41 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "zone": "sample2",
- "resource": "sample3",
- }
+ sample_request = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- resource="resource_value",
+ disk="disk_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/disks/{resource}/getIamPolicy"
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks/{disk}"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2498,15 +2568,15 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicyDiskRequest(),
+ client.delete(
+ compute.DeleteDiskRequest(),
project="project_value",
zone="zone_value",
- resource="resource_value",
+ disk="disk_value",
)
-def test_get_iam_policy_rest_error():
+def test_delete_rest_error():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2515,62 +2585,18 @@ def test_get_iam_policy_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertDiskRequest,
+ compute.DeleteDiskRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_delete_unary_rest(request_type):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
- request_init["disk_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "disk_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "guest_os_features": [{"type_": "type__value"}],
- "id": 205,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "last_attach_timestamp": "last_attach_timestamp_value",
- "last_detach_timestamp": "last_detach_timestamp_value",
- "license_codes": [1361, 1362],
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "location_hint": "location_hint_value",
- "name": "name_value",
- "options": "options_value",
- "physical_block_size_bytes": 2663,
- "provisioned_iops": 1740,
- "region": "region_value",
- "replica_zones": ["replica_zones_value_1", "replica_zones_value_2"],
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "size_gb": 739,
- "source_disk": "source_disk_value",
- "source_disk_id": "source_disk_id_value",
- "source_image": "source_image_value",
- "source_image_encryption_key": {},
- "source_image_id": "source_image_id_value",
- "source_snapshot": "source_snapshot_value",
- "source_snapshot_encryption_key": {},
- "source_snapshot_id": "source_snapshot_id_value",
- "source_storage_object": "source_storage_object_value",
- "status": "status_value",
- "type_": "type__value",
- "users": ["users_value_1", "users_value_2"],
- "zone": "zone_value",
- }
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -2607,38 +2633,17 @@ def test_insert_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(request_type=compute.InsertDiskRequest):
+def test_delete_unary_rest_required_fields(request_type=compute.DeleteDiskRequest):
transport_class = transports.DisksRestTransport
request_init = {}
+ request_init["disk"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -2652,27 +2657,25 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertDiskReques
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["disk"] = "disk_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "request_id",
- "source_image",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "disk" in jsonified_request
+ assert jsonified_request["disk"] == "disk_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -2696,10 +2699,9 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertDiskReques
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "delete",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -2708,29 +2710,24 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertDiskReques
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "requestId",
- "sourceImage",
- )
- )
+ set(("requestId",))
& set(
(
- "diskResource",
+ "disk",
"project",
"zone",
)
@@ -2739,7 +2736,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
@@ -2750,9 +2747,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.DisksRestInterceptor, "post_insert"
+ transports.DisksRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.DisksRestInterceptor, "pre_insert"
+ transports.DisksRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2769,7 +2766,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.InsertDiskRequest()
+ request = compute.DeleteDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2777,7 +2774,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.insert_unary(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -2789,8 +2786,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertDiskRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteDiskRequest
):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2798,51 +2795,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
- request_init["disk_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "disk_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "guest_os_features": [{"type_": "type__value"}],
- "id": 205,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "last_attach_timestamp": "last_attach_timestamp_value",
- "last_detach_timestamp": "last_detach_timestamp_value",
- "license_codes": [1361, 1362],
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "location_hint": "location_hint_value",
- "name": "name_value",
- "options": "options_value",
- "physical_block_size_bytes": 2663,
- "provisioned_iops": 1740,
- "region": "region_value",
- "replica_zones": ["replica_zones_value_1", "replica_zones_value_2"],
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "size_gb": 739,
- "source_disk": "source_disk_value",
- "source_disk_id": "source_disk_id_value",
- "source_image": "source_image_value",
- "source_image_encryption_key": {},
- "source_image_id": "source_image_id_value",
- "source_snapshot": "source_snapshot_value",
- "source_snapshot_encryption_key": {},
- "source_snapshot_id": "source_snapshot_id_value",
- "source_storage_object": "source_storage_object_value",
- "status": "status_value",
- "type_": "type__value",
- "users": ["users_value_1", "users_value_2"],
- "zone": "zone_value",
- }
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2854,10 +2807,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.delete_unary(request)
-def test_insert_unary_rest_flattened():
+def test_delete_unary_rest_flattened():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2869,13 +2822,13 @@ def test_insert_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "zone": "sample2"}
+ sample_request = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- disk_resource=compute.Disk(creation_timestamp="creation_timestamp_value"),
+ disk="disk_value",
)
mock_args.update(sample_request)
@@ -2887,20 +2840,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/disks"
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks/{disk}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2909,15 +2862,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertDiskRequest(),
+ client.delete_unary(
+ compute.DeleteDiskRequest(),
project="project_value",
zone="zone_value",
- disk_resource=compute.Disk(creation_timestamp="creation_timestamp_value"),
+ disk="disk_value",
)
-def test_insert_unary_rest_error():
+def test_delete_unary_rest_error():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2926,50 +2879,105 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListDisksRequest,
+ compute.GetDiskRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_get_rest(request_type):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.DiskList(
- id="id_value",
+ return_value = compute.Disk(
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ id=205,
kind="kind_value",
- next_page_token="next_page_token_value",
+ label_fingerprint="label_fingerprint_value",
+ last_attach_timestamp="last_attach_timestamp_value",
+ last_detach_timestamp="last_detach_timestamp_value",
+ license_codes=[1360],
+ licenses=["licenses_value"],
+ location_hint="location_hint_value",
+ name="name_value",
+ options="options_value",
+ physical_block_size_bytes=2663,
+ provisioned_iops=1740,
+ region="region_value",
+ replica_zones=["replica_zones_value"],
+ resource_policies=["resource_policies_value"],
+ satisfies_pzs=True,
self_link="self_link_value",
+ size_gb=739,
+ source_disk="source_disk_value",
+ source_disk_id="source_disk_id_value",
+ source_image="source_image_value",
+ source_image_id="source_image_id_value",
+ source_snapshot="source_snapshot_value",
+ source_snapshot_id="source_snapshot_id_value",
+ source_storage_object="source_storage_object_value",
+ status="status_value",
+ type_="type__value",
+ users=["users_value"],
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.DiskList.to_json(return_value)
+ json_return_value = compute.Disk.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, compute.Disk)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.id == 205
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.label_fingerprint == "label_fingerprint_value"
+ assert response.last_attach_timestamp == "last_attach_timestamp_value"
+ assert response.last_detach_timestamp == "last_detach_timestamp_value"
+ assert response.license_codes == [1360]
+ assert response.licenses == ["licenses_value"]
+ assert response.location_hint == "location_hint_value"
+ assert response.name == "name_value"
+ assert response.options == "options_value"
+ assert response.physical_block_size_bytes == 2663
+ assert response.provisioned_iops == 1740
+ assert response.region == "region_value"
+ assert response.replica_zones == ["replica_zones_value"]
+ assert response.resource_policies == ["resource_policies_value"]
+ assert response.satisfies_pzs is True
assert response.self_link == "self_link_value"
+ assert response.size_gb == 739
+ assert response.source_disk == "source_disk_value"
+ assert response.source_disk_id == "source_disk_id_value"
+ assert response.source_image == "source_image_value"
+ assert response.source_image_id == "source_image_id_value"
+ assert response.source_snapshot == "source_snapshot_value"
+ assert response.source_snapshot_id == "source_snapshot_id_value"
+ assert response.source_storage_object == "source_storage_object_value"
+ assert response.status == "status_value"
+ assert response.type_ == "type__value"
+ assert response.users == ["users_value"]
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(request_type=compute.ListDisksRequest):
+def test_get_rest_required_fields(request_type=compute.GetDiskRequest):
transport_class = transports.DisksRestTransport
request_init = {}
+ request_init["disk"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -2983,30 +2991,23 @@ def test_list_rest_required_fields(request_type=compute.ListDisksRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["disk"] = "disk_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "disk" in jsonified_request
+ assert jsonified_request["disk"] == "disk_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -3019,7 +3020,7 @@ def test_list_rest_required_fields(request_type=compute.ListDisksRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.DiskList()
+ return_value = compute.Disk()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3037,35 +3038,28 @@ def test_list_rest_required_fields(request_type=compute.ListDisksRequest):
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.DiskList.to_json(return_value)
+ json_return_value = compute.Disk.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(())
& set(
(
+ "disk",
"project",
"zone",
)
@@ -3074,7 +3068,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
@@ -3085,9 +3079,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.DisksRestInterceptor, "post_list"
+ transports.DisksRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.DisksRestInterceptor, "pre_list"
+ transports.DisksRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3102,17 +3096,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.DiskList.to_json(compute.DiskList())
+ req.return_value._content = compute.Disk.to_json(compute.Disk())
- request = compute.ListDisksRequest()
+ request = compute.GetDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.DiskList
+ post.return_value = compute.Disk
- client.list(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -3124,8 +3118,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListDisksRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetDiskRequest
):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3133,7 +3127,7 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3145,10 +3139,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.get(request)
-def test_list_rest_flattened():
+def test_get_rest_flattened():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3157,40 +3151,41 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.DiskList()
+ return_value = compute.Disk()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "zone": "sample2"}
+ sample_request = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
+ disk="disk_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.DiskList.to_json(return_value)
+ json_return_value = compute.Disk.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/disks"
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks/{disk}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3199,164 +3194,69 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListDisksRequest(),
+ client.get(
+ compute.GetDiskRequest(),
project="project_value",
zone="zone_value",
+ disk="disk_value",
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_get_rest_error():
client = DisksClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.DiskList(
- items=[
- compute.Disk(),
- compute.Disk(),
- compute.Disk(),
- ],
- next_page_token="abc",
- ),
- compute.DiskList(
- items=[],
- next_page_token="def",
- ),
- compute.DiskList(
- items=[
- compute.Disk(),
- ],
- next_page_token="ghi",
- ),
- compute.DiskList(
- items=[
- compute.Disk(),
- compute.Disk(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.DiskList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "zone": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Disk) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.RemoveResourcePoliciesDiskRequest,
+ compute.GetIamPolicyDiskRequest,
dict,
],
)
-def test_remove_resource_policies_unary_rest(request_type):
+def test_get_iam_policy_rest(request_type):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
- request_init["disks_remove_resource_policies_request_resource"] = {
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
- }
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
- kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
- self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_resource_policies_unary(request)
+ response = client.get_iam_policy(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
-def test_remove_resource_policies_unary_rest_required_fields(
- request_type=compute.RemoveResourcePoliciesDiskRequest,
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicyDiskRequest,
):
transport_class = transports.DisksRestTransport
request_init = {}
- request_init["disk"] = ""
request_init["project"] = ""
+ request_init["resource"] = ""
request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -3369,27 +3269,27 @@ def test_remove_resource_policies_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["disk"] = "disk_value"
jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "disk" in jsonified_request
- assert jsonified_request["disk"] == "disk_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
assert "zone" in jsonified_request
assert jsonified_request["zone"] == "zone_value"
@@ -3400,7 +3300,7 @@ def test_remove_resource_policies_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Policy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3411,38 +3311,36 @@ def test_remove_resource_policies_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_resource_policies_unary(request)
+ response = client.get_iam_policy(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_remove_resource_policies_unary_rest_unset_required_fields():
+def test_get_iam_policy_rest_unset_required_fields():
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.remove_resource_policies._get_unset_required_fields({})
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(("optionsRequestedPolicyVersion",))
& set(
(
- "disk",
- "disksRemoveResourcePoliciesRequestResource",
"project",
+ "resource",
"zone",
)
)
@@ -3450,7 +3348,7 @@ def test_remove_resource_policies_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
+def test_get_iam_policy_rest_interceptors(null_interceptor):
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
@@ -3461,9 +3359,9 @@ def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.DisksRestInterceptor, "post_remove_resource_policies"
+ transports.DisksRestInterceptor, "post_get_iam_policy"
) as post, mock.patch.object(
- transports.DisksRestInterceptor, "pre_remove_resource_policies"
+ transports.DisksRestInterceptor, "pre_get_iam_policy"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3478,17 +3376,17 @@ def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
- request = compute.RemoveResourcePoliciesDiskRequest()
+ request = compute.GetIamPolicyDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.Policy
- client.remove_resource_policies_unary(
+ client.get_iam_policy(
request,
metadata=[
("key", "val"),
@@ -3500,8 +3398,8 @@ def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_remove_resource_policies_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.RemoveResourcePoliciesDiskRequest
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetIamPolicyDiskRequest
):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3509,10 +3407,7 @@ def test_remove_resource_policies_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
- request_init["disks_remove_resource_policies_request_resource"] = {
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
- }
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3524,10 +3419,10 @@ def test_remove_resource_policies_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.remove_resource_policies_unary(request)
+ client.get_iam_policy(request)
-def test_remove_resource_policies_unary_rest_flattened():
+def test_get_iam_policy_rest_flattened():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3536,44 +3431,45 @@ def test_remove_resource_policies_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Policy()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "resource": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- disk="disk_value",
- disks_remove_resource_policies_request_resource=compute.DisksRemoveResourcePoliciesRequest(
- resource_policies=["resource_policies_value"]
- ),
+ resource="resource_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.remove_resource_policies_unary(**mock_args)
+ client.get_iam_policy(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/removeResourcePolicies"
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks/{resource}/getIamPolicy"
% client.transport._host,
args[1],
)
-def test_remove_resource_policies_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3582,18 +3478,15 @@ def test_remove_resource_policies_unary_rest_flattened_error(transport: str = "r
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.remove_resource_policies_unary(
- compute.RemoveResourcePoliciesDiskRequest(),
+ client.get_iam_policy(
+ compute.GetIamPolicyDiskRequest(),
project="project_value",
zone="zone_value",
- disk="disk_value",
- disks_remove_resource_policies_request_resource=compute.DisksRemoveResourcePoliciesRequest(
- resource_policies=["resource_policies_value"]
- ),
+ resource="resource_value",
)
-def test_remove_resource_policies_unary_rest_error():
+def test_get_iam_policy_rest_error():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3602,19 +3495,62 @@ def test_remove_resource_policies_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ResizeDiskRequest,
+ compute.InsertDiskRequest,
dict,
],
)
-def test_resize_unary_rest(request_type):
+def test_insert_rest(request_type):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
- request_init["disks_resize_request_resource"] = {"size_gb": 739}
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["disk_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "guest_os_features": [{"type_": "type__value"}],
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_attach_timestamp": "last_attach_timestamp_value",
+ "last_detach_timestamp": "last_detach_timestamp_value",
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "options": "options_value",
+ "physical_block_size_bytes": 2663,
+ "provisioned_iops": 1740,
+ "region": "region_value",
+ "replica_zones": ["replica_zones_value_1", "replica_zones_value_2"],
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "size_gb": 739,
+ "source_disk": "source_disk_value",
+ "source_disk_id": "source_disk_id_value",
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_image_id": "source_image_id_value",
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ "source_snapshot_id": "source_snapshot_id_value",
+ "source_storage_object": "source_storage_object_value",
+ "status": "status_value",
+ "type_": "type__value",
+ "users": ["users_value_1", "users_value_2"],
+ "zone": "zone_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -3651,10 +3587,10 @@ def test_resize_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.resize_unary(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -3679,11 +3615,10 @@ def test_resize_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_resize_unary_rest_required_fields(request_type=compute.ResizeDiskRequest):
+def test_insert_rest_required_fields(request_type=compute.InsertDiskRequest):
transport_class = transports.DisksRestTransport
request_init = {}
- request_init["disk"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -3697,25 +3632,27 @@ def test_resize_unary_rest_required_fields(request_type=compute.ResizeDiskReques
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).resize._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["disk"] = "disk_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).resize._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "source_image",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "disk" in jsonified_request
- assert jsonified_request["disk"] == "disk_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -3751,25 +3688,29 @@ def test_resize_unary_rest_required_fields(request_type=compute.ResizeDiskReques
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.resize_unary(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_resize_unary_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.resize._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "requestId",
+ "sourceImage",
+ )
+ )
& set(
(
- "disk",
- "disksResizeRequestResource",
+ "diskResource",
"project",
"zone",
)
@@ -3778,7 +3719,7 @@ def test_resize_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_resize_unary_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
@@ -3789,9 +3730,9 @@ def test_resize_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.DisksRestInterceptor, "post_resize"
+ transports.DisksRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.DisksRestInterceptor, "pre_resize"
+ transports.DisksRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3808,7 +3749,7 @@ def test_resize_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ResizeDiskRequest()
+ request = compute.InsertDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3816,7 +3757,7 @@ def test_resize_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.resize_unary(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -3828,8 +3769,8 @@ def test_resize_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_resize_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.ResizeDiskRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertDiskRequest
):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3837,15 +3778,2053 @@ def test_resize_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
- request_init["disks_resize_request_resource"] = {"size_gb": 739}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a BadRequest error.
- with mock.patch.object(Session, "request") as req, pytest.raises(
- core_exceptions.BadRequest
- ):
- # Wrap the value into a proper Response obj
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["disk_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "guest_os_features": [{"type_": "type__value"}],
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_attach_timestamp": "last_attach_timestamp_value",
+ "last_detach_timestamp": "last_detach_timestamp_value",
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "options": "options_value",
+ "physical_block_size_bytes": 2663,
+ "provisioned_iops": 1740,
+ "region": "region_value",
+ "replica_zones": ["replica_zones_value_1", "replica_zones_value_2"],
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "size_gb": 739,
+ "source_disk": "source_disk_value",
+ "source_disk_id": "source_disk_id_value",
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_image_id": "source_image_id_value",
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ "source_snapshot_id": "source_snapshot_id_value",
+ "source_storage_object": "source_storage_object_value",
+ "status": "status_value",
+ "type_": "type__value",
+ "users": ["users_value_1", "users_value_2"],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ disk_resource=compute.Disk(creation_timestamp="creation_timestamp_value"),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertDiskRequest(),
+ project="project_value",
+ zone="zone_value",
+ disk_resource=compute.Disk(creation_timestamp="creation_timestamp_value"),
+ )
+
+
+def test_insert_rest_error():
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertDiskRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["disk_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "guest_os_features": [{"type_": "type__value"}],
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_attach_timestamp": "last_attach_timestamp_value",
+ "last_detach_timestamp": "last_detach_timestamp_value",
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "options": "options_value",
+ "physical_block_size_bytes": 2663,
+ "provisioned_iops": 1740,
+ "region": "region_value",
+ "replica_zones": ["replica_zones_value_1", "replica_zones_value_2"],
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "size_gb": 739,
+ "source_disk": "source_disk_value",
+ "source_disk_id": "source_disk_id_value",
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_image_id": "source_image_id_value",
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ "source_snapshot_id": "source_snapshot_id_value",
+ "source_storage_object": "source_storage_object_value",
+ "status": "status_value",
+ "type_": "type__value",
+ "users": ["users_value_1", "users_value_2"],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(request_type=compute.InsertDiskRequest):
+ transport_class = transports.DisksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "source_image",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.DisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "sourceImage",
+ )
+ )
+ & set(
+ (
+ "diskResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.DisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
+ )
+ client = DisksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.DisksRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.DisksRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertDiskRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertDiskRequest
+):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["disk_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "guest_os_features": [{"type_": "type__value"}],
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_attach_timestamp": "last_attach_timestamp_value",
+ "last_detach_timestamp": "last_detach_timestamp_value",
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "options": "options_value",
+ "physical_block_size_bytes": 2663,
+ "provisioned_iops": 1740,
+ "region": "region_value",
+ "replica_zones": ["replica_zones_value_1", "replica_zones_value_2"],
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "size_gb": 739,
+ "source_disk": "source_disk_value",
+ "source_disk_id": "source_disk_id_value",
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_image_id": "source_image_id_value",
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ "source_snapshot_id": "source_snapshot_id_value",
+ "source_storage_object": "source_storage_object_value",
+ "status": "status_value",
+ "type_": "type__value",
+ "users": ["users_value_1", "users_value_2"],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ disk_resource=compute.Disk(creation_timestamp="creation_timestamp_value"),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertDiskRequest(),
+ project="project_value",
+ zone="zone_value",
+ disk_resource=compute.Disk(creation_timestamp="creation_timestamp_value"),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListDisksRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.DiskList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.DiskList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListDisksRequest):
+ transport_class = transports.DisksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.DiskList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.DiskList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.DisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.DisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
+ )
+ client = DisksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.DisksRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.DisksRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.DiskList.to_json(compute.DiskList())
+
+ request = compute.ListDisksRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.DiskList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListDisksRequest
+):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.DiskList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.DiskList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListDisksRequest(),
+ project="project_value",
+ zone="zone_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.DiskList(
+ items=[
+ compute.Disk(),
+ compute.Disk(),
+ compute.Disk(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.DiskList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.DiskList(
+ items=[
+ compute.Disk(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.DiskList(
+ items=[
+ compute.Disk(),
+ compute.Disk(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.DiskList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Disk) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.RemoveResourcePoliciesDiskRequest,
+ dict,
+ ],
+)
+def test_remove_resource_policies_rest(request_type):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ request_init["disks_remove_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.remove_resource_policies(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_remove_resource_policies_rest_required_fields(
+ request_type=compute.RemoveResourcePoliciesDiskRequest,
+):
+ transport_class = transports.DisksRestTransport
+
+ request_init = {}
+ request_init["disk"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["disk"] = "disk_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "disk" in jsonified_request
+ assert jsonified_request["disk"] == "disk_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.remove_resource_policies(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_remove_resource_policies_rest_unset_required_fields():
+ transport = transports.DisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.remove_resource_policies._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "disk",
+ "disksRemoveResourcePoliciesRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_remove_resource_policies_rest_interceptors(null_interceptor):
+ transport = transports.DisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
+ )
+ client = DisksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.DisksRestInterceptor, "post_remove_resource_policies"
+ ) as post, mock.patch.object(
+ transports.DisksRestInterceptor, "pre_remove_resource_policies"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.RemoveResourcePoliciesDiskRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.remove_resource_policies(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_remove_resource_policies_rest_bad_request(
+ transport: str = "rest", request_type=compute.RemoveResourcePoliciesDiskRequest
+):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ request_init["disks_remove_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.remove_resource_policies(request)
+
+
+def test_remove_resource_policies_rest_flattened():
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ disk="disk_value",
+ disks_remove_resource_policies_request_resource=compute.DisksRemoveResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.remove_resource_policies(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/removeResourcePolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_remove_resource_policies_rest_flattened_error(transport: str = "rest"):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.remove_resource_policies(
+ compute.RemoveResourcePoliciesDiskRequest(),
+ project="project_value",
+ zone="zone_value",
+ disk="disk_value",
+ disks_remove_resource_policies_request_resource=compute.DisksRemoveResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
+ )
+
+
+def test_remove_resource_policies_rest_error():
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.RemoveResourcePoliciesDiskRequest,
+ dict,
+ ],
+)
+def test_remove_resource_policies_unary_rest(request_type):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ request_init["disks_remove_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.remove_resource_policies_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_remove_resource_policies_unary_rest_required_fields(
+ request_type=compute.RemoveResourcePoliciesDiskRequest,
+):
+ transport_class = transports.DisksRestTransport
+
+ request_init = {}
+ request_init["disk"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["disk"] = "disk_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "disk" in jsonified_request
+ assert jsonified_request["disk"] == "disk_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.remove_resource_policies_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_remove_resource_policies_unary_rest_unset_required_fields():
+ transport = transports.DisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.remove_resource_policies._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "disk",
+ "disksRemoveResourcePoliciesRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
+ transport = transports.DisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
+ )
+ client = DisksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.DisksRestInterceptor, "post_remove_resource_policies"
+ ) as post, mock.patch.object(
+ transports.DisksRestInterceptor, "pre_remove_resource_policies"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.RemoveResourcePoliciesDiskRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.remove_resource_policies_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_remove_resource_policies_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.RemoveResourcePoliciesDiskRequest
+):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ request_init["disks_remove_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.remove_resource_policies_unary(request)
+
+
+def test_remove_resource_policies_unary_rest_flattened():
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ disk="disk_value",
+ disks_remove_resource_policies_request_resource=compute.DisksRemoveResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.remove_resource_policies_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/removeResourcePolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_remove_resource_policies_unary_rest_flattened_error(transport: str = "rest"):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.remove_resource_policies_unary(
+ compute.RemoveResourcePoliciesDiskRequest(),
+ project="project_value",
+ zone="zone_value",
+ disk="disk_value",
+ disks_remove_resource_policies_request_resource=compute.DisksRemoveResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
+ )
+
+
+def test_remove_resource_policies_unary_rest_error():
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ResizeDiskRequest,
+ dict,
+ ],
+)
+def test_resize_rest(request_type):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ request_init["disks_resize_request_resource"] = {"size_gb": 739}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.resize(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_resize_rest_required_fields(request_type=compute.ResizeDiskRequest):
+ transport_class = transports.DisksRestTransport
+
+ request_init = {}
+ request_init["disk"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["disk"] = "disk_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "disk" in jsonified_request
+ assert jsonified_request["disk"] == "disk_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.resize(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_resize_rest_unset_required_fields():
+ transport = transports.DisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.resize._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "disk",
+ "disksResizeRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_resize_rest_interceptors(null_interceptor):
+ transport = transports.DisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
+ )
+ client = DisksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.DisksRestInterceptor, "post_resize"
+ ) as post, mock.patch.object(
+ transports.DisksRestInterceptor, "pre_resize"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.ResizeDiskRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.resize(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_resize_rest_bad_request(
+ transport: str = "rest", request_type=compute.ResizeDiskRequest
+):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ request_init["disks_resize_request_resource"] = {"size_gb": 739}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.resize(request)
+
+
+def test_resize_rest_flattened():
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ disk="disk_value",
+ disks_resize_request_resource=compute.DisksResizeRequest(size_gb=739),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.resize(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/resize"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_resize_rest_flattened_error(transport: str = "rest"):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.resize(
+ compute.ResizeDiskRequest(),
+ project="project_value",
+ zone="zone_value",
+ disk="disk_value",
+ disks_resize_request_resource=compute.DisksResizeRequest(size_gb=739),
+ )
+
+
+def test_resize_rest_error():
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ResizeDiskRequest,
+ dict,
+ ],
+)
+def test_resize_unary_rest(request_type):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ request_init["disks_resize_request_resource"] = {"size_gb": 739}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.resize_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_resize_unary_rest_required_fields(request_type=compute.ResizeDiskRequest):
+ transport_class = transports.DisksRestTransport
+
+ request_init = {}
+ request_init["disk"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["disk"] = "disk_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "disk" in jsonified_request
+ assert jsonified_request["disk"] == "disk_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.resize_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_resize_unary_rest_unset_required_fields():
+ transport = transports.DisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.resize._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "disk",
+ "disksResizeRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_resize_unary_rest_interceptors(null_interceptor):
+ transport = transports.DisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
+ )
+ client = DisksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.DisksRestInterceptor, "post_resize"
+ ) as post, mock.patch.object(
+ transports.DisksRestInterceptor, "pre_resize"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.ResizeDiskRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.resize_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_resize_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.ResizeDiskRequest
+):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ request_init["disks_resize_request_resource"] = {"size_gb": 739}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 400
response_value.request = Request()
@@ -3853,85 +5832,347 @@ def test_resize_unary_rest_bad_request(
client.resize_unary(request)
-def test_resize_unary_rest_flattened():
+def test_resize_unary_rest_flattened():
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ disk="disk_value",
+ disks_resize_request_resource=compute.DisksResizeRequest(size_gb=739),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.resize_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/resize"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_resize_unary_rest_flattened_error(transport: str = "rest"):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.resize_unary(
+ compute.ResizeDiskRequest(),
+ project="project_value",
+ zone="zone_value",
+ disk="disk_value",
+ disks_resize_request_resource=compute.DisksResizeRequest(size_gb=739),
+ )
+
+
+def test_resize_unary_rest_error():
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetIamPolicyDiskRequest,
+ dict,
+ ],
+)
+def test_set_iam_policy_rest(request_type):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init["zone_set_policy_request_resource"] = {
+ "bindings": [
+ {
+ "binding_id": "binding_id_value",
+ "condition": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "members": ["members_value_1", "members_value_2"],
+ "role": "role_value",
+ }
+ ],
+ "etag": "etag_value",
+ "policy": {
+ "audit_configs": [
+ {
+ "audit_log_configs": [
+ {
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "ignore_child_exemptions": True,
+ "log_type": "log_type_value",
+ }
+ ],
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "service": "service_value",
+ }
+ ],
+ "bindings": {},
+ "etag": "etag_value",
+ "iam_owned": True,
+ "rules": [
+ {
+ "action": "action_value",
+ "conditions": [
+ {
+ "iam": "iam_value",
+ "op": "op_value",
+ "svc": "svc_value",
+ "sys": "sys_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "ins": ["ins_value_1", "ins_value_2"],
+ "log_configs": [
+ {
+ "cloud_audit": {
+ "authorization_logging_options": {
+ "permission_type": "permission_type_value"
+ },
+ "log_name": "log_name_value",
+ },
+ "counter": {
+ "custom_fields": [
+ {"name": "name_value", "value": "value_value"}
+ ],
+ "field": "field_value",
+ "metric": "metric_value",
+ },
+ "data_access": {"log_mode": "log_mode_value"},
+ }
+ ],
+ "not_ins": ["not_ins_value_1", "not_ins_value_2"],
+ "permissions": ["permissions_value_1", "permissions_value_2"],
+ }
+ ],
+ "version": 774,
+ },
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_set_iam_policy_rest_required_fields(
+ request_type=compute.SetIamPolicyDiskRequest,
+):
+ transport_class = transports.DisksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["resource"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
+ request = request_type(request_init)
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
# Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
- # get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "zone": "sample2", "disk": "sample3"}
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
- # get truthy value for each flattened field
- mock_args = dict(
- project="project_value",
- zone="zone_value",
- disk="disk_value",
- disks_resize_request_resource=compute.DisksResizeRequest(size_gb=739),
- )
- mock_args.update(sample_request)
+ response = client.set_iam_policy(request)
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
- response_value._content = json_return_value.encode("UTF-8")
- req.return_value = response_value
- client.resize_unary(**mock_args)
+def test_set_iam_policy_rest_unset_required_fields():
+ transport = transports.DisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
- # Establish that the underlying call was made with the expected
- # request object values.
- assert len(req.mock_calls) == 1
- _, args, _ = req.mock_calls[0]
- assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/disks/{disk}/resize"
- % client.transport._host,
- args[1],
+ unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "project",
+ "resource",
+ "zone",
+ "zoneSetPolicyRequestResource",
+ )
)
+ )
-def test_resize_unary_rest_flattened_error(transport: str = "rest"):
- client = DisksClient(
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_iam_policy_rest_interceptors(null_interceptor):
+ transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
)
+ client = DisksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.DisksRestInterceptor, "post_set_iam_policy"
+ ) as post, mock.patch.object(
+ transports.DisksRestInterceptor, "pre_set_iam_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
- # Attempting to call a method with both a request object and flattened
- # fields is an error.
- with pytest.raises(ValueError):
- client.resize_unary(
- compute.ResizeDiskRequest(),
- project="project_value",
- zone="zone_value",
- disk="disk_value",
- disks_resize_request_resource=compute.DisksResizeRequest(size_gb=739),
- )
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
-def test_resize_unary_rest_error():
- client = DisksClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
- )
+ request = compute.SetIamPolicyDiskRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Policy
+ client.set_iam_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
-@pytest.mark.parametrize(
- "request_type",
- [
- compute.SetIamPolicyDiskRequest,
- dict,
- ],
-)
-def test_set_iam_policy_rest(request_type):
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetIamPolicyDiskRequest
+):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
- transport="rest",
+ transport=transport,
)
# send a request that will satisfy transcoding
@@ -4015,33 +6256,178 @@ def test_set_iam_policy_rest(request_type):
}
request = request_type(request_init)
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_iam_policy(request)
+
+
+def test_set_iam_policy_rest_flattened():
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "resource": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ resource="resource_value",
+ zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_iam_policy(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks/{resource}/setIamPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_iam_policy(
+ compute.SetIamPolicyDiskRequest(),
+ project="project_value",
+ zone="zone_value",
+ resource="resource_value",
+ zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
+ ),
+ )
+
+
+def test_set_iam_policy_rest_error():
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetLabelsDiskRequest,
+ dict,
+ ],
+)
+def test_set_labels_rest(request_type):
+ client = DisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init["zone_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ }
+ request = request_type(request_init)
+
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.set_labels(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_set_iam_policy_rest_required_fields(
- request_type=compute.SetIamPolicyDiskRequest,
-):
+def test_set_labels_rest_required_fields(request_type=compute.SetLabelsDiskRequest):
transport_class = transports.DisksRestTransport
request_init = {}
@@ -4059,7 +6445,7 @@ def test_set_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).set_labels._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4070,7 +6456,9 @@ def test_set_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).set_labels._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -4088,7 +6476,7 @@ def test_set_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -4107,38 +6495,38 @@ def test_set_iam_policy_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.set_labels(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_iam_policy_rest_unset_required_fields():
+def test_set_labels_rest_unset_required_fields():
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.set_labels._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
"resource",
"zone",
- "zoneSetPolicyRequestResource",
+ "zoneSetLabelsRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_iam_policy_rest_interceptors(null_interceptor):
+def test_set_labels_rest_interceptors(null_interceptor):
transport = transports.DisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.DisksRestInterceptor(),
@@ -4149,9 +6537,9 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.DisksRestInterceptor, "post_set_iam_policy"
+ transports.DisksRestInterceptor, "post_set_labels"
) as post, mock.patch.object(
- transports.DisksRestInterceptor, "pre_set_iam_policy"
+ transports.DisksRestInterceptor, "pre_set_labels"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4166,17 +6554,17 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetIamPolicyDiskRequest()
+ request = compute.SetLabelsDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.set_iam_policy(
+ client.set_labels(
request,
metadata=[
("key", "val"),
@@ -4188,8 +6576,8 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.SetIamPolicyDiskRequest
+def test_set_labels_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetLabelsDiskRequest
):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4198,82 +6586,9 @@ def test_set_iam_policy_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
- request_init["zone_set_policy_request_resource"] = {
- "bindings": [
- {
- "binding_id": "binding_id_value",
- "condition": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "members": ["members_value_1", "members_value_2"],
- "role": "role_value",
- }
- ],
- "etag": "etag_value",
- "policy": {
- "audit_configs": [
- {
- "audit_log_configs": [
- {
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "ignore_child_exemptions": True,
- "log_type": "log_type_value",
- }
- ],
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "service": "service_value",
- }
- ],
- "bindings": {},
- "etag": "etag_value",
- "iam_owned": True,
- "rules": [
- {
- "action": "action_value",
- "conditions": [
- {
- "iam": "iam_value",
- "op": "op_value",
- "svc": "svc_value",
- "sys": "sys_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "description": "description_value",
- "ins": ["ins_value_1", "ins_value_2"],
- "log_configs": [
- {
- "cloud_audit": {
- "authorization_logging_options": {
- "permission_type": "permission_type_value"
- },
- "log_name": "log_name_value",
- },
- "counter": {
- "custom_fields": [
- {"name": "name_value", "value": "value_value"}
- ],
- "field": "field_value",
- "metric": "metric_value",
- },
- "data_access": {"log_mode": "log_mode_value"},
- }
- ],
- "not_ins": ["not_ins_value_1", "not_ins_value_2"],
- "permissions": ["permissions_value_1", "permissions_value_2"],
- }
- ],
- "version": 774,
- },
+ request_init["zone_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
}
request = request_type(request_init)
@@ -4286,10 +6601,10 @@ def test_set_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_iam_policy(request)
+ client.set_labels(request)
-def test_set_iam_policy_rest_flattened():
+def test_set_labels_rest_flattened():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4298,7 +6613,7 @@ def test_set_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -4312,8 +6627,8 @@ def test_set_iam_policy_rest_flattened():
project="project_value",
zone="zone_value",
resource="resource_value",
- zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
+ zone_set_labels_request_resource=compute.ZoneSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
),
)
mock_args.update(sample_request)
@@ -4321,25 +6636,25 @@ def test_set_iam_policy_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_iam_policy(**mock_args)
+ client.set_labels(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/disks/{resource}/setIamPolicy"
+ "%s/compute/v1/projects/{project}/zones/{zone}/disks/{resource}/setLabels"
% client.transport._host,
args[1],
)
-def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_set_labels_rest_flattened_error(transport: str = "rest"):
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4348,18 +6663,18 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_iam_policy(
- compute.SetIamPolicyDiskRequest(),
+ client.set_labels(
+ compute.SetLabelsDiskRequest(),
project="project_value",
zone="zone_value",
resource="resource_value",
- zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
+ zone_set_labels_request_resource=compute.ZoneSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
),
)
-def test_set_iam_policy_rest_error():
+def test_set_labels_rest_error():
client = DisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4424,28 +6739,6 @@ def test_set_labels_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_set_labels_unary_rest_required_fields(
@@ -5072,6 +7365,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = DisksClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_disks_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -5115,6 +7421,14 @@ def test_disks_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_disks_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_external_vpn_gateways.py b/tests/unit/gapic/compute_v1/test_external_vpn_gateways.py
index 472994300..15044bdb9 100644
--- a/tests/unit/gapic/compute_v1/test_external_vpn_gateways.py
+++ b/tests/unit/gapic/compute_v1/test_external_vpn_gateways.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -555,7 +557,7 @@ def test_external_vpn_gateways_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -599,10 +601,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -627,7 +629,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteExternalVpnGatewayRequest,
):
transport_class = transports.ExternalVpnGatewaysRestTransport
@@ -696,14 +698,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.ExternalVpnGatewaysRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -721,7 +723,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.ExternalVpnGatewaysRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -761,7 +763,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -773,7 +775,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteExternalVpnGatewayRequest
):
client = ExternalVpnGatewaysClient(
@@ -794,10 +796,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -826,7 +828,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -839,7 +841,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -848,14 +850,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteExternalVpnGatewayRequest(),
project="project_value",
external_vpn_gateway="external_vpn_gateway_value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -864,11 +866,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetExternalVpnGatewayRequest,
+ compute.DeleteExternalVpnGatewayRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -881,38 +883,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ExternalVpnGateway(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- label_fingerprint="label_fingerprint_value",
name="name_value",
- redundancy_type="redundancy_type_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ExternalVpnGateway.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.ExternalVpnGateway)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.label_fingerprint == "label_fingerprint_value"
- assert response.name == "name_value"
- assert response.redundancy_type == "redundancy_type_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetExternalVpnGatewayRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteExternalVpnGatewayRequest,
+):
transport_class = transports.ExternalVpnGatewaysRestTransport
request_init = {}
@@ -929,7 +939,7 @@ def test_get_rest_required_fields(request_type=compute.GetExternalVpnGatewayRequ
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -939,7 +949,9 @@ def test_get_rest_required_fields(request_type=compute.GetExternalVpnGatewayRequ
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -955,7 +967,7 @@ def test_get_rest_required_fields(request_type=compute.GetExternalVpnGatewayRequ
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.ExternalVpnGateway()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -966,32 +978,32 @@ def test_get_rest_required_fields(request_type=compute.GetExternalVpnGatewayRequ
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ExternalVpnGateway.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.ExternalVpnGatewaysRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"externalVpnGateway",
@@ -1002,7 +1014,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.ExternalVpnGatewaysRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1015,9 +1027,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ExternalVpnGatewaysRestInterceptor, "post_get"
+ transports.ExternalVpnGatewaysRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.ExternalVpnGatewaysRestInterceptor, "pre_get"
+ transports.ExternalVpnGatewaysRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1032,19 +1044,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.ExternalVpnGateway.to_json(
- compute.ExternalVpnGateway()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetExternalVpnGatewayRequest()
+ request = compute.DeleteExternalVpnGatewayRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.ExternalVpnGateway
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1056,8 +1066,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetExternalVpnGatewayRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteExternalVpnGatewayRequest
):
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1077,10 +1087,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1089,7 +1099,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ExternalVpnGateway()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "external_vpn_gateway": "sample2"}
@@ -1104,12 +1114,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ExternalVpnGateway.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1122,7 +1132,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1131,14 +1141,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetExternalVpnGatewayRequest(),
+ client.delete_unary(
+ compute.DeleteExternalVpnGatewayRequest(),
project="project_value",
external_vpn_gateway="external_vpn_gateway_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1147,100 +1157,59 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertExternalVpnGatewayRequest,
+ compute.GetExternalVpnGatewayRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["external_vpn_gateway_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "id": 205,
- "interfaces": [{"id": 205, "ip_address": "ip_address_value"}],
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "name": "name_value",
- "redundancy_type": "redundancy_type_value",
- "self_link": "self_link_value",
- }
+ request_init = {"project": "sample1", "external_vpn_gateway": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.ExternalVpnGateway(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
id=205,
- insert_time="insert_time_value",
kind="kind_value",
+ label_fingerprint="label_fingerprint_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
+ redundancy_type="redundancy_type_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.ExternalVpnGateway.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.ExternalVpnGateway)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
+ assert response.label_fingerprint == "label_fingerprint_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
+ assert response.redundancy_type == "redundancy_type_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertExternalVpnGatewayRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetExternalVpnGatewayRequest):
transport_class = transports.ExternalVpnGatewaysRestTransport
request_init = {}
+ request_init["external_vpn_gateway"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1253,21 +1222,22 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["externalVpnGateway"] = "external_vpn_gateway_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "externalVpnGateway" in jsonified_request
+ assert jsonified_request["externalVpnGateway"] == "external_vpn_gateway_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -1278,7 +1248,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.ExternalVpnGateway()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1289,36 +1259,35 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.ExternalVpnGateway.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.ExternalVpnGatewaysRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
- "externalVpnGatewayResource",
+ "externalVpnGateway",
"project",
)
)
@@ -1326,7 +1295,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.ExternalVpnGatewaysRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1339,9 +1308,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ExternalVpnGatewaysRestInterceptor, "post_insert"
+ transports.ExternalVpnGatewaysRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.ExternalVpnGatewaysRestInterceptor, "pre_insert"
+ transports.ExternalVpnGatewaysRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1356,17 +1325,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.ExternalVpnGateway.to_json(
+ compute.ExternalVpnGateway()
+ )
- request = compute.InsertExternalVpnGatewayRequest()
+ request = compute.GetExternalVpnGatewayRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.ExternalVpnGateway
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1378,8 +1349,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertExternalVpnGatewayRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetExternalVpnGatewayRequest
):
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1387,19 +1358,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["external_vpn_gateway_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "id": 205,
- "interfaces": [{"id": 205, "ip_address": "ip_address_value"}],
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "name": "name_value",
- "redundancy_type": "redundancy_type_value",
- "self_link": "self_link_value",
- }
+ request_init = {"project": "sample1", "external_vpn_gateway": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1411,10 +1370,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get(request)
-def test_insert_unary_rest_flattened():
+def test_get_rest_flattened():
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1423,24 +1382,674 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.ExternalVpnGateway()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "external_vpn_gateway": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- external_vpn_gateway_resource=compute.ExternalVpnGateway(
- creation_timestamp="creation_timestamp_value"
- ),
+ external_vpn_gateway="external_vpn_gateway_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.ExternalVpnGateway.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/externalVpnGateways/{external_vpn_gateway}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetExternalVpnGatewayRequest(),
+ project="project_value",
+ external_vpn_gateway="external_vpn_gateway_value",
+ )
+
+
+def test_get_rest_error():
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertExternalVpnGatewayRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["external_vpn_gateway_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "interfaces": [{"id": 205, "ip_address": "ip_address_value"}],
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "name": "name_value",
+ "redundancy_type": "redundancy_type_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertExternalVpnGatewayRequest,
+):
+ transport_class = transports.ExternalVpnGatewaysRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.ExternalVpnGatewaysRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "externalVpnGatewayResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.ExternalVpnGatewaysRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ExternalVpnGatewaysRestInterceptor(),
+ )
+ client = ExternalVpnGatewaysClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ExternalVpnGatewaysRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.ExternalVpnGatewaysRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertExternalVpnGatewayRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertExternalVpnGatewayRequest
+):
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["external_vpn_gateway_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "interfaces": [{"id": 205, "ip_address": "ip_address_value"}],
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "name": "name_value",
+ "redundancy_type": "redundancy_type_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ external_vpn_gateway_resource=compute.ExternalVpnGateway(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/externalVpnGateways"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertExternalVpnGatewayRequest(),
+ project="project_value",
+ external_vpn_gateway_resource=compute.ExternalVpnGateway(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertExternalVpnGatewayRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["external_vpn_gateway_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "interfaces": [{"id": 205, "ip_address": "ip_address_value"}],
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "name": "name_value",
+ "redundancy_type": "redundancy_type_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertExternalVpnGatewayRequest,
+):
+ transport_class = transports.ExternalVpnGatewaysRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.ExternalVpnGatewaysRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "externalVpnGatewayResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.ExternalVpnGatewaysRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ExternalVpnGatewaysRestInterceptor(),
+ )
+ client = ExternalVpnGatewaysClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ExternalVpnGatewaysRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.ExternalVpnGatewaysRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertExternalVpnGatewayRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertExternalVpnGatewayRequest
+):
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["external_vpn_gateway_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "interfaces": [{"id": 205, "ip_address": "ip_address_value"}],
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "name": "name_value",
+ "redundancy_type": "redundancy_type_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ external_vpn_gateway_resource=compute.ExternalVpnGateway(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
@@ -1458,7 +2067,294 @@ def test_insert_unary_rest_flattened():
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertExternalVpnGatewayRequest(),
+ project="project_value",
+ external_vpn_gateway_resource=compute.ExternalVpnGateway(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListExternalVpnGatewaysRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ExternalVpnGatewayList(
+ etag="etag_value",
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ExternalVpnGatewayList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.etag == "etag_value"
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListExternalVpnGatewaysRequest):
+ transport_class = transports.ExternalVpnGatewaysRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ExternalVpnGatewayList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ExternalVpnGatewayList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.ExternalVpnGatewaysRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.ExternalVpnGatewaysRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ExternalVpnGatewaysRestInterceptor(),
+ )
+ client = ExternalVpnGatewaysClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ExternalVpnGatewaysRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.ExternalVpnGatewaysRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.ExternalVpnGatewayList.to_json(
+ compute.ExternalVpnGatewayList()
+ )
+
+ request = compute.ListExternalVpnGatewaysRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.ExternalVpnGatewayList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListExternalVpnGatewaysRequest
+):
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ExternalVpnGatewayList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ExternalVpnGatewayList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/externalVpnGateways"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1467,71 +2363,164 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertExternalVpnGatewayRequest(),
+ client.list(
+ compute.ListExternalVpnGatewaysRequest(),
project="project_value",
- external_vpn_gateway_resource=compute.ExternalVpnGateway(
- creation_timestamp="creation_timestamp_value"
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = ExternalVpnGatewaysClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.ExternalVpnGatewayList(
+ items=[
+ compute.ExternalVpnGateway(),
+ compute.ExternalVpnGateway(),
+ compute.ExternalVpnGateway(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.ExternalVpnGatewayList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.ExternalVpnGatewayList(
+ items=[
+ compute.ExternalVpnGateway(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.ExternalVpnGatewayList(
+ items=[
+ compute.ExternalVpnGateway(),
+ compute.ExternalVpnGateway(),
+ ],
),
)
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.ExternalVpnGatewayList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+ pager = client.list(request=sample_request)
-def test_insert_unary_rest_error():
- client = ExternalVpnGatewaysClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
- )
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.ExternalVpnGateway) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
@pytest.mark.parametrize(
"request_type",
[
- compute.ListExternalVpnGatewaysRequest,
+ compute.SetLabelsExternalVpnGatewayRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_set_labels_rest(request_type):
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request_init["global_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ExternalVpnGatewayList(
- etag="etag_value",
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ExternalVpnGatewayList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.set_labels(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.etag == "etag_value"
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(request_type=compute.ListExternalVpnGatewaysRequest):
+def test_set_labels_rest_required_fields(
+ request_type=compute.SetLabelsExternalVpnGatewayRequest,
+):
transport_class = transports.ExternalVpnGatewaysRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1543,31 +2532,24 @@ def test_list_rest_required_fields(request_type=compute.ListExternalVpnGatewaysR
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).set_labels._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ ).set_labels._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1576,7 +2558,7 @@ def test_list_rest_required_fields(request_type=compute.ListExternalVpnGatewaysR
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.ExternalVpnGatewayList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1587,46 +2569,45 @@ def test_list_rest_required_fields(request_type=compute.ListExternalVpnGatewaysR
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ExternalVpnGatewayList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.set_labels(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_set_labels_rest_unset_required_fields():
transport = transports.ExternalVpnGatewaysRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.set_labels._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(())
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "globalSetLabelsRequestResource",
+ "project",
+ "resource",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_set_labels_rest_interceptors(null_interceptor):
transport = transports.ExternalVpnGatewaysRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1639,9 +2620,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ExternalVpnGatewaysRestInterceptor, "post_list"
+ transports.ExternalVpnGatewaysRestInterceptor, "post_set_labels"
) as post, mock.patch.object(
- transports.ExternalVpnGatewaysRestInterceptor, "pre_list"
+ transports.ExternalVpnGatewaysRestInterceptor, "pre_set_labels"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1656,19 +2637,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.ExternalVpnGatewayList.to_json(
- compute.ExternalVpnGatewayList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListExternalVpnGatewaysRequest()
+ request = compute.SetLabelsExternalVpnGatewayRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.ExternalVpnGatewayList
+ post.return_value = compute.Operation
- client.list(
+ client.set_labels(
request,
metadata=[
("key", "val"),
@@ -1680,8 +2659,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListExternalVpnGatewaysRequest
+def test_set_labels_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetLabelsExternalVpnGatewayRequest
):
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1689,7 +2668,11 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request_init["global_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1701,10 +2684,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.set_labels(request)
-def test_list_rest_flattened():
+def test_set_labels_rest_flattened():
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1713,39 +2696,43 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ExternalVpnGatewayList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "resource": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ resource="resource_value",
+ global_set_labels_request_resource=compute.GlobalSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ExternalVpnGatewayList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.set_labels(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/externalVpnGateways"
+ "%s/compute/v1/projects/{project}/global/externalVpnGateways/{resource}/setLabels"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_set_labels_rest_flattened_error(transport: str = "rest"):
client = ExternalVpnGatewaysClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1754,72 +2741,21 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListExternalVpnGatewaysRequest(),
+ client.set_labels(
+ compute.SetLabelsExternalVpnGatewayRequest(),
project="project_value",
+ resource="resource_value",
+ global_set_labels_request_resource=compute.GlobalSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_set_labels_rest_error():
client = ExternalVpnGatewaysClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.ExternalVpnGatewayList(
- items=[
- compute.ExternalVpnGateway(),
- compute.ExternalVpnGateway(),
- compute.ExternalVpnGateway(),
- ],
- next_page_token="abc",
- ),
- compute.ExternalVpnGatewayList(
- items=[],
- next_page_token="def",
- ),
- compute.ExternalVpnGatewayList(
- items=[
- compute.ExternalVpnGateway(),
- ],
- next_page_token="ghi",
- ),
- compute.ExternalVpnGatewayList(
- items=[
- compute.ExternalVpnGateway(),
- compute.ExternalVpnGateway(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.ExternalVpnGatewayList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.ExternalVpnGateway) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
@@ -1880,28 +2816,6 @@ def test_set_labels_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_set_labels_unary_rest_required_fields(
@@ -2509,6 +3423,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = ExternalVpnGatewaysClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_external_vpn_gateways_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2545,6 +3472,14 @@ def test_external_vpn_gateways_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_external_vpn_gateways_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_firewall_policies.py b/tests/unit/gapic/compute_v1/test_firewall_policies.py
index f55b5e7ef..82fa01db5 100644
--- a/tests/unit/gapic/compute_v1/test_firewall_policies.py
+++ b/tests/unit/gapic/compute_v1/test_firewall_policies.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -545,7 +547,7 @@ def test_firewall_policies_client_client_options_credentials_file(
dict,
],
)
-def test_add_association_unary_rest(request_type):
+def test_add_association_rest(request_type):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -596,10 +598,10 @@ def test_add_association_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_association_unary(request)
+ response = client.add_association(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -624,7 +626,7 @@ def test_add_association_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_add_association_unary_rest_required_fields(
+def test_add_association_rest_required_fields(
request_type=compute.AddAssociationFirewallPolicyRequest,
):
transport_class = transports.FirewallPoliciesRestTransport
@@ -695,14 +697,14 @@ def test_add_association_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_association_unary(request)
+ response = client.add_association(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_add_association_unary_rest_unset_required_fields():
+def test_add_association_rest_unset_required_fields():
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -725,7 +727,7 @@ def test_add_association_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_association_unary_rest_interceptors(null_interceptor):
+def test_add_association_rest_interceptors(null_interceptor):
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -765,7 +767,7 @@ def test_add_association_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_association_unary(
+ client.add_association(
request,
metadata=[
("key", "val"),
@@ -777,7 +779,7 @@ def test_add_association_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_association_unary_rest_bad_request(
+def test_add_association_rest_bad_request(
transport: str = "rest", request_type=compute.AddAssociationFirewallPolicyRequest
):
client = FirewallPoliciesClient(
@@ -805,10 +807,10 @@ def test_add_association_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_association_unary(request)
+ client.add_association(request)
-def test_add_association_unary_rest_flattened():
+def test_add_association_rest_flattened():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -839,7 +841,7 @@ def test_add_association_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_association_unary(**mock_args)
+ client.add_association(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -852,7 +854,7 @@ def test_add_association_unary_rest_flattened():
)
-def test_add_association_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_association_rest_flattened_error(transport: str = "rest"):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -861,7 +863,7 @@ def test_add_association_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_association_unary(
+ client.add_association(
compute.AddAssociationFirewallPolicyRequest(),
firewall_policy="firewall_policy_value",
firewall_policy_association_resource=compute.FirewallPolicyAssociation(
@@ -870,7 +872,7 @@ def test_add_association_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_add_association_unary_rest_error():
+def test_add_association_rest_error():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -879,11 +881,11 @@ def test_add_association_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.AddRuleFirewallPolicyRequest,
+ compute.AddAssociationFirewallPolicyRequest,
dict,
],
)
-def test_add_rule_unary_rest(request_type):
+def test_add_association_unary_rest(request_type):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -891,33 +893,12 @@ def test_add_rule_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"firewall_policy": "sample1"}
- request_init["firewall_policy_rule_resource"] = {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": ["target_resources_value_1", "target_resources_value_2"],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
+ request_init["firewall_policy_association_resource"] = {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
}
request = request_type(request_init)
@@ -955,36 +936,14 @@ def test_add_rule_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_rule_unary(request)
+ response = client.add_association_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_add_rule_unary_rest_required_fields(
- request_type=compute.AddRuleFirewallPolicyRequest,
+def test_add_association_unary_rest_required_fields(
+ request_type=compute.AddAssociationFirewallPolicyRequest,
):
transport_class = transports.FirewallPoliciesRestTransport
@@ -1001,7 +960,7 @@ def test_add_rule_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).add_rule._get_unset_required_fields(jsonified_request)
+ ).add_association._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1010,9 +969,14 @@ def test_add_rule_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).add_rule._get_unset_required_fields(jsonified_request)
+ ).add_association._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "replace_existing_association",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1049,32 +1013,37 @@ def test_add_rule_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_rule_unary(request)
+ response = client.add_association_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_add_rule_unary_rest_unset_required_fields():
+def test_add_association_unary_rest_unset_required_fields():
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.add_rule._get_unset_required_fields({})
+ unset_fields = transport.add_association._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "replaceExistingAssociation",
+ "requestId",
+ )
+ )
& set(
(
"firewallPolicy",
- "firewallPolicyRuleResource",
+ "firewallPolicyAssociationResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_rule_unary_rest_interceptors(null_interceptor):
+def test_add_association_unary_rest_interceptors(null_interceptor):
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1087,9 +1056,9 @@ def test_add_rule_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "post_add_rule"
+ transports.FirewallPoliciesRestInterceptor, "post_add_association"
) as post, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "pre_add_rule"
+ transports.FirewallPoliciesRestInterceptor, "pre_add_association"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1106,7 +1075,7 @@ def test_add_rule_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.AddRuleFirewallPolicyRequest()
+ request = compute.AddAssociationFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1114,7 +1083,7 @@ def test_add_rule_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_rule_unary(
+ client.add_association_unary(
request,
metadata=[
("key", "val"),
@@ -1126,8 +1095,8 @@ def test_add_rule_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_rule_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.AddRuleFirewallPolicyRequest
+def test_add_association_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddAssociationFirewallPolicyRequest
):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1136,33 +1105,12 @@ def test_add_rule_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"firewall_policy": "sample1"}
- request_init["firewall_policy_rule_resource"] = {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": ["target_resources_value_1", "target_resources_value_2"],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
+ request_init["firewall_policy_association_resource"] = {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
}
request = request_type(request_init)
@@ -1175,10 +1123,10 @@ def test_add_rule_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_rule_unary(request)
+ client.add_association_unary(request)
-def test_add_rule_unary_rest_flattened():
+def test_add_association_unary_rest_flattened():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1195,8 +1143,8 @@ def test_add_rule_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
firewall_policy="firewall_policy_value",
- firewall_policy_rule_resource=compute.FirewallPolicyRule(
- action="action_value"
+ firewall_policy_association_resource=compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
),
)
mock_args.update(sample_request)
@@ -1209,20 +1157,20 @@ def test_add_rule_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_rule_unary(**mock_args)
+ client.add_association_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/addRule"
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/addAssociation"
% client.transport._host,
args[1],
)
-def test_add_rule_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_association_unary_rest_flattened_error(transport: str = "rest"):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1231,16 +1179,16 @@ def test_add_rule_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_rule_unary(
- compute.AddRuleFirewallPolicyRequest(),
+ client.add_association_unary(
+ compute.AddAssociationFirewallPolicyRequest(),
firewall_policy="firewall_policy_value",
- firewall_policy_rule_resource=compute.FirewallPolicyRule(
- action="action_value"
+ firewall_policy_association_resource=compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
),
)
-def test_add_rule_unary_rest_error():
+def test_add_association_unary_rest_error():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1249,11 +1197,11 @@ def test_add_rule_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.CloneRulesFirewallPolicyRequest,
+ compute.AddRuleFirewallPolicyRequest,
dict,
],
)
-def test_clone_rules_unary_rest(request_type):
+def test_add_rule_rest(request_type):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1261,6 +1209,34 @@ def test_clone_rules_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"firewall_policy": "sample1"}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1297,10 +1273,10 @@ def test_clone_rules_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.clone_rules_unary(request)
+ response = client.add_rule(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1325,8 +1301,8 @@ def test_clone_rules_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_clone_rules_unary_rest_required_fields(
- request_type=compute.CloneRulesFirewallPolicyRequest,
+def test_add_rule_rest_required_fields(
+ request_type=compute.AddRuleFirewallPolicyRequest,
):
transport_class = transports.FirewallPoliciesRestTransport
@@ -1343,7 +1319,7 @@ def test_clone_rules_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).clone_rules._get_unset_required_fields(jsonified_request)
+ ).add_rule._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1352,14 +1328,9 @@ def test_clone_rules_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).clone_rules._get_unset_required_fields(jsonified_request)
+ ).add_rule._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "request_id",
- "source_firewall_policy",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1387,6 +1358,7 @@ def test_clone_rules_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1395,32 +1367,32 @@ def test_clone_rules_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.clone_rules_unary(request)
+ response = client.add_rule(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_clone_rules_unary_rest_unset_required_fields():
+def test_add_rule_rest_unset_required_fields():
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.clone_rules._get_unset_required_fields({})
+ unset_fields = transport.add_rule._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "requestId",
- "sourceFirewallPolicy",
+ "firewallPolicy",
+ "firewallPolicyRuleResource",
)
)
- & set(("firewallPolicy",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_clone_rules_unary_rest_interceptors(null_interceptor):
+def test_add_rule_rest_interceptors(null_interceptor):
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1433,9 +1405,9 @@ def test_clone_rules_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "post_clone_rules"
+ transports.FirewallPoliciesRestInterceptor, "post_add_rule"
) as post, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "pre_clone_rules"
+ transports.FirewallPoliciesRestInterceptor, "pre_add_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1452,7 +1424,7 @@ def test_clone_rules_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.CloneRulesFirewallPolicyRequest()
+ request = compute.AddRuleFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1460,7 +1432,7 @@ def test_clone_rules_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.clone_rules_unary(
+ client.add_rule(
request,
metadata=[
("key", "val"),
@@ -1472,8 +1444,8 @@ def test_clone_rules_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_clone_rules_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.CloneRulesFirewallPolicyRequest
+def test_add_rule_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddRuleFirewallPolicyRequest
):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1482,21 +1454,49 @@ def test_clone_rules_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"firewall_policy": "sample1"}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a BadRequest error.
- with mock.patch.object(Session, "request") as req, pytest.raises(
- core_exceptions.BadRequest
- ):
- # Wrap the value into a proper Response obj
- response_value = Response()
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.clone_rules_unary(request)
+ client.add_rule(request)
-def test_clone_rules_unary_rest_flattened():
+def test_add_rule_rest_flattened():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1513,6 +1513,9 @@ def test_clone_rules_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
mock_args.update(sample_request)
@@ -1524,20 +1527,20 @@ def test_clone_rules_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.clone_rules_unary(**mock_args)
+ client.add_rule(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/cloneRules"
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/addRule"
% client.transport._host,
args[1],
)
-def test_clone_rules_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_rule_rest_flattened_error(transport: str = "rest"):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1546,13 +1549,16 @@ def test_clone_rules_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.clone_rules_unary(
- compute.CloneRulesFirewallPolicyRequest(),
+ client.add_rule(
+ compute.AddRuleFirewallPolicyRequest(),
firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
-def test_clone_rules_unary_rest_error():
+def test_add_rule_rest_error():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1561,11 +1567,11 @@ def test_clone_rules_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteFirewallPolicyRequest,
+ compute.AddRuleFirewallPolicyRequest,
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_add_rule_unary_rest(request_type):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1573,6 +1579,34 @@ def test_delete_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"firewall_policy": "sample1"}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1609,36 +1643,14 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.add_rule_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteFirewallPolicyRequest,
+def test_add_rule_unary_rest_required_fields(
+ request_type=compute.AddRuleFirewallPolicyRequest,
):
transport_class = transports.FirewallPoliciesRestTransport
@@ -1655,7 +1667,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).add_rule._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1664,7 +1676,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).add_rule._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -1691,9 +1703,10 @@ def test_delete_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1702,24 +1715,32 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.add_rule_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_add_rule_unary_rest_unset_required_fields():
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
- assert set(unset_fields) == (set(("requestId",)) & set(("firewallPolicy",)))
+ unset_fields = transport.add_rule._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "firewallPolicy",
+ "firewallPolicyRuleResource",
+ )
+ )
+ )
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_add_rule_unary_rest_interceptors(null_interceptor):
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1732,9 +1753,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "post_delete"
+ transports.FirewallPoliciesRestInterceptor, "post_add_rule"
) as post, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "pre_delete"
+ transports.FirewallPoliciesRestInterceptor, "pre_add_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1751,7 +1772,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteFirewallPolicyRequest()
+ request = compute.AddRuleFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1759,7 +1780,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.add_rule_unary(
request,
metadata=[
("key", "val"),
@@ -1771,8 +1792,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteFirewallPolicyRequest
+def test_add_rule_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddRuleFirewallPolicyRequest
):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1781,6 +1802,34 @@ def test_delete_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"firewall_policy": "sample1"}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1792,10 +1841,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.add_rule_unary(request)
-def test_delete_unary_rest_flattened():
+def test_add_rule_unary_rest_flattened():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1812,6 +1861,9 @@ def test_delete_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
mock_args.update(sample_request)
@@ -1823,20 +1875,20 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.add_rule_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}"
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/addRule"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_rule_unary_rest_flattened_error(transport: str = "rest"):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1845,13 +1897,16 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteFirewallPolicyRequest(),
+ client.add_rule_unary(
+ compute.AddRuleFirewallPolicyRequest(),
firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
-def test_delete_unary_rest_error():
+def test_add_rule_unary_rest_error():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1860,11 +1915,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetFirewallPolicyRequest,
+ compute.CloneRulesFirewallPolicyRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_clone_rules_rest(request_type):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1877,48 +1932,68 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicy(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- display_name="display_name_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- parent="parent_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
- rule_tuple_count=1737,
self_link="self_link_value",
- self_link_with_id="self_link_with_id_value",
- short_name="short_name_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.clone_rules(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.FirewallPolicy)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.display_name == "display_name_value"
- assert response.fingerprint == "fingerprint_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.parent == "parent_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
assert response.region == "region_value"
- assert response.rule_tuple_count == 1737
assert response.self_link == "self_link_value"
- assert response.self_link_with_id == "self_link_with_id_value"
- assert response.short_name == "short_name_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_rest_required_fields(request_type=compute.GetFirewallPolicyRequest):
+def test_clone_rules_rest_required_fields(
+ request_type=compute.CloneRulesFirewallPolicyRequest,
+):
transport_class = transports.FirewallPoliciesRestTransport
request_init = {}
@@ -1934,7 +2009,7 @@ def test_get_rest_required_fields(request_type=compute.GetFirewallPolicyRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).clone_rules._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1943,7 +2018,14 @@ def test_get_rest_required_fields(request_type=compute.GetFirewallPolicyRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).clone_rules._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "source_firewall_policy",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1957,7 +2039,7 @@ def test_get_rest_required_fields(request_type=compute.GetFirewallPolicyRequest)
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1968,35 +2050,43 @@ def test_get_rest_required_fields(request_type=compute.GetFirewallPolicyRequest)
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.clone_rules(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_clone_rules_rest_unset_required_fields():
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
- assert set(unset_fields) == (set(()) & set(("firewallPolicy",)))
+ unset_fields = transport.clone_rules._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "sourceFirewallPolicy",
+ )
+ )
+ & set(("firewallPolicy",))
+ )
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_clone_rules_rest_interceptors(null_interceptor):
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2009,9 +2099,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "post_get"
+ transports.FirewallPoliciesRestInterceptor, "post_clone_rules"
) as post, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "pre_get"
+ transports.FirewallPoliciesRestInterceptor, "pre_clone_rules"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2026,19 +2116,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.FirewallPolicy.to_json(
- compute.FirewallPolicy()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetFirewallPolicyRequest()
+ request = compute.CloneRulesFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.FirewallPolicy
+ post.return_value = compute.Operation
- client.get(
+ client.clone_rules(
request,
metadata=[
("key", "val"),
@@ -2050,8 +2138,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetFirewallPolicyRequest
+def test_clone_rules_rest_bad_request(
+ transport: str = "rest", request_type=compute.CloneRulesFirewallPolicyRequest
):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2071,10 +2159,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.clone_rules(request)
-def test_get_rest_flattened():
+def test_clone_rules_rest_flattened():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2083,7 +2171,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"firewall_policy": "sample1"}
@@ -2097,25 +2185,25 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.clone_rules(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}"
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/cloneRules"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_clone_rules_rest_flattened_error(transport: str = "rest"):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2124,13 +2212,13 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetFirewallPolicyRequest(),
+ client.clone_rules(
+ compute.CloneRulesFirewallPolicyRequest(),
firewall_policy="firewall_policy_value",
)
-def test_get_rest_error():
+def test_clone_rules_rest_error():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2139,11 +2227,11 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetAssociationFirewallPolicyRequest,
+ compute.CloneRulesFirewallPolicyRequest,
dict,
],
)
-def test_get_association_rest(request_type):
+def test_clone_rules_unary_rest(request_type):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2156,33 +2244,45 @@ def test_get_association_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyAssociation(
- attachment_target="attachment_target_value",
- display_name="display_name_value",
- firewall_policy_id="firewall_policy_id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
name="name_value",
- short_name="short_name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_association(request)
+ response = client.clone_rules_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.FirewallPolicyAssociation)
- assert response.attachment_target == "attachment_target_value"
- assert response.display_name == "display_name_value"
- assert response.firewall_policy_id == "firewall_policy_id_value"
- assert response.name == "name_value"
- assert response.short_name == "short_name_value"
+ assert isinstance(response, compute.Operation)
-def test_get_association_rest_required_fields(
- request_type=compute.GetAssociationFirewallPolicyRequest,
+def test_clone_rules_unary_rest_required_fields(
+ request_type=compute.CloneRulesFirewallPolicyRequest,
):
transport_class = transports.FirewallPoliciesRestTransport
@@ -2199,7 +2299,7 @@ def test_get_association_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_association._get_unset_required_fields(jsonified_request)
+ ).clone_rules._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2208,9 +2308,14 @@ def test_get_association_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_association._get_unset_required_fields(jsonified_request)
+ ).clone_rules._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("name",))
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "source_firewall_policy",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2224,7 +2329,7 @@ def test_get_association_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyAssociation()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2235,35 +2340,43 @@ def test_get_association_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_association(request)
+ response = client.clone_rules_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_association_rest_unset_required_fields():
+def test_clone_rules_unary_rest_unset_required_fields():
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_association._get_unset_required_fields({})
- assert set(unset_fields) == (set(("name",)) & set(("firewallPolicy",)))
+ unset_fields = transport.clone_rules._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "sourceFirewallPolicy",
+ )
+ )
+ & set(("firewallPolicy",))
+ )
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_association_rest_interceptors(null_interceptor):
+def test_clone_rules_unary_rest_interceptors(null_interceptor):
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2276,9 +2389,9 @@ def test_get_association_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "post_get_association"
+ transports.FirewallPoliciesRestInterceptor, "post_clone_rules"
) as post, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "pre_get_association"
+ transports.FirewallPoliciesRestInterceptor, "pre_clone_rules"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2293,19 +2406,17 @@ def test_get_association_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.FirewallPolicyAssociation.to_json(
- compute.FirewallPolicyAssociation()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetAssociationFirewallPolicyRequest()
+ request = compute.CloneRulesFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.FirewallPolicyAssociation
+ post.return_value = compute.Operation
- client.get_association(
+ client.clone_rules_unary(
request,
metadata=[
("key", "val"),
@@ -2317,8 +2428,8 @@ def test_get_association_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_association_rest_bad_request(
- transport: str = "rest", request_type=compute.GetAssociationFirewallPolicyRequest
+def test_clone_rules_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.CloneRulesFirewallPolicyRequest
):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2338,10 +2449,10 @@ def test_get_association_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_association(request)
+ client.clone_rules_unary(request)
-def test_get_association_rest_flattened():
+def test_clone_rules_unary_rest_flattened():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2350,7 +2461,7 @@ def test_get_association_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyAssociation()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"firewall_policy": "sample1"}
@@ -2364,25 +2475,25 @@ def test_get_association_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_association(**mock_args)
+ client.clone_rules_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/getAssociation"
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/cloneRules"
% client.transport._host,
args[1],
)
-def test_get_association_rest_flattened_error(transport: str = "rest"):
+def test_clone_rules_unary_rest_flattened_error(transport: str = "rest"):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2391,13 +2502,13 @@ def test_get_association_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_association(
- compute.GetAssociationFirewallPolicyRequest(),
+ client.clone_rules_unary(
+ compute.CloneRulesFirewallPolicyRequest(),
firewall_policy="firewall_policy_value",
)
-def test_get_association_rest_error():
+def test_clone_rules_unary_rest_error():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2406,51 +2517,87 @@ def test_get_association_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicyFirewallPolicyRequest,
+ compute.DeleteFirewallPolicyRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_delete_rest(request_type):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"resource": "sample1"}
+ request_init = {"firewall_policy": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicyFirewallPolicyRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteFirewallPolicyRequest):
transport_class = transports.FirewallPoliciesRestTransport
request_init = {}
- request_init["resource"] = ""
+ request_init["firewall_policy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2462,23 +2609,23 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["resource"] = "resource_value"
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2487,7 +2634,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2498,37 +2645,35 @@ def test_get_iam_policy_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
- assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",)) & set(("resource",))
- )
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (set(("requestId",)) & set(("firewallPolicy",)))
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2541,9 +2686,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "post_get_iam_policy"
+ transports.FirewallPoliciesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "pre_get_iam_policy"
+ transports.FirewallPoliciesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2558,17 +2703,17 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetIamPolicyFirewallPolicyRequest()
+ request = compute.DeleteFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.get_iam_policy(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -2580,8 +2725,8 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.GetIamPolicyFirewallPolicyRequest
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteFirewallPolicyRequest
):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2589,7 +2734,7 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"resource": "sample1"}
+ request_init = {"firewall_policy": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2601,10 +2746,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.delete(request)
-def test_get_iam_policy_rest_flattened():
+def test_delete_rest_flattened():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2613,39 +2758,39 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"resource": "sample1"}
+ sample_request = {"firewall_policy": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
- resource="resource_value",
+ firewall_policy="firewall_policy_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/locations/global/firewallPolicies/{resource}/getIamPolicy"
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2654,13 +2799,13 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicyFirewallPolicyRequest(),
- resource="resource_value",
+ client.delete(
+ compute.DeleteFirewallPolicyRequest(),
+ firewall_policy="firewall_policy_value",
)
-def test_get_iam_policy_rest_error():
+def test_delete_rest_error():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2669,11 +2814,11 @@ def test_get_iam_policy_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRuleFirewallPolicyRequest,
+ compute.DeleteFirewallPolicyRequest,
dict,
],
)
-def test_get_rule_rest(request_type):
+def test_delete_unary_rest(request_type):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2686,45 +2831,45 @@ def test_get_rule_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyRule(
- action="action_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
description="description_value",
- direction="direction_value",
- disabled=True,
- enable_logging=True,
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- priority=898,
- rule_name="rule_name_value",
- rule_tuple_count=1737,
- target_resources=["target_resources_value"],
- target_service_accounts=["target_service_accounts_value"],
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_rule(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.FirewallPolicyRule)
- assert response.action == "action_value"
- assert response.description == "description_value"
- assert response.direction == "direction_value"
- assert response.disabled is True
- assert response.enable_logging is True
- assert response.kind == "kind_value"
- assert response.priority == 898
- assert response.rule_name == "rule_name_value"
- assert response.rule_tuple_count == 1737
- assert response.target_resources == ["target_resources_value"]
- assert response.target_service_accounts == ["target_service_accounts_value"]
+ assert isinstance(response, compute.Operation)
-def test_get_rule_rest_required_fields(
- request_type=compute.GetRuleFirewallPolicyRequest,
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteFirewallPolicyRequest,
):
transport_class = transports.FirewallPoliciesRestTransport
@@ -2741,7 +2886,7 @@ def test_get_rule_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_rule._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2750,9 +2895,9 @@ def test_get_rule_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_rule._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("priority",))
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2766,7 +2911,7 @@ def test_get_rule_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyRule()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2777,35 +2922,35 @@ def test_get_rule_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_rule(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rule_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_rule._get_unset_required_fields({})
- assert set(unset_fields) == (set(("priority",)) & set(("firewallPolicy",)))
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (set(("requestId",)) & set(("firewallPolicy",)))
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rule_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2818,9 +2963,9 @@ def test_get_rule_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "post_get_rule"
+ transports.FirewallPoliciesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "pre_get_rule"
+ transports.FirewallPoliciesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2835,19 +2980,17 @@ def test_get_rule_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.FirewallPolicyRule.to_json(
- compute.FirewallPolicyRule()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRuleFirewallPolicyRequest()
+ request = compute.DeleteFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.FirewallPolicyRule
+ post.return_value = compute.Operation
- client.get_rule(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -2859,8 +3002,8 @@ def test_get_rule_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rule_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRuleFirewallPolicyRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteFirewallPolicyRequest
):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2880,10 +3023,10 @@ def test_get_rule_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_rule(request)
+ client.delete_unary(request)
-def test_get_rule_rest_flattened():
+def test_delete_unary_rest_flattened():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2892,7 +3035,7 @@ def test_get_rule_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyRule()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"firewall_policy": "sample1"}
@@ -2906,25 +3049,25 @@ def test_get_rule_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_rule(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/getRule"
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}"
% client.transport._host,
args[1],
)
-def test_get_rule_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2933,13 +3076,13 @@ def test_get_rule_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_rule(
- compute.GetRuleFirewallPolicyRequest(),
+ client.delete_unary(
+ compute.DeleteFirewallPolicyRequest(),
firewall_policy="firewall_policy_value",
)
-def test_get_rule_rest_error():
+def test_delete_unary_rest_error():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2948,148 +3091,69 @@ def test_get_rule_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertFirewallPolicyRequest,
+ compute.GetFirewallPolicyRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {}
- request_init["firewall_policy_resource"] = {
- "associations": [
- {
- "attachment_target": "attachment_target_value",
- "display_name": "display_name_value",
- "firewall_policy_id": "firewall_policy_id_value",
- "name": "name_value",
- "short_name": "short_name_value",
- }
- ],
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "display_name": "display_name_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "parent": "parent_value",
- "region": "region_value",
- "rule_tuple_count": 1737,
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": [
- "dest_ip_ranges_value_1",
- "dest_ip_ranges_value_2",
- ],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": [
- "target_resources_value_1",
- "target_resources_value_2",
- ],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
- ],
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "short_name": "short_name_value",
- }
+ request_init = {"firewall_policy": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.FirewallPolicy(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ display_name="display_name_value",
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ parent="parent_value",
region="region_value",
+ rule_tuple_count=1737,
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ self_link_with_id="self_link_with_id_value",
+ short_name="short_name_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.FirewallPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.FirewallPolicy)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.display_name == "display_name_value"
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.parent == "parent_value"
assert response.region == "region_value"
+ assert response.rule_tuple_count == 1737
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.self_link_with_id == "self_link_with_id_value"
+ assert response.short_name == "short_name_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertFirewallPolicyRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetFirewallPolicyRequest):
transport_class = transports.FirewallPoliciesRestTransport
request_init = {}
+ request_init["firewall_policy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -3101,24 +3165,21 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "parent_id",
- "request_id",
- )
- )
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3127,7 +3188,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.FirewallPolicy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3138,44 +3199,35 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.FirewallPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
- assert set(unset_fields) == (
- set(
- (
- "parentId",
- "requestId",
- )
- )
- & set(("firewallPolicyResource",))
- )
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (set(()) & set(("firewallPolicy",)))
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3188,9 +3240,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "post_insert"
+ transports.FirewallPoliciesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "pre_insert"
+ transports.FirewallPoliciesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3205,17 +3257,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.FirewallPolicy.to_json(
+ compute.FirewallPolicy()
+ )
- request = compute.InsertFirewallPolicyRequest()
+ request = compute.GetFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.FirewallPolicy
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -3227,8 +3281,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertFirewallPolicyRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetFirewallPolicyRequest
):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3236,67 +3290,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {}
- request_init["firewall_policy_resource"] = {
- "associations": [
- {
- "attachment_target": "attachment_target_value",
- "display_name": "display_name_value",
- "firewall_policy_id": "firewall_policy_id_value",
- "name": "name_value",
- "short_name": "short_name_value",
- }
- ],
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "display_name": "display_name_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "parent": "parent_value",
- "region": "region_value",
- "rule_tuple_count": 1737,
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": [
- "dest_ip_ranges_value_1",
- "dest_ip_ranges_value_2",
- ],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": [
- "target_resources_value_1",
- "target_resources_value_2",
- ],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
- ],
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "short_name": "short_name_value",
- }
+ request_init = {"firewall_policy": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3308,10 +3302,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get(request)
-def test_insert_unary_rest_flattened():
+def test_get_rest_flattened():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3320,45 +3314,39 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.FirewallPolicy()
# get arguments that satisfy an http rule for this method
- sample_request = {}
+ sample_request = {"firewall_policy": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
- parent_id="parent_id_value",
- firewall_policy_resource=compute.FirewallPolicy(
- associations=[
- compute.FirewallPolicyAssociation(
- attachment_target="attachment_target_value"
- )
- ]
- ),
+ firewall_policy="firewall_policy_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.FirewallPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/locations/global/firewallPolicies" % client.transport._host,
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}"
+ % client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3367,20 +3355,13 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertFirewallPolicyRequest(),
- parent_id="parent_id_value",
- firewall_policy_resource=compute.FirewallPolicy(
- associations=[
- compute.FirewallPolicyAssociation(
- attachment_target="attachment_target_value"
- )
- ]
- ),
+ client.get(
+ compute.GetFirewallPolicyRequest(),
+ firewall_policy="firewall_policy_value",
)
-def test_insert_unary_rest_error():
+def test_get_rest_error():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3389,68 +3370,153 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListFirewallPoliciesRequest,
+ compute.GetAssociationFirewallPolicyRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_get_association_rest(request_type):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {}
+ request_init = {"firewall_policy": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyList(
- id="id_value",
- kind="kind_value",
- next_page_token="next_page_token_value",
+ return_value = compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value",
+ display_name="display_name_value",
+ firewall_policy_id="firewall_policy_id_value",
+ name="name_value",
+ short_name="short_name_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyList.to_json(return_value)
+ json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get_association(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert isinstance(response, compute.FirewallPolicyAssociation)
+ assert response.attachment_target == "attachment_target_value"
+ assert response.display_name == "display_name_value"
+ assert response.firewall_policy_id == "firewall_policy_id_value"
+ assert response.name == "name_value"
+ assert response.short_name == "short_name_value"
-@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
- transport = transports.FirewallPoliciesRestTransport(
- credentials=ga_credentials.AnonymousCredentials(),
- interceptor=None
- if null_interceptor
- else transports.FirewallPoliciesRestInterceptor(),
+def test_get_association_rest_required_fields(
+ request_type=compute.GetAssociationFirewallPolicyRequest,
+):
+ transport_class = transports.FirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
)
- client = FirewallPoliciesClient(transport=transport)
- with mock.patch.object(
- type(client.transport._session), "request"
- ) as req, mock.patch.object(
- path_template, "transcode"
- ) as transcode, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "post_list"
- ) as post, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "pre_list"
- ) as pre:
- pre.assert_not_called()
- post.assert_not_called()
- transcode.return_value = {
- "method": "post",
- "uri": "my_uri",
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_association._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_association._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("name",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyAssociation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_association(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_association_rest_unset_required_fields():
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_association._get_unset_required_fields({})
+ assert set(unset_fields) == (set(("name",)) & set(("firewallPolicy",)))
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_association_rest_interceptors(null_interceptor):
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.FirewallPoliciesRestInterceptor(),
+ )
+ client = FirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "post_get_association"
+ ) as post, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "pre_get_association"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
"body": None,
"query_params": {},
}
@@ -3458,19 +3524,19 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.FirewallPolicyList.to_json(
- compute.FirewallPolicyList()
+ req.return_value._content = compute.FirewallPolicyAssociation.to_json(
+ compute.FirewallPolicyAssociation()
)
- request = compute.ListFirewallPoliciesRequest()
+ request = compute.GetAssociationFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.FirewallPolicyList
+ post.return_value = compute.FirewallPolicyAssociation
- client.list(
+ client.get_association(
request,
metadata=[
("key", "val"),
@@ -3482,8 +3548,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListFirewallPoliciesRequest
+def test_get_association_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetAssociationFirewallPolicyRequest
):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3491,7 +3557,7 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {}
+ request_init = {"firewall_policy": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3503,111 +3569,3521 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.get_association(request)
-def test_list_rest_pager(transport: str = "rest"):
+def test_get_association_rest_flattened():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyAssociation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"firewall_policy": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ firewall_policy="firewall_policy_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_association(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/getAssociation"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_association_rest_flattened_error(transport: str = "rest"):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
)
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_association(
+ compute.GetAssociationFirewallPolicyRequest(),
+ firewall_policy="firewall_policy_value",
+ )
+
+
+def test_get_association_rest_error():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetIamPolicyFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_get_iam_policy_rest(request_type):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"resource": "sample1"}
+ request = request_type(request_init)
+
# Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.FirewallPolicyList(
- items=[
- compute.FirewallPolicy(),
- compute.FirewallPolicy(),
- compute.FirewallPolicy(),
- ],
- next_page_token="abc",
- ),
- compute.FirewallPolicyList(
- items=[],
- next_page_token="def",
- ),
- compute.FirewallPolicyList(
- items=[
- compute.FirewallPolicy(),
- ],
- next_page_token="ghi",
- ),
- compute.FirewallPolicyList(
- items=[
- compute.FirewallPolicy(),
- compute.FirewallPolicy(),
- ],
- ),
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
)
- # Two responses for two calls
- response = response + response
- # Wrap the values into proper Response objs
- response = tuple(compute.FirewallPolicyList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_iam_policy(request)
- sample_request = {}
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
- pager = client.list(request=sample_request)
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.FirewallPolicy) for i in results)
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicyFirewallPolicyRequest,
+):
+ transport_class = transports.FirewallPoliciesRestTransport
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
+ request_init = {}
+ request_init["resource"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["resource"] = "resource_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_iam_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_iam_policy_rest_unset_required_fields():
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("optionsRequestedPolicyVersion",)) & set(("resource",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_iam_policy_rest_interceptors(null_interceptor):
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.FirewallPoliciesRestInterceptor(),
+ )
+ client = FirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "post_get_iam_policy"
+ ) as post, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "pre_get_iam_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
+
+ request = compute.GetIamPolicyFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Policy
+
+ client.get_iam_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetIamPolicyFirewallPolicyRequest
+):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"resource": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_iam_policy(request)
+
+
+def test_get_iam_policy_rest_flattened():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"resource": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ resource="resource_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_iam_policy(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/locations/global/firewallPolicies/{resource}/getIamPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_iam_policy(
+ compute.GetIamPolicyFirewallPolicyRequest(),
+ resource="resource_value",
+ )
+
+
+def test_get_iam_policy_rest_error():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetRuleFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_get_rule_rest(request_type):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"firewall_policy": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyRule(
+ action="action_value",
+ description="description_value",
+ direction="direction_value",
+ disabled=True,
+ enable_logging=True,
+ kind="kind_value",
+ priority=898,
+ rule_name="rule_name_value",
+ rule_tuple_count=1737,
+ target_resources=["target_resources_value"],
+ target_service_accounts=["target_service_accounts_value"],
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_rule(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.FirewallPolicyRule)
+ assert response.action == "action_value"
+ assert response.description == "description_value"
+ assert response.direction == "direction_value"
+ assert response.disabled is True
+ assert response.enable_logging is True
+ assert response.kind == "kind_value"
+ assert response.priority == 898
+ assert response.rule_name == "rule_name_value"
+ assert response.rule_tuple_count == 1737
+ assert response.target_resources == ["target_resources_value"]
+ assert response.target_service_accounts == ["target_service_accounts_value"]
+
+
+def test_get_rule_rest_required_fields(
+ request_type=compute.GetRuleFirewallPolicyRequest,
+):
+ transport_class = transports.FirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_rule._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_rule._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("priority",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyRule()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_rule(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rule_rest_unset_required_fields():
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_rule._get_unset_required_fields({})
+ assert set(unset_fields) == (set(("priority",)) & set(("firewallPolicy",)))
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rule_rest_interceptors(null_interceptor):
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.FirewallPoliciesRestInterceptor(),
+ )
+ client = FirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "post_get_rule"
+ ) as post, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "pre_get_rule"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.FirewallPolicyRule.to_json(
+ compute.FirewallPolicyRule()
+ )
+
+ request = compute.GetRuleFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.FirewallPolicyRule
+
+ client.get_rule(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rule_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRuleFirewallPolicyRequest
+):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"firewall_policy": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_rule(request)
+
+
+def test_get_rule_rest_flattened():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyRule()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"firewall_policy": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ firewall_policy="firewall_policy_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_rule(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/getRule"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rule_rest_flattened_error(transport: str = "rest"):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_rule(
+ compute.GetRuleFirewallPolicyRequest(),
+ firewall_policy="firewall_policy_value",
+ )
+
+
+def test_get_rule_rest_error():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertFirewallPolicyRequest):
+ transport_class = transports.FirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["parent_id"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+ assert "parentId" not in jsonified_request
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+ assert "parentId" in jsonified_request
+ assert jsonified_request["parentId"] == request_init["parent_id"]
+
+ jsonified_request["parentId"] = "parent_id_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "parent_id",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "parentId" in jsonified_request
+ assert jsonified_request["parentId"] == "parent_id_value"
+
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = [
+ (
+ "parentId",
+ "",
+ ),
+ ]
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "parentId",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "firewallPolicyResource",
+ "parentId",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.FirewallPoliciesRestInterceptor(),
+ )
+ client = FirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertFirewallPolicyRequest
+):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ parent_id="parent_id_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/locations/global/firewallPolicies" % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertFirewallPolicyRequest(),
+ parent_id="parent_id_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertFirewallPolicyRequest,
+):
+ transport_class = transports.FirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["parent_id"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+ assert "parentId" not in jsonified_request
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+ assert "parentId" in jsonified_request
+ assert jsonified_request["parentId"] == request_init["parent_id"]
+
+ jsonified_request["parentId"] = "parent_id_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "parent_id",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "parentId" in jsonified_request
+ assert jsonified_request["parentId"] == "parent_id_value"
+
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = [
+ (
+ "parentId",
+ "",
+ ),
+ ]
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "parentId",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "firewallPolicyResource",
+ "parentId",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.FirewallPoliciesRestInterceptor(),
+ )
+ client = FirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertFirewallPolicyRequest
+):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ parent_id="parent_id_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/locations/global/firewallPolicies" % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertFirewallPolicyRequest(),
+ parent_id="parent_id_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListFirewallPoliciesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.FirewallPoliciesRestInterceptor(),
+ )
+ client = FirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.FirewallPolicyList.to_json(
+ compute.FirewallPolicyList()
+ )
+
+ request = compute.ListFirewallPoliciesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.FirewallPolicyList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListFirewallPoliciesRequest
+):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.FirewallPolicyList(
+ items=[
+ compute.FirewallPolicy(),
+ compute.FirewallPolicy(),
+ compute.FirewallPolicy(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.FirewallPolicyList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.FirewallPolicyList(
+ items=[
+ compute.FirewallPolicy(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.FirewallPolicyList(
+ items=[
+ compute.FirewallPolicy(),
+ compute.FirewallPolicy(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.FirewallPolicyList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.FirewallPolicy) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListAssociationsFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_list_associations_rest(request_type):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPoliciesListAssociationsResponse(
+ kind="kind_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPoliciesListAssociationsResponse.to_json(
+ return_value
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list_associations(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.FirewallPoliciesListAssociationsResponse)
+ assert response.kind == "kind_value"
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_associations_rest_interceptors(null_interceptor):
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.FirewallPoliciesRestInterceptor(),
+ )
+ client = FirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "post_list_associations"
+ ) as post, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "pre_list_associations"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = (
+ compute.FirewallPoliciesListAssociationsResponse.to_json(
+ compute.FirewallPoliciesListAssociationsResponse()
+ )
+ )
+
+ request = compute.ListAssociationsFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.FirewallPoliciesListAssociationsResponse
+
+ client.list_associations(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_associations_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListAssociationsFirewallPolicyRequest
+):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list_associations(request)
+
+
+def test_list_associations_rest_error():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.MoveFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_move_rest(request_type):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"firewall_policy": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.move(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_move_rest_required_fields(request_type=compute.MoveFirewallPolicyRequest):
+ transport_class = transports.FirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request_init["parent_id"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+ assert "parentId" not in jsonified_request
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).move._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+ assert "parentId" in jsonified_request
+ assert jsonified_request["parentId"] == request_init["parent_id"]
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+ jsonified_request["parentId"] = "parent_id_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).move._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "parent_id",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+ assert "parentId" in jsonified_request
+ assert jsonified_request["parentId"] == "parent_id_value"
+
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.move(request)
+
+ expected_params = [
+ (
+ "parentId",
+ "",
+ ),
+ ]
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_move_rest_unset_required_fields():
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.move._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "parentId",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "firewallPolicy",
+ "parentId",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_move_rest_interceptors(null_interceptor):
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.FirewallPoliciesRestInterceptor(),
+ )
+ client = FirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "post_move"
+ ) as post, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "pre_move"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.MoveFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.move(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_move_rest_bad_request(
+ transport: str = "rest", request_type=compute.MoveFirewallPolicyRequest
+):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"firewall_policy": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.move(request)
+
+
+def test_move_rest_flattened():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"firewall_policy": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ firewall_policy="firewall_policy_value",
+ parent_id="parent_id_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.move(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/move"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_move_rest_flattened_error(transport: str = "rest"):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.move(
+ compute.MoveFirewallPolicyRequest(),
+ firewall_policy="firewall_policy_value",
+ parent_id="parent_id_value",
+ )
+
+
+def test_move_rest_error():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.MoveFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_move_unary_rest(request_type):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"firewall_policy": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.move_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_move_unary_rest_required_fields(
+ request_type=compute.MoveFirewallPolicyRequest,
+):
+ transport_class = transports.FirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request_init["parent_id"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+ assert "parentId" not in jsonified_request
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).move._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+ assert "parentId" in jsonified_request
+ assert jsonified_request["parentId"] == request_init["parent_id"]
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+ jsonified_request["parentId"] = "parent_id_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).move._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "parent_id",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+ assert "parentId" in jsonified_request
+ assert jsonified_request["parentId"] == "parent_id_value"
+
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.move_unary(request)
+
+ expected_params = [
+ (
+ "parentId",
+ "",
+ ),
+ ]
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_move_unary_rest_unset_required_fields():
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.move._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "parentId",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "firewallPolicy",
+ "parentId",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_move_unary_rest_interceptors(null_interceptor):
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.FirewallPoliciesRestInterceptor(),
+ )
+ client = FirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "post_move"
+ ) as post, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "pre_move"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.MoveFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.move_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_move_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.MoveFirewallPolicyRequest
+):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"firewall_policy": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.move_unary(request)
+
+
+def test_move_unary_rest_flattened():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"firewall_policy": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ firewall_policy="firewall_policy_value",
+ parent_id="parent_id_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.move_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/move"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_move_unary_rest_flattened_error(transport: str = "rest"):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.move_unary(
+ compute.MoveFirewallPolicyRequest(),
+ firewall_policy="firewall_policy_value",
+ parent_id="parent_id_value",
+ )
+
+
+def test_move_unary_rest_error():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"firewall_policy": "sample1"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchFirewallPolicyRequest):
+ transport_class = transports.FirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "firewallPolicy",
+ "firewallPolicyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.FirewallPoliciesRestInterceptor(),
+ )
+ client = FirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchFirewallPolicyRequest
+):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"firewall_policy": "sample1"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"firewall_policy": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ firewall_policy="firewall_policy_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchFirewallPolicyRequest(),
+ firewall_policy="firewall_policy_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_patch_rest_error():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"firewall_policy": "sample1"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchFirewallPolicyRequest,
+):
+ transport_class = transports.FirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_unary_rest_unset_required_fields():
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "firewallPolicy",
+ "firewallPolicyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_unary_rest_interceptors(null_interceptor):
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.FirewallPoliciesRestInterceptor(),
+ )
+ client = FirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.FirewallPoliciesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchFirewallPolicyRequest
+):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"firewall_policy": "sample1"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_unary(request)
+
+
+def test_patch_unary_rest_flattened():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"firewall_policy": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ firewall_policy="firewall_policy_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_unary(
+ compute.PatchFirewallPolicyRequest(),
+ firewall_policy="firewall_policy_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_patch_unary_rest_error():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRuleFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_patch_rule_rest(request_type):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"firewall_policy": "sample1"}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_rule(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rule_rest_required_fields(
+ request_type=compute.PatchRuleFirewallPolicyRequest,
+):
+ transport_class = transports.FirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_rule._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_rule._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "priority",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
-@pytest.mark.parametrize(
- "request_type",
- [
- compute.ListAssociationsFirewallPolicyRequest,
- dict,
- ],
-)
-def test_list_associations_rest(request_type):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
-
- # send a request that will satisfy transcoding
- request_init = {}
request = request_type(request_init)
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.FirewallPoliciesListAssociationsResponse(
- kind="kind_value",
- )
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 200
- json_return_value = compute.FirewallPoliciesListAssociationsResponse.to_json(
- return_value
- )
- response_value._content = json_return_value.encode("UTF-8")
- req.return_value = response_value
- response = client.list_associations(request)
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
- # Establish that the response is the type that we expect.
- assert isinstance(response, compute.FirewallPoliciesListAssociationsResponse)
- assert response.kind == "kind_value"
+ response = client.patch_rule(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rule_rest_unset_required_fields():
+ transport = transports.FirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch_rule._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "priority",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "firewallPolicy",
+ "firewallPolicyRuleResource",
+ )
+ )
+ )
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_associations_rest_interceptors(null_interceptor):
+def test_patch_rule_rest_interceptors(null_interceptor):
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3620,9 +7096,9 @@ def test_list_associations_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "post_list_associations"
+ transports.FirewallPoliciesRestInterceptor, "post_patch_rule"
) as post, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "pre_list_associations"
+ transports.FirewallPoliciesRestInterceptor, "pre_patch_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3637,21 +7113,17 @@ def test_list_associations_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = (
- compute.FirewallPoliciesListAssociationsResponse.to_json(
- compute.FirewallPoliciesListAssociationsResponse()
- )
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListAssociationsFirewallPolicyRequest()
+ request = compute.PatchRuleFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.FirewallPoliciesListAssociationsResponse
+ post.return_value = compute.Operation
- client.list_associations(
+ client.patch_rule(
request,
metadata=[
("key", "val"),
@@ -3663,8 +7135,8 @@ def test_list_associations_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_associations_rest_bad_request(
- transport: str = "rest", request_type=compute.ListAssociationsFirewallPolicyRequest
+def test_patch_rule_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRuleFirewallPolicyRequest
):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3672,7 +7144,35 @@ def test_list_associations_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {}
+ request_init = {"firewall_policy": "sample1"}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3684,10 +7184,72 @@ def test_list_associations_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list_associations(request)
+ client.patch_rule(request)
-def test_list_associations_rest_error():
+def test_patch_rule_rest_flattened():
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"firewall_policy": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_rule(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/patchRule"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rule_rest_flattened_error(transport: str = "rest"):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_rule(
+ compute.PatchRuleFirewallPolicyRequest(),
+ firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
+ )
+
+
+def test_patch_rule_rest_error():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3696,11 +7258,11 @@ def test_list_associations_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.MoveFirewallPolicyRequest,
+ compute.PatchRuleFirewallPolicyRequest,
dict,
],
)
-def test_move_unary_rest(request_type):
+def test_patch_rule_unary_rest(request_type):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3708,6 +7270,34 @@ def test_move_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"firewall_policy": "sample1"}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -3744,36 +7334,14 @@ def test_move_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.move_unary(request)
+ response = client.patch_rule_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_move_unary_rest_required_fields(
- request_type=compute.MoveFirewallPolicyRequest,
+def test_patch_rule_unary_rest_required_fields(
+ request_type=compute.PatchRuleFirewallPolicyRequest,
):
transport_class = transports.FirewallPoliciesRestTransport
@@ -3790,7 +7358,7 @@ def test_move_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).move._get_unset_required_fields(jsonified_request)
+ ).patch_rule._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3799,11 +7367,11 @@ def test_move_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).move._get_unset_required_fields(jsonified_request)
+ ).patch_rule._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "parent_id",
+ "priority",
"request_id",
)
)
@@ -3834,6 +7402,7 @@ def test_move_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -3842,32 +7411,37 @@ def test_move_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.move_unary(request)
+ response = client.patch_rule_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_move_unary_rest_unset_required_fields():
+def test_patch_rule_unary_rest_unset_required_fields():
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.move._get_unset_required_fields({})
+ unset_fields = transport.patch_rule._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
- "parentId",
+ "priority",
"requestId",
)
)
- & set(("firewallPolicy",))
+ & set(
+ (
+ "firewallPolicy",
+ "firewallPolicyRuleResource",
+ )
+ )
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_move_unary_rest_interceptors(null_interceptor):
+def test_patch_rule_unary_rest_interceptors(null_interceptor):
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3880,9 +7454,9 @@ def test_move_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "post_move"
+ transports.FirewallPoliciesRestInterceptor, "post_patch_rule"
) as post, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "pre_move"
+ transports.FirewallPoliciesRestInterceptor, "pre_patch_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3899,7 +7473,7 @@ def test_move_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.MoveFirewallPolicyRequest()
+ request = compute.PatchRuleFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3907,7 +7481,7 @@ def test_move_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.move_unary(
+ client.patch_rule_unary(
request,
metadata=[
("key", "val"),
@@ -3919,8 +7493,8 @@ def test_move_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_move_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.MoveFirewallPolicyRequest
+def test_patch_rule_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRuleFirewallPolicyRequest
):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3929,6 +7503,34 @@ def test_move_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"firewall_policy": "sample1"}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3940,10 +7542,10 @@ def test_move_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.move_unary(request)
+ client.patch_rule_unary(request)
-def test_move_unary_rest_flattened():
+def test_patch_rule_unary_rest_flattened():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3960,7 +7562,9 @@ def test_move_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
firewall_policy="firewall_policy_value",
- parent_id="parent_id_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
mock_args.update(sample_request)
@@ -3972,20 +7576,20 @@ def test_move_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.move_unary(**mock_args)
+ client.patch_rule_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/move"
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/patchRule"
% client.transport._host,
args[1],
)
-def test_move_unary_rest_flattened_error(transport: str = "rest"):
+def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3994,14 +7598,16 @@ def test_move_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.move_unary(
- compute.MoveFirewallPolicyRequest(),
+ client.patch_rule_unary(
+ compute.PatchRuleFirewallPolicyRequest(),
firewall_policy="firewall_policy_value",
- parent_id="parent_id_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
-def test_move_unary_rest_error():
+def test_patch_rule_unary_rest_error():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4010,11 +7616,11 @@ def test_move_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchFirewallPolicyRequest,
+ compute.RemoveAssociationFirewallPolicyRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_remove_association_rest(request_type):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4022,66 +7628,6 @@ def test_patch_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"firewall_policy": "sample1"}
- request_init["firewall_policy_resource"] = {
- "associations": [
- {
- "attachment_target": "attachment_target_value",
- "display_name": "display_name_value",
- "firewall_policy_id": "firewall_policy_id_value",
- "name": "name_value",
- "short_name": "short_name_value",
- }
- ],
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "display_name": "display_name_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "parent": "parent_value",
- "region": "region_value",
- "rule_tuple_count": 1737,
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": [
- "dest_ip_ranges_value_1",
- "dest_ip_ranges_value_2",
- ],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": [
- "target_resources_value_1",
- "target_resources_value_2",
- ],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
- ],
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "short_name": "short_name_value",
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -4118,10 +7664,10 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.remove_association(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -4146,8 +7692,8 @@ def test_patch_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchFirewallPolicyRequest,
+def test_remove_association_rest_required_fields(
+ request_type=compute.RemoveAssociationFirewallPolicyRequest,
):
transport_class = transports.FirewallPoliciesRestTransport
@@ -4164,7 +7710,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).remove_association._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4173,9 +7719,14 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).remove_association._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "name",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -4200,10 +7751,9 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -4212,32 +7762,32 @@ def test_patch_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.remove_association(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_remove_association_rest_unset_required_fields():
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.remove_association._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
- & set(
+ set(
(
- "firewallPolicy",
- "firewallPolicyResource",
+ "name",
+ "requestId",
)
)
+ & set(("firewallPolicy",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_remove_association_rest_interceptors(null_interceptor):
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -4250,9 +7800,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "post_patch"
+ transports.FirewallPoliciesRestInterceptor, "post_remove_association"
) as post, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "pre_patch"
+ transports.FirewallPoliciesRestInterceptor, "pre_remove_association"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4269,7 +7819,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchFirewallPolicyRequest()
+ request = compute.RemoveAssociationFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -4277,7 +7827,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.remove_association(
request,
metadata=[
("key", "val"),
@@ -4288,77 +7838,17 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.assert_called_once()
post.assert_called_once()
-
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchFirewallPolicyRequest
-):
- client = FirewallPoliciesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
- )
-
- # send a request that will satisfy transcoding
- request_init = {"firewall_policy": "sample1"}
- request_init["firewall_policy_resource"] = {
- "associations": [
- {
- "attachment_target": "attachment_target_value",
- "display_name": "display_name_value",
- "firewall_policy_id": "firewall_policy_id_value",
- "name": "name_value",
- "short_name": "short_name_value",
- }
- ],
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "display_name": "display_name_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "parent": "parent_value",
- "region": "region_value",
- "rule_tuple_count": 1737,
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": [
- "dest_ip_ranges_value_1",
- "dest_ip_ranges_value_2",
- ],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": [
- "target_resources_value_1",
- "target_resources_value_2",
- ],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
- ],
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "short_name": "short_name_value",
- }
+
+def test_remove_association_rest_bad_request(
+ transport: str = "rest", request_type=compute.RemoveAssociationFirewallPolicyRequest
+):
+ client = FirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"firewall_policy": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -4370,10 +7860,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.remove_association(request)
-def test_patch_unary_rest_flattened():
+def test_remove_association_rest_flattened():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4390,13 +7880,6 @@ def test_patch_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
firewall_policy="firewall_policy_value",
- firewall_policy_resource=compute.FirewallPolicy(
- associations=[
- compute.FirewallPolicyAssociation(
- attachment_target="attachment_target_value"
- )
- ]
- ),
)
mock_args.update(sample_request)
@@ -4408,20 +7891,20 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.remove_association(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}"
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/removeAssociation"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_remove_association_rest_flattened_error(transport: str = "rest"):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4430,20 +7913,13 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchFirewallPolicyRequest(),
+ client.remove_association(
+ compute.RemoveAssociationFirewallPolicyRequest(),
firewall_policy="firewall_policy_value",
- firewall_policy_resource=compute.FirewallPolicy(
- associations=[
- compute.FirewallPolicyAssociation(
- attachment_target="attachment_target_value"
- )
- ]
- ),
)
-def test_patch_unary_rest_error():
+def test_remove_association_rest_error():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4452,11 +7928,11 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchRuleFirewallPolicyRequest,
+ compute.RemoveAssociationFirewallPolicyRequest,
dict,
],
)
-def test_patch_rule_unary_rest(request_type):
+def test_remove_association_unary_rest(request_type):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4464,34 +7940,6 @@ def test_patch_rule_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"firewall_policy": "sample1"}
- request_init["firewall_policy_rule_resource"] = {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": ["target_resources_value_1", "target_resources_value_2"],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -4528,36 +7976,14 @@ def test_patch_rule_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_rule_unary(request)
+ response = client.remove_association_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_patch_rule_unary_rest_required_fields(
- request_type=compute.PatchRuleFirewallPolicyRequest,
+def test_remove_association_unary_rest_required_fields(
+ request_type=compute.RemoveAssociationFirewallPolicyRequest,
):
transport_class = transports.FirewallPoliciesRestTransport
@@ -4574,7 +8000,7 @@ def test_patch_rule_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch_rule._get_unset_required_fields(jsonified_request)
+ ).remove_association._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4583,11 +8009,11 @@ def test_patch_rule_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch_rule._get_unset_required_fields(jsonified_request)
+ ).remove_association._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "priority",
+ "name",
"request_id",
)
)
@@ -4618,7 +8044,6 @@ def test_patch_rule_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -4627,37 +8052,32 @@ def test_patch_rule_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_rule_unary(request)
+ response = client.remove_association_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_rule_unary_rest_unset_required_fields():
+def test_remove_association_unary_rest_unset_required_fields():
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch_rule._get_unset_required_fields({})
+ unset_fields = transport.remove_association._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
- "priority",
+ "name",
"requestId",
)
)
- & set(
- (
- "firewallPolicy",
- "firewallPolicyRuleResource",
- )
- )
+ & set(("firewallPolicy",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_rule_unary_rest_interceptors(null_interceptor):
+def test_remove_association_unary_rest_interceptors(null_interceptor):
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -4670,9 +8090,9 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "post_patch_rule"
+ transports.FirewallPoliciesRestInterceptor, "post_remove_association"
) as post, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "pre_patch_rule"
+ transports.FirewallPoliciesRestInterceptor, "pre_remove_association"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4689,7 +8109,7 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchRuleFirewallPolicyRequest()
+ request = compute.RemoveAssociationFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -4697,7 +8117,7 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_rule_unary(
+ client.remove_association_unary(
request,
metadata=[
("key", "val"),
@@ -4709,8 +8129,8 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_rule_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchRuleFirewallPolicyRequest
+def test_remove_association_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.RemoveAssociationFirewallPolicyRequest
):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4719,34 +8139,6 @@ def test_patch_rule_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"firewall_policy": "sample1"}
- request_init["firewall_policy_rule_resource"] = {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": ["target_resources_value_1", "target_resources_value_2"],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -4758,10 +8150,10 @@ def test_patch_rule_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_rule_unary(request)
+ client.remove_association_unary(request)
-def test_patch_rule_unary_rest_flattened():
+def test_remove_association_unary_rest_flattened():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4778,9 +8170,6 @@ def test_patch_rule_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
firewall_policy="firewall_policy_value",
- firewall_policy_rule_resource=compute.FirewallPolicyRule(
- action="action_value"
- ),
)
mock_args.update(sample_request)
@@ -4792,20 +8181,20 @@ def test_patch_rule_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_rule_unary(**mock_args)
+ client.remove_association_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/patchRule"
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/removeAssociation"
% client.transport._host,
args[1],
)
-def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"):
+def test_remove_association_unary_rest_flattened_error(transport: str = "rest"):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4814,16 +8203,13 @@ def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_rule_unary(
- compute.PatchRuleFirewallPolicyRequest(),
+ client.remove_association_unary(
+ compute.RemoveAssociationFirewallPolicyRequest(),
firewall_policy="firewall_policy_value",
- firewall_policy_rule_resource=compute.FirewallPolicyRule(
- action="action_value"
- ),
)
-def test_patch_rule_unary_rest_error():
+def test_remove_association_unary_rest_error():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4832,11 +8218,11 @@ def test_patch_rule_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.RemoveAssociationFirewallPolicyRequest,
+ compute.RemoveRuleFirewallPolicyRequest,
dict,
],
)
-def test_remove_association_unary_rest(request_type):
+def test_remove_rule_rest(request_type):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4880,10 +8266,10 @@ def test_remove_association_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_association_unary(request)
+ response = client.remove_rule(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -4908,8 +8294,8 @@ def test_remove_association_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_remove_association_unary_rest_required_fields(
- request_type=compute.RemoveAssociationFirewallPolicyRequest,
+def test_remove_rule_rest_required_fields(
+ request_type=compute.RemoveRuleFirewallPolicyRequest,
):
transport_class = transports.FirewallPoliciesRestTransport
@@ -4926,7 +8312,7 @@ def test_remove_association_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_association._get_unset_required_fields(jsonified_request)
+ ).remove_rule._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4935,11 +8321,11 @@ def test_remove_association_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_association._get_unset_required_fields(jsonified_request)
+ ).remove_rule._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "name",
+ "priority",
"request_id",
)
)
@@ -4978,23 +8364,23 @@ def test_remove_association_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_association_unary(request)
+ response = client.remove_rule(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_remove_association_unary_rest_unset_required_fields():
+def test_remove_rule_rest_unset_required_fields():
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.remove_association._get_unset_required_fields({})
+ unset_fields = transport.remove_rule._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
- "name",
+ "priority",
"requestId",
)
)
@@ -5003,7 +8389,7 @@ def test_remove_association_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_remove_association_unary_rest_interceptors(null_interceptor):
+def test_remove_rule_rest_interceptors(null_interceptor):
transport = transports.FirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -5016,9 +8402,9 @@ def test_remove_association_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "post_remove_association"
+ transports.FirewallPoliciesRestInterceptor, "post_remove_rule"
) as post, mock.patch.object(
- transports.FirewallPoliciesRestInterceptor, "pre_remove_association"
+ transports.FirewallPoliciesRestInterceptor, "pre_remove_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -5035,7 +8421,7 @@ def test_remove_association_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.RemoveAssociationFirewallPolicyRequest()
+ request = compute.RemoveRuleFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -5043,7 +8429,7 @@ def test_remove_association_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.remove_association_unary(
+ client.remove_rule(
request,
metadata=[
("key", "val"),
@@ -5055,8 +8441,8 @@ def test_remove_association_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_remove_association_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.RemoveAssociationFirewallPolicyRequest
+def test_remove_rule_rest_bad_request(
+ transport: str = "rest", request_type=compute.RemoveRuleFirewallPolicyRequest
):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -5076,10 +8462,10 @@ def test_remove_association_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.remove_association_unary(request)
+ client.remove_rule(request)
-def test_remove_association_unary_rest_flattened():
+def test_remove_rule_rest_flattened():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5107,20 +8493,20 @@ def test_remove_association_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.remove_association_unary(**mock_args)
+ client.remove_rule(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/removeAssociation"
+ "%s/compute/v1/locations/global/firewallPolicies/{firewall_policy}/removeRule"
% client.transport._host,
args[1],
)
-def test_remove_association_unary_rest_flattened_error(transport: str = "rest"):
+def test_remove_rule_rest_flattened_error(transport: str = "rest"):
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -5129,13 +8515,13 @@ def test_remove_association_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.remove_association_unary(
- compute.RemoveAssociationFirewallPolicyRequest(),
+ client.remove_rule(
+ compute.RemoveRuleFirewallPolicyRequest(),
firewall_policy="firewall_policy_value",
)
-def test_remove_association_unary_rest_error():
+def test_remove_rule_rest_error():
client = FirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -5196,28 +8582,6 @@ def test_remove_rule_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_remove_rule_unary_rest_required_fields(
@@ -6235,6 +9599,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = FirewallPoliciesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_firewall_policies_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -6283,6 +9660,14 @@ def test_firewall_policies_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_firewall_policies_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_firewalls.py b/tests/unit/gapic/compute_v1/test_firewalls.py
index 702139fe7..1aa29b44a 100644
--- a/tests/unit/gapic/compute_v1/test_firewalls.py
+++ b/tests/unit/gapic/compute_v1/test_firewalls.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -512,7 +514,7 @@ def test_firewalls_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -556,10 +558,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -584,7 +586,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(request_type=compute.DeleteFirewallRequest):
+def test_delete_rest_required_fields(request_type=compute.DeleteFirewallRequest):
transport_class = transports.FirewallsRestTransport
request_init = {}
@@ -651,14 +653,14 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteFirewallRe
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.FirewallsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -676,7 +678,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.FirewallsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.FirewallsRestInterceptor(),
@@ -714,7 +716,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -726,7 +728,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteFirewallRequest
):
client = FirewallsClient(
@@ -747,10 +749,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -779,7 +781,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -792,7 +794,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -801,14 +803,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteFirewallRequest(),
project="project_value",
firewall="firewall_value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -817,11 +819,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetFirewallRequest,
+ compute.DeleteFirewallRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -834,54 +836,44 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Firewall(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- destination_ranges=["destination_ranges_value"],
- direction="direction_value",
- disabled=True,
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- network="network_value",
- priority=898,
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- source_ranges=["source_ranges_value"],
- source_service_accounts=["source_service_accounts_value"],
- source_tags=["source_tags_value"],
- target_service_accounts=["target_service_accounts_value"],
- target_tags=["target_tags_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Firewall.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Firewall)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.destination_ranges == ["destination_ranges_value"]
- assert response.direction == "direction_value"
- assert response.disabled is True
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.network == "network_value"
- assert response.priority == 898
- assert response.self_link == "self_link_value"
- assert response.source_ranges == ["source_ranges_value"]
- assert response.source_service_accounts == ["source_service_accounts_value"]
- assert response.source_tags == ["source_tags_value"]
- assert response.target_service_accounts == ["target_service_accounts_value"]
- assert response.target_tags == ["target_tags_value"]
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetFirewallRequest):
+def test_delete_unary_rest_required_fields(request_type=compute.DeleteFirewallRequest):
transport_class = transports.FirewallsRestTransport
request_init = {}
@@ -898,7 +890,7 @@ def test_get_rest_required_fields(request_type=compute.GetFirewallRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -908,7 +900,9 @@ def test_get_rest_required_fields(request_type=compute.GetFirewallRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -924,7 +918,7 @@ def test_get_rest_required_fields(request_type=compute.GetFirewallRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Firewall()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -935,32 +929,32 @@ def test_get_rest_required_fields(request_type=compute.GetFirewallRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Firewall.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.FirewallsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"firewall",
@@ -971,7 +965,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.FirewallsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.FirewallsRestInterceptor(),
@@ -982,9 +976,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallsRestInterceptor, "post_get"
+ transports.FirewallsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.FirewallsRestInterceptor, "pre_get"
+ transports.FirewallsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -999,17 +993,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Firewall.to_json(compute.Firewall())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetFirewallRequest()
+ request = compute.DeleteFirewallRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Firewall
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1021,8 +1015,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetFirewallRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteFirewallRequest
):
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1042,10 +1036,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1054,7 +1048,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Firewall()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "firewall": "sample2"}
@@ -1069,12 +1063,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Firewall.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1087,7 +1081,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1096,14 +1090,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetFirewallRequest(),
+ client.delete_unary(
+ compute.DeleteFirewallRequest(),
project="project_value",
firewall="firewall_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1112,126 +1106,75 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertFirewallRequest,
+ compute.GetFirewallRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["firewall_resource"] = {
- "allowed": [
- {
- "I_p_protocol": "I_p_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "creation_timestamp": "creation_timestamp_value",
- "denied": [
- {
- "I_p_protocol": "I_p_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "description": "description_value",
- "destination_ranges": [
- "destination_ranges_value_1",
- "destination_ranges_value_2",
- ],
- "direction": "direction_value",
- "disabled": True,
- "id": 205,
- "kind": "kind_value",
- "log_config": {"enable": True, "metadata": "metadata_value"},
- "name": "name_value",
- "network": "network_value",
- "priority": 898,
- "self_link": "self_link_value",
- "source_ranges": ["source_ranges_value_1", "source_ranges_value_2"],
- "source_service_accounts": [
- "source_service_accounts_value_1",
- "source_service_accounts_value_2",
- ],
- "source_tags": ["source_tags_value_1", "source_tags_value_2"],
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- "target_tags": ["target_tags_value_1", "target_tags_value_2"],
- }
+ request_init = {"project": "sample1", "firewall": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.Firewall(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ destination_ranges=["destination_ranges_value"],
+ direction="direction_value",
+ disabled=True,
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
+ network="network_value",
+ priority=898,
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ source_ranges=["source_ranges_value"],
+ source_service_accounts=["source_service_accounts_value"],
+ source_tags=["source_tags_value"],
+ target_service_accounts=["target_service_accounts_value"],
+ target_tags=["target_tags_value"],
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Firewall.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.Firewall)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.destination_ranges == ["destination_ranges_value"]
+ assert response.direction == "direction_value"
+ assert response.disabled is True
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
+ assert response.network == "network_value"
+ assert response.priority == 898
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.source_ranges == ["source_ranges_value"]
+ assert response.source_service_accounts == ["source_service_accounts_value"]
+ assert response.source_tags == ["source_tags_value"]
+ assert response.target_service_accounts == ["target_service_accounts_value"]
+ assert response.target_tags == ["target_tags_value"]
-def test_insert_unary_rest_required_fields(request_type=compute.InsertFirewallRequest):
+def test_get_rest_required_fields(request_type=compute.GetFirewallRequest):
transport_class = transports.FirewallsRestTransport
request_init = {}
+ request_init["firewall"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1244,21 +1187,22 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertFirewallRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["firewall"] = "firewall_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "firewall" in jsonified_request
+ assert jsonified_request["firewall"] == "firewall_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -1269,7 +1213,7 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertFirewallRe
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Firewall()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1280,26 +1224,739 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertFirewallRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Firewall.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
+ transport = transports.FirewallsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "firewall",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.FirewallsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.FirewallsRestInterceptor(),
+ )
+ client = FirewallsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.FirewallsRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.FirewallsRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Firewall.to_json(compute.Firewall())
+
+ request = compute.GetFirewallRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Firewall
+
+ client.get(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetFirewallRequest
+):
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "firewall": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Firewall()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "firewall": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ firewall="firewall_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Firewall.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/firewalls/{firewall}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetFirewallRequest(),
+ project="project_value",
+ firewall="firewall_value",
+ )
+
+
+def test_get_rest_error():
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertFirewallRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["firewall_resource"] = {
+ "allowed": [
+ {
+ "I_p_protocol": "I_p_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "denied": [
+ {
+ "I_p_protocol": "I_p_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "destination_ranges": [
+ "destination_ranges_value_1",
+ "destination_ranges_value_2",
+ ],
+ "direction": "direction_value",
+ "disabled": True,
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True, "metadata": "metadata_value"},
+ "name": "name_value",
+ "network": "network_value",
+ "priority": 898,
+ "self_link": "self_link_value",
+ "source_ranges": ["source_ranges_value_1", "source_ranges_value_2"],
+ "source_service_accounts": [
+ "source_service_accounts_value_1",
+ "source_service_accounts_value_2",
+ ],
+ "source_tags": ["source_tags_value_1", "source_tags_value_2"],
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ "target_tags": ["target_tags_value_1", "target_tags_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertFirewallRequest):
+ transport_class = transports.FirewallsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.FirewallsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "firewallResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.FirewallsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.FirewallsRestInterceptor(),
+ )
+ client = FirewallsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.FirewallsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.FirewallsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertFirewallRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertFirewallRequest
+):
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["firewall_resource"] = {
+ "allowed": [
+ {
+ "I_p_protocol": "I_p_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "denied": [
+ {
+ "I_p_protocol": "I_p_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "destination_ranges": [
+ "destination_ranges_value_1",
+ "destination_ranges_value_2",
+ ],
+ "direction": "direction_value",
+ "disabled": True,
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True, "metadata": "metadata_value"},
+ "name": "name_value",
+ "network": "network_value",
+ "priority": 898,
+ "self_link": "self_link_value",
+ "source_ranges": ["source_ranges_value_1", "source_ranges_value_2"],
+ "source_service_accounts": [
+ "source_service_accounts_value_1",
+ "source_service_accounts_value_2",
+ ],
+ "source_tags": ["source_tags_value_1", "source_tags_value_2"],
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ "target_tags": ["target_tags_value_1", "target_tags_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ firewall_resource=compute.Firewall(
+ allowed=[compute.Allowed(I_p_protocol="I_p_protocol_value")]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/firewalls"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertFirewallRequest(),
+ project="project_value",
+ firewall_resource=compute.Firewall(
+ allowed=[compute.Allowed(I_p_protocol="I_p_protocol_value")]
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertFirewallRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["firewall_resource"] = {
+ "allowed": [
+ {
+ "I_p_protocol": "I_p_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "denied": [
+ {
+ "I_p_protocol": "I_p_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "destination_ranges": [
+ "destination_ranges_value_1",
+ "destination_ranges_value_2",
+ ],
+ "direction": "direction_value",
+ "disabled": True,
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True, "metadata": "metadata_value"},
+ "name": "name_value",
+ "network": "network_value",
+ "priority": 898,
+ "self_link": "self_link_value",
+ "source_ranges": ["source_ranges_value_1", "source_ranges_value_2"],
+ "source_service_accounts": [
+ "source_service_accounts_value_1",
+ "source_service_accounts_value_2",
+ ],
+ "source_tags": ["source_tags_value_1", "source_tags_value_2"],
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ "target_tags": ["target_tags_value_1", "target_tags_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(request_type=compute.InsertFirewallRequest):
+ transport_class = transports.FirewallsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
transport = transports.FirewallsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1317,7 +1974,735 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.FirewallsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.FirewallsRestInterceptor(),
+ )
+ client = FirewallsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.FirewallsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.FirewallsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertFirewallRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertFirewallRequest
+):
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["firewall_resource"] = {
+ "allowed": [
+ {
+ "I_p_protocol": "I_p_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "denied": [
+ {
+ "I_p_protocol": "I_p_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "destination_ranges": [
+ "destination_ranges_value_1",
+ "destination_ranges_value_2",
+ ],
+ "direction": "direction_value",
+ "disabled": True,
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True, "metadata": "metadata_value"},
+ "name": "name_value",
+ "network": "network_value",
+ "priority": 898,
+ "self_link": "self_link_value",
+ "source_ranges": ["source_ranges_value_1", "source_ranges_value_2"],
+ "source_service_accounts": [
+ "source_service_accounts_value_1",
+ "source_service_accounts_value_2",
+ ],
+ "source_tags": ["source_tags_value_1", "source_tags_value_2"],
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ "target_tags": ["target_tags_value_1", "target_tags_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ firewall_resource=compute.Firewall(
+ allowed=[compute.Allowed(I_p_protocol="I_p_protocol_value")]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/firewalls"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertFirewallRequest(),
+ project="project_value",
+ firewall_resource=compute.Firewall(
+ allowed=[compute.Allowed(I_p_protocol="I_p_protocol_value")]
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListFirewallsRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListFirewallsRequest):
+ transport_class = transports.FirewallsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.FirewallsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.FirewallsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.FirewallsRestInterceptor(),
+ )
+ client = FirewallsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.FirewallsRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.FirewallsRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.FirewallList.to_json(compute.FirewallList())
+
+ request = compute.ListFirewallsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.FirewallList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListFirewallsRequest
+):
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/firewalls"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListFirewallsRequest(),
+ project="project_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.FirewallList(
+ items=[
+ compute.Firewall(),
+ compute.Firewall(),
+ compute.Firewall(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.FirewallList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.FirewallList(
+ items=[
+ compute.Firewall(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.FirewallList(
+ items=[
+ compute.Firewall(),
+ compute.Firewall(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.FirewallList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Firewall) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchFirewallRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "firewall": "sample2"}
+ request_init["firewall_resource"] = {
+ "allowed": [
+ {
+ "I_p_protocol": "I_p_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "denied": [
+ {
+ "I_p_protocol": "I_p_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "destination_ranges": [
+ "destination_ranges_value_1",
+ "destination_ranges_value_2",
+ ],
+ "direction": "direction_value",
+ "disabled": True,
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True, "metadata": "metadata_value"},
+ "name": "name_value",
+ "network": "network_value",
+ "priority": 898,
+ "self_link": "self_link_value",
+ "source_ranges": ["source_ranges_value_1", "source_ranges_value_2"],
+ "source_service_accounts": [
+ "source_service_accounts_value_1",
+ "source_service_accounts_value_2",
+ ],
+ "source_tags": ["source_tags_value_1", "source_tags_value_2"],
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ "target_tags": ["target_tags_value_1", "target_tags_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchFirewallRequest):
+ transport_class = transports.FirewallsRestTransport
+
+ request_init = {}
+ request_init["firewall"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewall"] = "firewall_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewall" in jsonified_request
+ assert jsonified_request["firewall"] == "firewall_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = FirewallsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.FirewallsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "firewall",
+ "firewallResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.FirewallsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.FirewallsRestInterceptor(),
@@ -1328,9 +2713,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallsRestInterceptor, "post_insert"
+ transports.FirewallsRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.FirewallsRestInterceptor, "pre_insert"
+ transports.FirewallsRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1347,7 +2732,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.InsertFirewallRequest()
+ request = compute.PatchFirewallRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1355,7 +2740,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.insert_unary(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -1367,8 +2752,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertFirewallRequest
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchFirewallRequest
):
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1376,7 +2761,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "firewall": "sample2"}
request_init["firewall_resource"] = {
"allowed": [
{
@@ -1428,10 +2813,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.patch(request)
-def test_insert_unary_rest_flattened():
+def test_patch_rest_flattened():
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1443,11 +2828,12 @@ def test_insert_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "firewall": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ firewall="firewall_value",
firewall_resource=compute.Firewall(
allowed=[compute.Allowed(I_p_protocol="I_p_protocol_value")]
),
@@ -1462,20 +2848,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/firewalls"
+ "%s/compute/v1/projects/{project}/global/firewalls/{firewall}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1484,16 +2870,17 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertFirewallRequest(),
+ client.patch(
+ compute.PatchFirewallRequest(),
project="project_value",
+ firewall="firewall_value",
firewall_resource=compute.Firewall(
allowed=[compute.Allowed(I_p_protocol="I_p_protocol_value")]
),
)
-def test_insert_unary_rest_error():
+def test_patch_rest_error():
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1502,50 +2889,105 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListFirewallsRequest,
+ compute.PatchFirewallRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_patch_unary_rest(request_type):
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "firewall": "sample2"}
+ request_init["firewall_resource"] = {
+ "allowed": [
+ {
+ "I_p_protocol": "I_p_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "denied": [
+ {
+ "I_p_protocol": "I_p_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "destination_ranges": [
+ "destination_ranges_value_1",
+ "destination_ranges_value_2",
+ ],
+ "direction": "direction_value",
+ "disabled": True,
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True, "metadata": "metadata_value"},
+ "name": "name_value",
+ "network": "network_value",
+ "priority": 898,
+ "self_link": "self_link_value",
+ "source_ranges": ["source_ranges_value_1", "source_ranges_value_2"],
+ "source_service_accounts": [
+ "source_service_accounts_value_1",
+ "source_service_accounts_value_2",
+ ],
+ "source_tags": ["source_tags_value_1", "source_tags_value_2"],
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ "target_tags": ["target_tags_value_1", "target_tags_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_list_rest_required_fields(request_type=compute.ListFirewallsRequest):
+def test_patch_unary_rest_required_fields(request_type=compute.PatchFirewallRequest):
transport_class = transports.FirewallsRestTransport
request_init = {}
+ request_init["firewall"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1558,29 +3000,24 @@ def test_list_rest_required_fields(request_type=compute.ListFirewallsRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["firewall"] = "firewall_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "firewall" in jsonified_request
+ assert jsonified_request["firewall"] == "firewall_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -1591,7 +3028,7 @@ def test_list_rest_required_fields(request_type=compute.ListFirewallsRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1602,46 +3039,45 @@ def test_list_rest_required_fields(request_type=compute.ListFirewallsRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_unary_rest_unset_required_fields():
transport = transports.FirewallsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "firewall",
+ "firewallResource",
+ "project",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_unary_rest_interceptors(null_interceptor):
transport = transports.FirewallsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.FirewallsRestInterceptor(),
@@ -1652,9 +3088,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallsRestInterceptor, "post_list"
+ transports.FirewallsRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.FirewallsRestInterceptor, "pre_list"
+ transports.FirewallsRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1669,17 +3105,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.FirewallList.to_json(compute.FirewallList())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListFirewallsRequest()
+ request = compute.PatchFirewallRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.FirewallList
+ post.return_value = compute.Operation
- client.list(
+ client.patch_unary(
request,
metadata=[
("key", "val"),
@@ -1691,8 +3127,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListFirewallsRequest
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchFirewallRequest
):
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1700,7 +3136,47 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "firewall": "sample2"}
+ request_init["firewall_resource"] = {
+ "allowed": [
+ {
+ "I_p_protocol": "I_p_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "denied": [
+ {
+ "I_p_protocol": "I_p_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "destination_ranges": [
+ "destination_ranges_value_1",
+ "destination_ranges_value_2",
+ ],
+ "direction": "direction_value",
+ "disabled": True,
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True, "metadata": "metadata_value"},
+ "name": "name_value",
+ "network": "network_value",
+ "priority": 898,
+ "self_link": "self_link_value",
+ "source_ranges": ["source_ranges_value_1", "source_ranges_value_2"],
+ "source_service_accounts": [
+ "source_service_accounts_value_1",
+ "source_service_accounts_value_2",
+ ],
+ "source_tags": ["source_tags_value_1", "source_tags_value_2"],
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ "target_tags": ["target_tags_value_1", "target_tags_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1712,10 +3188,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch_unary(request)
-def test_list_rest_flattened():
+def test_patch_unary_rest_flattened():
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1724,39 +3200,43 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "firewall": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ firewall="firewall_value",
+ firewall_resource=compute.Firewall(
+ allowed=[compute.Allowed(I_p_protocol="I_p_protocol_value")]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/firewalls"
+ "%s/compute/v1/projects/{project}/global/firewalls/{firewall}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1765,81 +3245,30 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListFirewallsRequest(),
+ client.patch_unary(
+ compute.PatchFirewallRequest(),
project="project_value",
+ firewall="firewall_value",
+ firewall_resource=compute.Firewall(
+ allowed=[compute.Allowed(I_p_protocol="I_p_protocol_value")]
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_unary_rest_error():
client = FirewallsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.FirewallList(
- items=[
- compute.Firewall(),
- compute.Firewall(),
- compute.Firewall(),
- ],
- next_page_token="abc",
- ),
- compute.FirewallList(
- items=[],
- next_page_token="def",
- ),
- compute.FirewallList(
- items=[
- compute.Firewall(),
- ],
- next_page_token="ghi",
- ),
- compute.FirewallList(
- items=[
- compute.Firewall(),
- compute.Firewall(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.FirewallList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Firewall) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchFirewallRequest,
+ compute.UpdateFirewallRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_update_rest(request_type):
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1923,10 +3352,10 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.update(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1951,7 +3380,7 @@ def test_patch_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(request_type=compute.PatchFirewallRequest):
+def test_update_rest_required_fields(request_type=compute.UpdateFirewallRequest):
transport_class = transports.FirewallsRestTransport
request_init = {}
@@ -1968,7 +3397,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchFirewallRequ
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1978,7 +3407,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchFirewallRequ
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -2007,7 +3436,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchFirewallRequ
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "put",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -2019,19 +3448,19 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchFirewallRequ
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.update(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_update_rest_unset_required_fields():
transport = transports.FirewallsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.update._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
@@ -2045,7 +3474,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_update_rest_interceptors(null_interceptor):
transport = transports.FirewallsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.FirewallsRestInterceptor(),
@@ -2056,9 +3485,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.FirewallsRestInterceptor, "post_patch"
+ transports.FirewallsRestInterceptor, "post_update"
) as post, mock.patch.object(
- transports.FirewallsRestInterceptor, "pre_patch"
+ transports.FirewallsRestInterceptor, "pre_update"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2075,7 +3504,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchFirewallRequest()
+ request = compute.UpdateFirewallRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2083,7 +3512,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.update(
request,
metadata=[
("key", "val"),
@@ -2095,8 +3524,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchFirewallRequest
+def test_update_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateFirewallRequest
):
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2156,10 +3585,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.update(request)
-def test_patch_unary_rest_flattened():
+def test_update_rest_flattened():
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2191,7 +3620,7 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.update(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -2204,7 +3633,7 @@ def test_patch_unary_rest_flattened():
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_rest_flattened_error(transport: str = "rest"):
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2213,8 +3642,8 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchFirewallRequest(),
+ client.update(
+ compute.UpdateFirewallRequest(),
project="project_value",
firewall="firewall_value",
firewall_resource=compute.Firewall(
@@ -2223,7 +3652,7 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_patch_unary_rest_error():
+def test_update_rest_error():
client = FirewallsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2324,28 +3753,6 @@ def test_update_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_unary_rest_required_fields(request_type=compute.UpdateFirewallRequest):
@@ -2701,6 +4108,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = FirewallsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_firewalls_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2737,6 +4157,14 @@ def test_firewalls_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_firewalls_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_forwarding_rules.py b/tests/unit/gapic/compute_v1/test_forwarding_rules.py
index c6d599a44..07994ae4f 100644
--- a/tests/unit/gapic/compute_v1/test_forwarding_rules.py
+++ b/tests/unit/gapic/compute_v1/test_forwarding_rules.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -898,7 +900,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -946,10 +948,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -974,9 +976,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteForwardingRuleRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteForwardingRuleRequest):
transport_class = transports.ForwardingRulesRestTransport
request_init = {}
@@ -1047,14 +1047,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.ForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1073,7 +1073,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.ForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1113,7 +1113,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1125,7 +1125,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteForwardingRuleRequest
):
client = ForwardingRulesClient(
@@ -1150,10 +1150,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1187,7 +1187,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1200,7 +1200,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1209,7 +1209,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteForwardingRuleRequest(),
project="project_value",
region="region_value",
@@ -1217,7 +1217,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1226,11 +1226,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetForwardingRuleRequest,
+ compute.DeleteForwardingRuleRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1247,76 +1247,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ForwardingRule(
- I_p_address="I_p_address_value",
- I_p_protocol="I_p_protocol_value",
- all_ports=True,
- allow_global_access=True,
- backend_service="backend_service_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
- ip_version="ip_version_value",
- is_mirroring_collector=True,
+ insert_time="insert_time_value",
kind="kind_value",
- label_fingerprint="label_fingerprint_value",
- load_balancing_scheme="load_balancing_scheme_value",
name="name_value",
- network="network_value",
- network_tier="network_tier_value",
- port_range="port_range_value",
- ports=["ports_value"],
- psc_connection_id=1793,
- psc_connection_status="psc_connection_status_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- service_label="service_label_value",
- service_name="service_name_value",
- subnetwork="subnetwork_value",
- target="target_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ForwardingRule.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.ForwardingRule)
- assert response.I_p_address == "I_p_address_value"
- assert response.I_p_protocol == "I_p_protocol_value"
- assert response.all_ports is True
- assert response.allow_global_access is True
- assert response.backend_service == "backend_service_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.ip_version == "ip_version_value"
- assert response.is_mirroring_collector is True
- assert response.kind == "kind_value"
- assert response.label_fingerprint == "label_fingerprint_value"
- assert response.load_balancing_scheme == "load_balancing_scheme_value"
- assert response.name == "name_value"
- assert response.network == "network_value"
- assert response.network_tier == "network_tier_value"
- assert response.port_range == "port_range_value"
- assert response.ports == ["ports_value"]
- assert response.psc_connection_id == 1793
- assert response.psc_connection_status == "psc_connection_status_value"
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.service_label == "service_label_value"
- assert response.service_name == "service_name_value"
- assert response.subnetwork == "subnetwork_value"
- assert response.target == "target_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetForwardingRuleRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteForwardingRuleRequest,
+):
transport_class = transports.ForwardingRulesRestTransport
request_init = {}
@@ -1334,7 +1304,7 @@ def test_get_rest_required_fields(request_type=compute.GetForwardingRuleRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1345,7 +1315,9 @@ def test_get_rest_required_fields(request_type=compute.GetForwardingRuleRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1363,7 +1335,7 @@ def test_get_rest_required_fields(request_type=compute.GetForwardingRuleRequest)
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.ForwardingRule()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1374,32 +1346,32 @@ def test_get_rest_required_fields(request_type=compute.GetForwardingRuleRequest)
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ForwardingRule.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.ForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"forwardingRule",
@@ -1411,7 +1383,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.ForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1424,9 +1396,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ForwardingRulesRestInterceptor, "post_get"
+ transports.ForwardingRulesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.ForwardingRulesRestInterceptor, "pre_get"
+ transports.ForwardingRulesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1441,19 +1413,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.ForwardingRule.to_json(
- compute.ForwardingRule()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetForwardingRuleRequest()
+ request = compute.DeleteForwardingRuleRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.ForwardingRule
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1465,8 +1435,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetForwardingRuleRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteForwardingRuleRequest
):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1490,10 +1460,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1502,7 +1472,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ForwardingRule()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1522,12 +1492,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ForwardingRule.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1540,7 +1510,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1549,15 +1519,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetForwardingRuleRequest(),
+ client.delete_unary(
+ compute.DeleteForwardingRuleRequest(),
project="project_value",
region="region_value",
forwarding_rule="forwarding_rule_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1566,131 +1536,101 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertForwardingRuleRequest,
+ compute.GetForwardingRuleRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["forwarding_rule_resource"] = {
- "I_p_address": "I_p_address_value",
- "I_p_protocol": "I_p_protocol_value",
- "all_ports": True,
- "allow_global_access": True,
- "backend_service": "backend_service_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "ip_version": "ip_version_value",
- "is_mirroring_collector": True,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "load_balancing_scheme": "load_balancing_scheme_value",
- "metadata_filters": [
- {
- "filter_labels": [{"name": "name_value", "value": "value_value"}],
- "filter_match_criteria": "filter_match_criteria_value",
- }
- ],
- "name": "name_value",
- "network": "network_value",
- "network_tier": "network_tier_value",
- "port_range": "port_range_value",
- "ports": ["ports_value_1", "ports_value_2"],
- "psc_connection_id": 1793,
- "psc_connection_status": "psc_connection_status_value",
- "region": "region_value",
- "self_link": "self_link_value",
- "service_directory_registrations": [
- {
- "namespace": "namespace_value",
- "service": "service_value",
- "service_directory_region": "service_directory_region_value",
- }
- ],
- "service_label": "service_label_value",
- "service_name": "service_name_value",
- "subnetwork": "subnetwork_value",
- "target": "target_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "forwarding_rule": "sample3",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.ForwardingRule(
+ I_p_address="I_p_address_value",
+ I_p_protocol="I_p_protocol_value",
+ all_ports=True,
+ allow_global_access=True,
+ backend_service="backend_service_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
+ ip_version="ip_version_value",
+ is_mirroring_collector=True,
kind="kind_value",
+ label_fingerprint="label_fingerprint_value",
+ load_balancing_scheme="load_balancing_scheme_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ network="network_value",
+ network_tier="network_tier_value",
+ port_range="port_range_value",
+ ports=["ports_value"],
+ psc_connection_id=1793,
+ psc_connection_status="psc_connection_status_value",
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ service_label="service_label_value",
+ service_name="service_name_value",
+ subnetwork="subnetwork_value",
+ target="target_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.ForwardingRule.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.ForwardingRule)
+ assert response.I_p_address == "I_p_address_value"
+ assert response.I_p_protocol == "I_p_protocol_value"
+ assert response.all_ports is True
+ assert response.allow_global_access is True
+ assert response.backend_service == "backend_service_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert response.ip_version == "ip_version_value"
+ assert response.is_mirroring_collector is True
assert response.kind == "kind_value"
+ assert response.label_fingerprint == "label_fingerprint_value"
+ assert response.load_balancing_scheme == "load_balancing_scheme_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.network == "network_value"
+ assert response.network_tier == "network_tier_value"
+ assert response.port_range == "port_range_value"
+ assert response.ports == ["ports_value"]
+ assert response.psc_connection_id == 1793
+ assert response.psc_connection_status == "psc_connection_status_value"
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.service_label == "service_label_value"
+ assert response.service_name == "service_name_value"
+ assert response.subnetwork == "subnetwork_value"
+ assert response.target == "target_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertForwardingRuleRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetForwardingRuleRequest):
transport_class = transports.ForwardingRulesRestTransport
request_init = {}
+ request_init["forwarding_rule"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -1704,22 +1644,23 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["forwardingRule"] = "forwarding_rule_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "forwardingRule" in jsonified_request
+ assert jsonified_request["forwardingRule"] == "forwarding_rule_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -1732,7 +1673,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.ForwardingRule()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1743,36 +1684,35 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.ForwardingRule.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.ForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
- "forwardingRuleResource",
+ "forwardingRule",
"project",
"region",
)
@@ -1781,7 +1721,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.ForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1794,9 +1734,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ForwardingRulesRestInterceptor, "post_insert"
+ transports.ForwardingRulesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.ForwardingRulesRestInterceptor, "pre_insert"
+ transports.ForwardingRulesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1811,17 +1751,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.ForwardingRule.to_json(
+ compute.ForwardingRule()
+ )
- request = compute.InsertForwardingRuleRequest()
+ request = compute.GetForwardingRuleRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.ForwardingRule
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1833,8 +1775,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertForwardingRuleRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetForwardingRuleRequest
):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1842,49 +1784,10 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["forwarding_rule_resource"] = {
- "I_p_address": "I_p_address_value",
- "I_p_protocol": "I_p_protocol_value",
- "all_ports": True,
- "allow_global_access": True,
- "backend_service": "backend_service_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "ip_version": "ip_version_value",
- "is_mirroring_collector": True,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "load_balancing_scheme": "load_balancing_scheme_value",
- "metadata_filters": [
- {
- "filter_labels": [{"name": "name_value", "value": "value_value"}],
- "filter_match_criteria": "filter_match_criteria_value",
- }
- ],
- "name": "name_value",
- "network": "network_value",
- "network_tier": "network_tier_value",
- "port_range": "port_range_value",
- "ports": ["ports_value_1", "ports_value_2"],
- "psc_connection_id": 1793,
- "psc_connection_status": "psc_connection_status_value",
- "region": "region_value",
- "self_link": "self_link_value",
- "service_directory_registrations": [
- {
- "namespace": "namespace_value",
- "service": "service_value",
- "service_directory_region": "service_directory_region_value",
- }
- ],
- "service_label": "service_label_value",
- "service_name": "service_name_value",
- "subnetwork": "subnetwork_value",
- "target": "target_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "forwarding_rule": "sample3",
}
request = request_type(request_init)
@@ -1897,10 +1800,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get(request)
-def test_insert_unary_rest_flattened():
+def test_get_rest_flattened():
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1909,43 +1812,45 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.ForwardingRule()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "forwarding_rule": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- forwarding_rule_resource=compute.ForwardingRule(
- I_p_address="I_p_address_value"
- ),
+ forwarding_rule="forwarding_rule_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.ForwardingRule.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/forwardingRules"
+ "%s/compute/v1/projects/{project}/regions/{region}/forwardingRules/{forwarding_rule}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1954,17 +1859,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertForwardingRuleRequest(),
+ client.get(
+ compute.GetForwardingRuleRequest(),
project="project_value",
region="region_value",
- forwarding_rule_resource=compute.ForwardingRule(
- I_p_address="I_p_address_value"
- ),
+ forwarding_rule="forwarding_rule_value",
)
-def test_insert_unary_rest_error():
+def test_get_rest_error():
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1973,11 +1876,11 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListForwardingRulesRequest,
+ compute.InsertForwardingRuleRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_insert_rest(request_type):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1985,35 +1888,114 @@ def test_list_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2"}
+ request_init["forwarding_rule_resource"] = {
+ "I_p_address": "I_p_address_value",
+ "I_p_protocol": "I_p_protocol_value",
+ "all_ports": True,
+ "allow_global_access": True,
+ "backend_service": "backend_service_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "is_mirroring_collector": True,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "metadata_filters": [
+ {
+ "filter_labels": [{"name": "name_value", "value": "value_value"}],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "port_range": "port_range_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ "psc_connection_id": 1793,
+ "psc_connection_status": "psc_connection_status_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "service_directory_registrations": [
+ {
+ "namespace": "namespace_value",
+ "service": "service_value",
+ "service_directory_region": "service_directory_region_value",
+ }
+ ],
+ "service_label": "service_label_value",
+ "service_name": "service_name_value",
+ "subnetwork": "subnetwork_value",
+ "target": "target_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ForwardingRuleList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ForwardingRuleList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(request_type=compute.ListForwardingRulesRequest):
+def test_insert_rest_required_fields(request_type=compute.InsertForwardingRuleRequest):
transport_class = transports.ForwardingRulesRestTransport
request_init = {}
@@ -2030,7 +2012,7 @@ def test_list_rest_required_fields(request_type=compute.ListForwardingRulesReque
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2040,17 +2022,9 @@ def test_list_rest_required_fields(request_type=compute.ListForwardingRulesReque
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2066,7 +2040,7 @@ def test_list_rest_required_fields(request_type=compute.ListForwardingRulesReque
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.ForwardingRuleList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2077,42 +2051,36 @@ def test_list_rest_required_fields(request_type=compute.ListForwardingRulesReque
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ForwardingRuleList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.ForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
+ "forwardingRuleResource",
"project",
"region",
)
@@ -2121,7 +2089,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.ForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2134,9 +2102,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ForwardingRulesRestInterceptor, "post_list"
+ transports.ForwardingRulesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.ForwardingRulesRestInterceptor, "pre_list"
+ transports.ForwardingRulesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2151,19 +2119,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.ForwardingRuleList.to_json(
- compute.ForwardingRuleList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListForwardingRulesRequest()
+ request = compute.InsertForwardingRuleRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.ForwardingRuleList
+ post.return_value = compute.Operation
- client.list(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -2175,8 +2141,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListForwardingRulesRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertForwardingRuleRequest
):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2185,6 +2151,49 @@ def test_list_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2"}
+ request_init["forwarding_rule_resource"] = {
+ "I_p_address": "I_p_address_value",
+ "I_p_protocol": "I_p_protocol_value",
+ "all_ports": True,
+ "allow_global_access": True,
+ "backend_service": "backend_service_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "is_mirroring_collector": True,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "metadata_filters": [
+ {
+ "filter_labels": [{"name": "name_value", "value": "value_value"}],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "port_range": "port_range_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ "psc_connection_id": 1793,
+ "psc_connection_status": "psc_connection_status_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "service_directory_registrations": [
+ {
+ "namespace": "namespace_value",
+ "service": "service_value",
+ "service_directory_region": "service_directory_region_value",
+ }
+ ],
+ "service_label": "service_label_value",
+ "service_name": "service_name_value",
+ "subnetwork": "subnetwork_value",
+ "target": "target_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2196,10 +2205,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.insert(request)
-def test_list_rest_flattened():
+def test_insert_rest_flattened():
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2208,7 +2217,7 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ForwardingRuleList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "region": "sample2"}
@@ -2217,18 +2226,21 @@ def test_list_rest_flattened():
mock_args = dict(
project="project_value",
region="region_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ForwardingRuleList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -2241,7 +2253,7 @@ def test_list_rest_flattened():
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2250,93 +2262,37 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListForwardingRulesRequest(),
+ client.insert(
+ compute.InsertForwardingRuleRequest(),
project="project_value",
region="region_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_insert_rest_error():
client = ForwardingRulesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.ForwardingRuleList(
- items=[
- compute.ForwardingRule(),
- compute.ForwardingRule(),
- compute.ForwardingRule(),
- ],
- next_page_token="abc",
- ),
- compute.ForwardingRuleList(
- items=[],
- next_page_token="def",
- ),
- compute.ForwardingRuleList(
- items=[
- compute.ForwardingRule(),
- ],
- next_page_token="ghi",
- ),
- compute.ForwardingRuleList(
- items=[
- compute.ForwardingRule(),
- compute.ForwardingRule(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.ForwardingRuleList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.ForwardingRule) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchForwardingRuleRequest,
+ compute.InsertForwardingRuleRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_insert_unary_rest(request_type):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "region": "sample2",
- "forwarding_rule": "sample3",
- }
+ request_init = {"project": "sample1", "region": "sample2"}
request_init["forwarding_rule_resource"] = {
"I_p_address": "I_p_address_value",
"I_p_protocol": "I_p_protocol_value",
@@ -2416,43 +2372,1883 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertForwardingRuleRequest,
+):
+ transport_class = transports.ForwardingRulesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.ForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "forwardingRuleResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.ForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ForwardingRulesRestInterceptor(),
+ )
+ client = ForwardingRulesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ForwardingRulesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.ForwardingRulesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertForwardingRuleRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertForwardingRuleRequest
+):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["forwarding_rule_resource"] = {
+ "I_p_address": "I_p_address_value",
+ "I_p_protocol": "I_p_protocol_value",
+ "all_ports": True,
+ "allow_global_access": True,
+ "backend_service": "backend_service_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "is_mirroring_collector": True,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "metadata_filters": [
+ {
+ "filter_labels": [{"name": "name_value", "value": "value_value"}],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "port_range": "port_range_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ "psc_connection_id": 1793,
+ "psc_connection_status": "psc_connection_status_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "service_directory_registrations": [
+ {
+ "namespace": "namespace_value",
+ "service": "service_value",
+ "service_directory_region": "service_directory_region_value",
+ }
+ ],
+ "service_label": "service_label_value",
+ "service_name": "service_name_value",
+ "subnetwork": "subnetwork_value",
+ "target": "target_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/forwardingRules"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertForwardingRuleRequest(),
+ project="project_value",
+ region="region_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListForwardingRulesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ForwardingRuleList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ForwardingRuleList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListForwardingRulesRequest):
+ transport_class = transports.ForwardingRulesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ForwardingRuleList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ForwardingRuleList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.ForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.ForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ForwardingRulesRestInterceptor(),
+ )
+ client = ForwardingRulesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ForwardingRulesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.ForwardingRulesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.ForwardingRuleList.to_json(
+ compute.ForwardingRuleList()
+ )
+
+ request = compute.ListForwardingRulesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.ForwardingRuleList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListForwardingRulesRequest
+):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ForwardingRuleList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ForwardingRuleList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/forwardingRules"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListForwardingRulesRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.ForwardingRuleList(
+ items=[
+ compute.ForwardingRule(),
+ compute.ForwardingRule(),
+ compute.ForwardingRule(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.ForwardingRuleList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.ForwardingRuleList(
+ items=[
+ compute.ForwardingRule(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.ForwardingRuleList(
+ items=[
+ compute.ForwardingRule(),
+ compute.ForwardingRule(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.ForwardingRuleList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.ForwardingRule) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchForwardingRuleRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "forwarding_rule": "sample3",
+ }
+ request_init["forwarding_rule_resource"] = {
+ "I_p_address": "I_p_address_value",
+ "I_p_protocol": "I_p_protocol_value",
+ "all_ports": True,
+ "allow_global_access": True,
+ "backend_service": "backend_service_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "is_mirroring_collector": True,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "metadata_filters": [
+ {
+ "filter_labels": [{"name": "name_value", "value": "value_value"}],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "port_range": "port_range_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ "psc_connection_id": 1793,
+ "psc_connection_status": "psc_connection_status_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "service_directory_registrations": [
+ {
+ "namespace": "namespace_value",
+ "service": "service_value",
+ "service_directory_region": "service_directory_region_value",
+ }
+ ],
+ "service_label": "service_label_value",
+ "service_name": "service_name_value",
+ "subnetwork": "subnetwork_value",
+ "target": "target_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchForwardingRuleRequest):
+ transport_class = transports.ForwardingRulesRestTransport
+
+ request_init = {}
+ request_init["forwarding_rule"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["forwardingRule"] = "forwarding_rule_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "forwardingRule" in jsonified_request
+ assert jsonified_request["forwardingRule"] == "forwarding_rule_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.ForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "forwardingRule",
+ "forwardingRuleResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.ForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ForwardingRulesRestInterceptor(),
+ )
+ client = ForwardingRulesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ForwardingRulesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.ForwardingRulesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchForwardingRuleRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchForwardingRuleRequest
+):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "forwarding_rule": "sample3",
+ }
+ request_init["forwarding_rule_resource"] = {
+ "I_p_address": "I_p_address_value",
+ "I_p_protocol": "I_p_protocol_value",
+ "all_ports": True,
+ "allow_global_access": True,
+ "backend_service": "backend_service_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "is_mirroring_collector": True,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "metadata_filters": [
+ {
+ "filter_labels": [{"name": "name_value", "value": "value_value"}],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "port_range": "port_range_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ "psc_connection_id": 1793,
+ "psc_connection_status": "psc_connection_status_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "service_directory_registrations": [
+ {
+ "namespace": "namespace_value",
+ "service": "service_value",
+ "service_directory_region": "service_directory_region_value",
+ }
+ ],
+ "service_label": "service_label_value",
+ "service_name": "service_name_value",
+ "subnetwork": "subnetwork_value",
+ "target": "target_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "forwarding_rule": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ forwarding_rule="forwarding_rule_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/forwardingRules/{forwarding_rule}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchForwardingRuleRequest(),
+ project="project_value",
+ region="region_value",
+ forwarding_rule="forwarding_rule_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
+ )
+
+
+def test_patch_rest_error():
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchForwardingRuleRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "forwarding_rule": "sample3",
+ }
+ request_init["forwarding_rule_resource"] = {
+ "I_p_address": "I_p_address_value",
+ "I_p_protocol": "I_p_protocol_value",
+ "all_ports": True,
+ "allow_global_access": True,
+ "backend_service": "backend_service_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "is_mirroring_collector": True,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "metadata_filters": [
+ {
+ "filter_labels": [{"name": "name_value", "value": "value_value"}],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "port_range": "port_range_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ "psc_connection_id": 1793,
+ "psc_connection_status": "psc_connection_status_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "service_directory_registrations": [
+ {
+ "namespace": "namespace_value",
+ "service": "service_value",
+ "service_directory_region": "service_directory_region_value",
+ }
+ ],
+ "service_label": "service_label_value",
+ "service_name": "service_name_value",
+ "subnetwork": "subnetwork_value",
+ "target": "target_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchForwardingRuleRequest,
+):
+ transport_class = transports.ForwardingRulesRestTransport
+
+ request_init = {}
+ request_init["forwarding_rule"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["forwardingRule"] = "forwarding_rule_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "forwardingRule" in jsonified_request
+ assert jsonified_request["forwardingRule"] == "forwarding_rule_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_unary_rest_unset_required_fields():
+ transport = transports.ForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "forwardingRule",
+ "forwardingRuleResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_unary_rest_interceptors(null_interceptor):
+ transport = transports.ForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ForwardingRulesRestInterceptor(),
+ )
+ client = ForwardingRulesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ForwardingRulesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.ForwardingRulesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchForwardingRuleRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchForwardingRuleRequest
+):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "forwarding_rule": "sample3",
+ }
+ request_init["forwarding_rule_resource"] = {
+ "I_p_address": "I_p_address_value",
+ "I_p_protocol": "I_p_protocol_value",
+ "all_ports": True,
+ "allow_global_access": True,
+ "backend_service": "backend_service_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "is_mirroring_collector": True,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "metadata_filters": [
+ {
+ "filter_labels": [{"name": "name_value", "value": "value_value"}],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "port_range": "port_range_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ "psc_connection_id": 1793,
+ "psc_connection_status": "psc_connection_status_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "service_directory_registrations": [
+ {
+ "namespace": "namespace_value",
+ "service": "service_value",
+ "service_directory_region": "service_directory_region_value",
+ }
+ ],
+ "service_label": "service_label_value",
+ "service_name": "service_name_value",
+ "subnetwork": "subnetwork_value",
+ "target": "target_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_unary(request)
+
+
+def test_patch_unary_rest_flattened():
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "forwarding_rule": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ forwarding_rule="forwarding_rule_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/forwardingRules/{forwarding_rule}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_unary(
+ compute.PatchForwardingRuleRequest(),
+ project="project_value",
+ region="region_value",
+ forwarding_rule="forwarding_rule_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
+ )
+
+
+def test_patch_unary_rest_error():
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetLabelsForwardingRuleRequest,
+ dict,
+ ],
+)
+def test_set_labels_rest(request_type):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init["region_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_labels(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_set_labels_rest_required_fields(
+ request_type=compute.SetLabelsForwardingRuleRequest,
+):
+ transport_class = transports.ForwardingRulesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["resource"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_labels._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["resource"] = "resource_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_labels._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_labels(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_labels_rest_unset_required_fields():
+ transport = transports.ForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_labels._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "region",
+ "regionSetLabelsRequestResource",
+ "resource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_labels_rest_interceptors(null_interceptor):
+ transport = transports.ForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ForwardingRulesRestInterceptor(),
+ )
+ client = ForwardingRulesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ForwardingRulesRestInterceptor, "post_set_labels"
+ ) as post, mock.patch.object(
+ transports.ForwardingRulesRestInterceptor, "pre_set_labels"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetLabelsForwardingRuleRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_labels(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_labels_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetLabelsForwardingRuleRequest
+):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init["region_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_labels(request)
+
+
+def test_set_labels_rest_flattened():
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "resource": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ resource="resource_value",
+ region_set_labels_request_resource=compute.RegionSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_labels(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/forwardingRules/{resource}/setLabels"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_labels_rest_flattened_error(transport: str = "rest"):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_labels(
+ compute.SetLabelsForwardingRuleRequest(),
+ project="project_value",
+ region="region_value",
+ resource="resource_value",
+ region_set_labels_request_resource=compute.RegionSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
+ ),
+ )
+
+
+def test_set_labels_rest_error():
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetLabelsForwardingRuleRequest,
+ dict,
+ ],
+)
+def test_set_labels_unary_rest(request_type):
+ client = ForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init["region_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_labels_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchForwardingRuleRequest,
+def test_set_labels_unary_rest_required_fields(
+ request_type=compute.SetLabelsForwardingRuleRequest,
):
transport_class = transports.ForwardingRulesRestTransport
request_init = {}
- request_init["forwarding_rule"] = ""
request_init["project"] = ""
request_init["region"] = ""
+ request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2464,29 +4260,29 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).set_labels._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["forwardingRule"] = "forwarding_rule_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
+ jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).set_labels._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "forwardingRule" in jsonified_request
- assert jsonified_request["forwardingRule"] == "forwarding_rule_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2506,7 +4302,7 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -2518,34 +4314,34 @@ def test_patch_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.set_labels_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_set_labels_unary_rest_unset_required_fields():
transport = transports.ForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.set_labels._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
- "forwardingRule",
- "forwardingRuleResource",
"project",
"region",
+ "regionSetLabelsRequestResource",
+ "resource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_set_labels_unary_rest_interceptors(null_interceptor):
transport = transports.ForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2558,9 +4354,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ForwardingRulesRestInterceptor, "post_patch"
+ transports.ForwardingRulesRestInterceptor, "post_set_labels"
) as post, mock.patch.object(
- transports.ForwardingRulesRestInterceptor, "pre_patch"
+ transports.ForwardingRulesRestInterceptor, "pre_set_labels"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2577,7 +4373,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchForwardingRuleRequest()
+ request = compute.SetLabelsForwardingRuleRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2585,7 +4381,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.set_labels_unary(
request,
metadata=[
("key", "val"),
@@ -2597,8 +4393,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchForwardingRuleRequest
+def test_set_labels_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetLabelsForwardingRuleRequest
):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2606,53 +4402,10 @@ def test_patch_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "region": "sample2",
- "forwarding_rule": "sample3",
- }
- request_init["forwarding_rule_resource"] = {
- "I_p_address": "I_p_address_value",
- "I_p_protocol": "I_p_protocol_value",
- "all_ports": True,
- "allow_global_access": True,
- "backend_service": "backend_service_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "ip_version": "ip_version_value",
- "is_mirroring_collector": True,
- "kind": "kind_value",
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init["region_set_labels_request_resource"] = {
"label_fingerprint": "label_fingerprint_value",
"labels": {},
- "load_balancing_scheme": "load_balancing_scheme_value",
- "metadata_filters": [
- {
- "filter_labels": [{"name": "name_value", "value": "value_value"}],
- "filter_match_criteria": "filter_match_criteria_value",
- }
- ],
- "name": "name_value",
- "network": "network_value",
- "network_tier": "network_tier_value",
- "port_range": "port_range_value",
- "ports": ["ports_value_1", "ports_value_2"],
- "psc_connection_id": 1793,
- "psc_connection_status": "psc_connection_status_value",
- "region": "region_value",
- "self_link": "self_link_value",
- "service_directory_registrations": [
- {
- "namespace": "namespace_value",
- "service": "service_value",
- "service_directory_region": "service_directory_region_value",
- }
- ],
- "service_label": "service_label_value",
- "service_name": "service_name_value",
- "subnetwork": "subnetwork_value",
- "target": "target_value",
}
request = request_type(request_init)
@@ -2665,10 +4418,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.set_labels_unary(request)
-def test_patch_unary_rest_flattened():
+def test_set_labels_unary_rest_flattened():
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2683,16 +4436,16 @@ def test_patch_unary_rest_flattened():
sample_request = {
"project": "sample1",
"region": "sample2",
- "forwarding_rule": "sample3",
+ "resource": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- forwarding_rule="forwarding_rule_value",
- forwarding_rule_resource=compute.ForwardingRule(
- I_p_address="I_p_address_value"
+ resource="resource_value",
+ region_set_labels_request_resource=compute.RegionSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
),
)
mock_args.update(sample_request)
@@ -2705,20 +4458,20 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.set_labels_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/forwardingRules/{forwarding_rule}"
+ "%s/compute/v1/projects/{project}/regions/{region}/forwardingRules/{resource}/setLabels"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_labels_unary_rest_flattened_error(transport: str = "rest"):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2727,18 +4480,18 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchForwardingRuleRequest(),
+ client.set_labels_unary(
+ compute.SetLabelsForwardingRuleRequest(),
project="project_value",
region="region_value",
- forwarding_rule="forwarding_rule_value",
- forwarding_rule_resource=compute.ForwardingRule(
- I_p_address="I_p_address_value"
+ resource="resource_value",
+ region_set_labels_request_resource=compute.RegionSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
),
)
-def test_patch_unary_rest_error():
+def test_set_labels_unary_rest_error():
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2747,22 +4500,23 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetLabelsForwardingRuleRequest,
+ compute.SetTargetForwardingRuleRequest,
dict,
],
)
-def test_set_labels_unary_rest(request_type):
+def test_set_target_rest(request_type):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
- request_init["region_set_labels_request_resource"] = {
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "forwarding_rule": "sample3",
}
+ request_init["target_reference_resource"] = {"target": "target_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -2799,10 +4553,10 @@ def test_set_labels_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_labels_unary(request)
+ response = client.set_target(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2827,15 +4581,15 @@ def test_set_labels_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_set_labels_unary_rest_required_fields(
- request_type=compute.SetLabelsForwardingRuleRequest,
+def test_set_target_rest_required_fields(
+ request_type=compute.SetTargetForwardingRuleRequest,
):
transport_class = transports.ForwardingRulesRestTransport
request_init = {}
+ request_init["forwarding_rule"] = ""
request_init["project"] = ""
request_init["region"] = ""
- request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2847,29 +4601,29 @@ def test_set_labels_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_labels._get_unset_required_fields(jsonified_request)
+ ).set_target._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["forwardingRule"] = "forwarding_rule_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
- jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_labels._get_unset_required_fields(jsonified_request)
+ ).set_target._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "forwardingRule" in jsonified_request
+ assert jsonified_request["forwardingRule"] == "forwarding_rule_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2901,34 +4655,34 @@ def test_set_labels_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_labels_unary(request)
+ response = client.set_target(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_labels_unary_rest_unset_required_fields():
+def test_set_target_rest_unset_required_fields():
transport = transports.ForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_labels._get_unset_required_fields({})
+ unset_fields = transport.set_target._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
+ "forwardingRule",
"project",
"region",
- "regionSetLabelsRequestResource",
- "resource",
+ "targetReferenceResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_labels_unary_rest_interceptors(null_interceptor):
+def test_set_target_rest_interceptors(null_interceptor):
transport = transports.ForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2941,9 +4695,9 @@ def test_set_labels_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ForwardingRulesRestInterceptor, "post_set_labels"
+ transports.ForwardingRulesRestInterceptor, "post_set_target"
) as post, mock.patch.object(
- transports.ForwardingRulesRestInterceptor, "pre_set_labels"
+ transports.ForwardingRulesRestInterceptor, "pre_set_target"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2960,7 +4714,7 @@ def test_set_labels_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetLabelsForwardingRuleRequest()
+ request = compute.SetTargetForwardingRuleRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2968,7 +4722,7 @@ def test_set_labels_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_labels_unary(
+ client.set_target(
request,
metadata=[
("key", "val"),
@@ -2980,8 +4734,8 @@ def test_set_labels_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_labels_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SetLabelsForwardingRuleRequest
+def test_set_target_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetTargetForwardingRuleRequest
):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2989,11 +4743,12 @@ def test_set_labels_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
- request_init["region_set_labels_request_resource"] = {
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "forwarding_rule": "sample3",
}
+ request_init["target_reference_resource"] = {"target": "target_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3005,10 +4760,10 @@ def test_set_labels_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_labels_unary(request)
+ client.set_target(request)
-def test_set_labels_unary_rest_flattened():
+def test_set_target_rest_flattened():
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3023,17 +4778,15 @@ def test_set_labels_unary_rest_flattened():
sample_request = {
"project": "sample1",
"region": "sample2",
- "resource": "sample3",
+ "forwarding_rule": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- resource="resource_value",
- region_set_labels_request_resource=compute.RegionSetLabelsRequest(
- label_fingerprint="label_fingerprint_value"
- ),
+ forwarding_rule="forwarding_rule_value",
+ target_reference_resource=compute.TargetReference(target="target_value"),
)
mock_args.update(sample_request)
@@ -3045,20 +4798,20 @@ def test_set_labels_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_labels_unary(**mock_args)
+ client.set_target(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/forwardingRules/{resource}/setLabels"
+ "%s/compute/v1/projects/{project}/regions/{region}/forwardingRules/{forwarding_rule}/setTarget"
% client.transport._host,
args[1],
)
-def test_set_labels_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_target_rest_flattened_error(transport: str = "rest"):
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3067,18 +4820,16 @@ def test_set_labels_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_labels_unary(
- compute.SetLabelsForwardingRuleRequest(),
+ client.set_target(
+ compute.SetTargetForwardingRuleRequest(),
project="project_value",
region="region_value",
- resource="resource_value",
- region_set_labels_request_resource=compute.RegionSetLabelsRequest(
- label_fingerprint="label_fingerprint_value"
- ),
+ forwarding_rule="forwarding_rule_value",
+ target_reference_resource=compute.TargetReference(target="target_value"),
)
-def test_set_labels_unary_rest_error():
+def test_set_target_rest_error():
client = ForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3144,28 +4895,6 @@ def test_set_target_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_set_target_unary_rest_required_fields(
@@ -3497,6 +5226,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = ForwardingRulesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_forwarding_rules_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3535,6 +5277,14 @@ def test_forwarding_rules_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_forwarding_rules_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_global_addresses.py b/tests/unit/gapic/compute_v1/test_global_addresses.py
index a0329ea6d..ce144b407 100644
--- a/tests/unit/gapic/compute_v1/test_global_addresses.py
+++ b/tests/unit/gapic/compute_v1/test_global_addresses.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -539,7 +541,7 @@ def test_global_addresses_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = GlobalAddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -583,10 +585,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -611,9 +613,599 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteGlobalAddressRequest,
+def test_delete_rest_required_fields(request_type=compute.DeleteGlobalAddressRequest):
+ transport_class = transports.GlobalAddressesRestTransport
+
+ request_init = {}
+ request_init["address"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["address"] = "address_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "address" in jsonified_request
+ assert jsonified_request["address"] == "address_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = GlobalAddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "delete",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_rest_unset_required_fields():
+ transport = transports.GlobalAddressesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "address",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_rest_interceptors(null_interceptor):
+ transport = transports.GlobalAddressesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.GlobalAddressesRestInterceptor(),
+ )
+ client = GlobalAddressesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.GlobalAddressesRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.GlobalAddressesRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteGlobalAddressRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteGlobalAddressRequest
):
+ client = GlobalAddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "address": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete(request)
+
+
+def test_delete_rest_flattened():
+ client = GlobalAddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "address": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ address="address_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/addresses/{address}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_rest_flattened_error(transport: str = "rest"):
+ client = GlobalAddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete(
+ compute.DeleteGlobalAddressRequest(),
+ project="project_value",
+ address="address_value",
+ )
+
+
+def test_delete_rest_error():
+ client = GlobalAddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DeleteGlobalAddressRequest,
+ dict,
+ ],
+)
+def test_delete_unary_rest(request_type):
+ client = GlobalAddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "address": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.delete_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteGlobalAddressRequest,
+):
+ transport_class = transports.GlobalAddressesRestTransport
+
+ request_init = {}
+ request_init["address"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["address"] = "address_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "address" in jsonified_request
+ assert jsonified_request["address"] == "address_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = GlobalAddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "delete",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_unary_rest_unset_required_fields():
+ transport = transports.GlobalAddressesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "address",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_unary_rest_interceptors(null_interceptor):
+ transport = transports.GlobalAddressesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.GlobalAddressesRestInterceptor(),
+ )
+ client = GlobalAddressesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.GlobalAddressesRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.GlobalAddressesRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteGlobalAddressRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteGlobalAddressRequest
+):
+ client = GlobalAddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "address": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete_unary(request)
+
+
+def test_delete_unary_rest_flattened():
+ client = GlobalAddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "address": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ address="address_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/addresses/{address}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+ client = GlobalAddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete_unary(
+ compute.DeleteGlobalAddressRequest(),
+ project="project_value",
+ address="address_value",
+ )
+
+
+def test_delete_unary_rest_error():
+ client = GlobalAddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetGlobalAddressRequest,
+ dict,
+ ],
+)
+def test_get_rest(request_type):
+ client = GlobalAddressesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "address": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Address(
+ address="address_value",
+ address_type="address_type_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ id=205,
+ ip_version="ip_version_value",
+ kind="kind_value",
+ name="name_value",
+ network="network_value",
+ network_tier="network_tier_value",
+ prefix_length=1391,
+ purpose="purpose_value",
+ region="region_value",
+ self_link="self_link_value",
+ status="status_value",
+ subnetwork="subnetwork_value",
+ users=["users_value"],
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Address.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Address)
+ assert response.address == "address_value"
+ assert response.address_type == "address_type_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.id == 205
+ assert response.ip_version == "ip_version_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.network == "network_value"
+ assert response.network_tier == "network_tier_value"
+ assert response.prefix_length == 1391
+ assert response.purpose == "purpose_value"
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.status == "status_value"
+ assert response.subnetwork == "subnetwork_value"
+ assert response.users == ["users_value"]
+
+
+def test_get_rest_required_fields(request_type=compute.GetGlobalAddressRequest):
transport_class = transports.GlobalAddressesRestTransport
request_init = {}
@@ -630,7 +1222,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -640,9 +1232,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -658,7 +1248,7 @@ def test_delete_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Address()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -669,32 +1259,32 @@ def test_delete_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "get",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Address.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.GlobalAddressesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"address",
@@ -705,7 +1295,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.GlobalAddressesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -718,9 +1308,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.GlobalAddressesRestInterceptor, "post_delete"
+ transports.GlobalAddressesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.GlobalAddressesRestInterceptor, "pre_delete"
+ transports.GlobalAddressesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -735,17 +1325,17 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.Address.to_json(compute.Address())
- request = compute.DeleteGlobalAddressRequest()
+ request = compute.GetGlobalAddressRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.Address
- client.delete_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -757,8 +1347,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteGlobalAddressRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetGlobalAddressRequest
):
client = GlobalAddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -778,10 +1368,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.get(request)
-def test_delete_unary_rest_flattened():
+def test_get_rest_flattened():
client = GlobalAddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -790,7 +1380,7 @@ def test_delete_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Address()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "address": "sample2"}
@@ -805,12 +1395,12 @@ def test_delete_unary_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Address.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -823,7 +1413,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = GlobalAddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -832,14 +1422,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteGlobalAddressRequest(),
+ client.get(
+ compute.GetGlobalAddressRequest(),
project="project_value",
address="address_value",
)
-def test_delete_unary_rest_error():
+def test_get_rest_error():
client = GlobalAddressesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -848,77 +1438,105 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetGlobalAddressRequest,
+ compute.InsertGlobalAddressRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_insert_rest(request_type):
client = GlobalAddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "address": "sample2"}
+ request_init = {"project": "sample1"}
+ request_init["address_resource"] = {
+ "address": "address_value",
+ "address_type": "address_type_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "prefix_length": 1391,
+ "purpose": "purpose_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "subnetwork": "subnetwork_value",
+ "users": ["users_value_1", "users_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Address(
- address="address_value",
- address_type="address_type_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
- ip_version="ip_version_value",
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- network="network_value",
- network_tier="network_tier_value",
- prefix_length=1391,
- purpose="purpose_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- status="status_value",
- subnetwork="subnetwork_value",
- users=["users_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Address.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Address)
- assert response.address == "address_value"
- assert response.address_type == "address_type_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
- assert response.ip_version == "ip_version_value"
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.network == "network_value"
- assert response.network_tier == "network_tier_value"
- assert response.prefix_length == 1391
- assert response.purpose == "purpose_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.status == "status_value"
- assert response.subnetwork == "subnetwork_value"
- assert response.users == ["users_value"]
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_rest_required_fields(request_type=compute.GetGlobalAddressRequest):
+def test_insert_rest_required_fields(request_type=compute.InsertGlobalAddressRequest):
transport_class = transports.GlobalAddressesRestTransport
request_init = {}
- request_init["address"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -931,22 +1549,21 @@ def test_get_rest_required_fields(request_type=compute.GetGlobalAddressRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["address"] = "address_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "address" in jsonified_request
- assert jsonified_request["address"] == "address_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -957,7 +1574,7 @@ def test_get_rest_required_fields(request_type=compute.GetGlobalAddressRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Address()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -968,35 +1585,36 @@ def test_get_rest_required_fields(request_type=compute.GetGlobalAddressRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Address.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.GlobalAddressesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
- "address",
+ "addressResource",
"project",
)
)
@@ -1004,7 +1622,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.GlobalAddressesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1017,9 +1635,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.GlobalAddressesRestInterceptor, "post_get"
+ transports.GlobalAddressesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.GlobalAddressesRestInterceptor, "pre_get"
+ transports.GlobalAddressesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1034,17 +1652,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Address.to_json(compute.Address())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetGlobalAddressRequest()
+ request = compute.InsertGlobalAddressRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Address
+ post.return_value = compute.Operation
- client.get(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1056,8 +1674,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetGlobalAddressRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertGlobalAddressRequest
):
client = GlobalAddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1065,7 +1683,26 @@ def test_get_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "address": "sample2"}
+ request_init = {"project": "sample1"}
+ request_init["address_resource"] = {
+ "address": "address_value",
+ "address_type": "address_type_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "prefix_length": 1391,
+ "purpose": "purpose_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "subnetwork": "subnetwork_value",
+ "users": ["users_value_1", "users_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1077,10 +1714,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.insert(request)
-def test_get_rest_flattened():
+def test_insert_rest_flattened():
client = GlobalAddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1089,40 +1726,40 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Address()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "address": "sample2"}
+ sample_request = {"project": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- address="address_value",
+ address_resource=compute.Address(address="address_value"),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Address.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/addresses/{address}"
+ "%s/compute/v1/projects/{project}/global/addresses"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = GlobalAddressesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1131,14 +1768,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetGlobalAddressRequest(),
+ client.insert(
+ compute.InsertGlobalAddressRequest(),
project="project_value",
- address="address_value",
+ address_resource=compute.Address(address="address_value"),
)
-def test_get_rest_error():
+def test_insert_rest_error():
client = GlobalAddressesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1218,28 +1855,6 @@ def test_insert_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_insert_unary_rest_required_fields(
@@ -1902,6 +2517,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = GlobalAddressesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_global_addresses_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -1936,6 +2564,14 @@ def test_global_addresses_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_global_addresses_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_global_forwarding_rules.py b/tests/unit/gapic/compute_v1/test_global_forwarding_rules.py
index 1af015d1f..2dbaf292d 100644
--- a/tests/unit/gapic/compute_v1/test_global_forwarding_rules.py
+++ b/tests/unit/gapic/compute_v1/test_global_forwarding_rules.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -555,7 +557,7 @@ def test_global_forwarding_rules_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -599,10 +601,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -627,7 +629,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteGlobalForwardingRuleRequest,
):
transport_class = transports.GlobalForwardingRulesRestTransport
@@ -696,14 +698,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.GlobalForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -721,7 +723,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.GlobalForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -761,7 +763,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -773,7 +775,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteGlobalForwardingRuleRequest
):
client = GlobalForwardingRulesClient(
@@ -794,10 +796,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -826,7 +828,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -839,7 +841,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -848,14 +850,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteGlobalForwardingRuleRequest(),
project="project_value",
forwarding_rule="forwarding_rule_value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -864,11 +866,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetGlobalForwardingRuleRequest,
+ compute.DeleteGlobalForwardingRuleRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -881,76 +883,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ForwardingRule(
- I_p_address="I_p_address_value",
- I_p_protocol="I_p_protocol_value",
- all_ports=True,
- allow_global_access=True,
- backend_service="backend_service_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
- ip_version="ip_version_value",
- is_mirroring_collector=True,
+ insert_time="insert_time_value",
kind="kind_value",
- label_fingerprint="label_fingerprint_value",
- load_balancing_scheme="load_balancing_scheme_value",
name="name_value",
- network="network_value",
- network_tier="network_tier_value",
- port_range="port_range_value",
- ports=["ports_value"],
- psc_connection_id=1793,
- psc_connection_status="psc_connection_status_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- service_label="service_label_value",
- service_name="service_name_value",
- subnetwork="subnetwork_value",
- target="target_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ForwardingRule.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.ForwardingRule)
- assert response.I_p_address == "I_p_address_value"
- assert response.I_p_protocol == "I_p_protocol_value"
- assert response.all_ports is True
- assert response.allow_global_access is True
- assert response.backend_service == "backend_service_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.ip_version == "ip_version_value"
- assert response.is_mirroring_collector is True
- assert response.kind == "kind_value"
- assert response.label_fingerprint == "label_fingerprint_value"
- assert response.load_balancing_scheme == "load_balancing_scheme_value"
- assert response.name == "name_value"
- assert response.network == "network_value"
- assert response.network_tier == "network_tier_value"
- assert response.port_range == "port_range_value"
- assert response.ports == ["ports_value"]
- assert response.psc_connection_id == 1793
- assert response.psc_connection_status == "psc_connection_status_value"
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.service_label == "service_label_value"
- assert response.service_name == "service_name_value"
- assert response.subnetwork == "subnetwork_value"
- assert response.target == "target_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetGlobalForwardingRuleRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteGlobalForwardingRuleRequest,
+):
transport_class = transports.GlobalForwardingRulesRestTransport
request_init = {}
@@ -967,7 +939,7 @@ def test_get_rest_required_fields(request_type=compute.GetGlobalForwardingRuleRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -977,7 +949,9 @@ def test_get_rest_required_fields(request_type=compute.GetGlobalForwardingRuleRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -993,7 +967,7 @@ def test_get_rest_required_fields(request_type=compute.GetGlobalForwardingRuleRe
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.ForwardingRule()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1004,32 +978,32 @@ def test_get_rest_required_fields(request_type=compute.GetGlobalForwardingRuleRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ForwardingRule.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.GlobalForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"forwardingRule",
@@ -1040,7 +1014,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.GlobalForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1053,9 +1027,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.GlobalForwardingRulesRestInterceptor, "post_get"
+ transports.GlobalForwardingRulesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.GlobalForwardingRulesRestInterceptor, "pre_get"
+ transports.GlobalForwardingRulesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1070,19 +1044,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.ForwardingRule.to_json(
- compute.ForwardingRule()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetGlobalForwardingRuleRequest()
+ request = compute.DeleteGlobalForwardingRuleRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.ForwardingRule
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1094,8 +1066,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetGlobalForwardingRuleRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteGlobalForwardingRuleRequest
):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1115,10 +1087,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1127,7 +1099,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ForwardingRule()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "forwarding_rule": "sample2"}
@@ -1142,12 +1114,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ForwardingRule.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1160,7 +1132,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1169,14 +1141,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetGlobalForwardingRuleRequest(),
+ client.delete_unary(
+ compute.DeleteGlobalForwardingRuleRequest(),
project="project_value",
forwarding_rule="forwarding_rule_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1185,131 +1157,97 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertGlobalForwardingRuleRequest,
+ compute.GetGlobalForwardingRuleRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["forwarding_rule_resource"] = {
- "I_p_address": "I_p_address_value",
- "I_p_protocol": "I_p_protocol_value",
- "all_ports": True,
- "allow_global_access": True,
- "backend_service": "backend_service_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "ip_version": "ip_version_value",
- "is_mirroring_collector": True,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "load_balancing_scheme": "load_balancing_scheme_value",
- "metadata_filters": [
- {
- "filter_labels": [{"name": "name_value", "value": "value_value"}],
- "filter_match_criteria": "filter_match_criteria_value",
- }
- ],
- "name": "name_value",
- "network": "network_value",
- "network_tier": "network_tier_value",
- "port_range": "port_range_value",
- "ports": ["ports_value_1", "ports_value_2"],
- "psc_connection_id": 1793,
- "psc_connection_status": "psc_connection_status_value",
- "region": "region_value",
- "self_link": "self_link_value",
- "service_directory_registrations": [
- {
- "namespace": "namespace_value",
- "service": "service_value",
- "service_directory_region": "service_directory_region_value",
- }
- ],
- "service_label": "service_label_value",
- "service_name": "service_name_value",
- "subnetwork": "subnetwork_value",
- "target": "target_value",
- }
+ request_init = {"project": "sample1", "forwarding_rule": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.ForwardingRule(
+ I_p_address="I_p_address_value",
+ I_p_protocol="I_p_protocol_value",
+ all_ports=True,
+ allow_global_access=True,
+ backend_service="backend_service_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
+ ip_version="ip_version_value",
+ is_mirroring_collector=True,
kind="kind_value",
+ label_fingerprint="label_fingerprint_value",
+ load_balancing_scheme="load_balancing_scheme_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ network="network_value",
+ network_tier="network_tier_value",
+ port_range="port_range_value",
+ ports=["ports_value"],
+ psc_connection_id=1793,
+ psc_connection_status="psc_connection_status_value",
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ service_label="service_label_value",
+ service_name="service_name_value",
+ subnetwork="subnetwork_value",
+ target="target_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.ForwardingRule.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.ForwardingRule)
+ assert response.I_p_address == "I_p_address_value"
+ assert response.I_p_protocol == "I_p_protocol_value"
+ assert response.all_ports is True
+ assert response.allow_global_access is True
+ assert response.backend_service == "backend_service_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert response.ip_version == "ip_version_value"
+ assert response.is_mirroring_collector is True
assert response.kind == "kind_value"
+ assert response.label_fingerprint == "label_fingerprint_value"
+ assert response.load_balancing_scheme == "load_balancing_scheme_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.network == "network_value"
+ assert response.network_tier == "network_tier_value"
+ assert response.port_range == "port_range_value"
+ assert response.ports == ["ports_value"]
+ assert response.psc_connection_id == 1793
+ assert response.psc_connection_status == "psc_connection_status_value"
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.service_label == "service_label_value"
+ assert response.service_name == "service_name_value"
+ assert response.subnetwork == "subnetwork_value"
+ assert response.target == "target_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertGlobalForwardingRuleRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetGlobalForwardingRuleRequest):
transport_class = transports.GlobalForwardingRulesRestTransport
request_init = {}
+ request_init["forwarding_rule"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1322,21 +1260,22 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["forwardingRule"] = "forwarding_rule_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "forwardingRule" in jsonified_request
+ assert jsonified_request["forwardingRule"] == "forwarding_rule_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -1347,7 +1286,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.ForwardingRule()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1358,36 +1297,35 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.ForwardingRule.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.GlobalForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
- "forwardingRuleResource",
+ "forwardingRule",
"project",
)
)
@@ -1395,7 +1333,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.GlobalForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1408,9 +1346,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.GlobalForwardingRulesRestInterceptor, "post_insert"
+ transports.GlobalForwardingRulesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.GlobalForwardingRulesRestInterceptor, "pre_insert"
+ transports.GlobalForwardingRulesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1425,17 +1363,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.ForwardingRule.to_json(
+ compute.ForwardingRule()
+ )
- request = compute.InsertGlobalForwardingRuleRequest()
+ request = compute.GetGlobalForwardingRuleRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.ForwardingRule
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1447,8 +1387,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertGlobalForwardingRuleRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetGlobalForwardingRuleRequest
):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1456,50 +1396,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["forwarding_rule_resource"] = {
- "I_p_address": "I_p_address_value",
- "I_p_protocol": "I_p_protocol_value",
- "all_ports": True,
- "allow_global_access": True,
- "backend_service": "backend_service_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "ip_version": "ip_version_value",
- "is_mirroring_collector": True,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "load_balancing_scheme": "load_balancing_scheme_value",
- "metadata_filters": [
- {
- "filter_labels": [{"name": "name_value", "value": "value_value"}],
- "filter_match_criteria": "filter_match_criteria_value",
- }
- ],
- "name": "name_value",
- "network": "network_value",
- "network_tier": "network_tier_value",
- "port_range": "port_range_value",
- "ports": ["ports_value_1", "ports_value_2"],
- "psc_connection_id": 1793,
- "psc_connection_status": "psc_connection_status_value",
- "region": "region_value",
- "self_link": "self_link_value",
- "service_directory_registrations": [
- {
- "namespace": "namespace_value",
- "service": "service_value",
- "service_directory_region": "service_directory_region_value",
- }
- ],
- "service_label": "service_label_value",
- "service_name": "service_name_value",
- "subnetwork": "subnetwork_value",
- "target": "target_value",
- }
+ request_init = {"project": "sample1", "forwarding_rule": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1511,10 +1408,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get(request)
-def test_insert_unary_rest_flattened():
+def test_get_rest_flattened():
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1523,42 +1420,40 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.ForwardingRule()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "forwarding_rule": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- forwarding_rule_resource=compute.ForwardingRule(
- I_p_address="I_p_address_value"
- ),
+ forwarding_rule="forwarding_rule_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.ForwardingRule.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/forwardingRules"
+ "%s/compute/v1/projects/{project}/global/forwardingRules/{forwarding_rule}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1567,16 +1462,14 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertGlobalForwardingRuleRequest(),
+ client.get(
+ compute.GetGlobalForwardingRuleRequest(),
project="project_value",
- forwarding_rule_resource=compute.ForwardingRule(
- I_p_address="I_p_address_value"
- ),
+ forwarding_rule="forwarding_rule_value",
)
-def test_insert_unary_rest_error():
+def test_get_rest_error():
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1585,11 +1478,11 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListGlobalForwardingRulesRequest,
+ compute.InsertGlobalForwardingRuleRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_insert_rest(request_type):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1597,36 +1490,115 @@ def test_list_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
+ request_init["forwarding_rule_resource"] = {
+ "I_p_address": "I_p_address_value",
+ "I_p_protocol": "I_p_protocol_value",
+ "all_ports": True,
+ "allow_global_access": True,
+ "backend_service": "backend_service_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "is_mirroring_collector": True,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "metadata_filters": [
+ {
+ "filter_labels": [{"name": "name_value", "value": "value_value"}],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "port_range": "port_range_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ "psc_connection_id": 1793,
+ "psc_connection_status": "psc_connection_status_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "service_directory_registrations": [
+ {
+ "namespace": "namespace_value",
+ "service": "service_value",
+ "service_directory_region": "service_directory_region_value",
+ }
+ ],
+ "service_label": "service_label_value",
+ "service_name": "service_name_value",
+ "subnetwork": "subnetwork_value",
+ "target": "target_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ForwardingRuleList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ForwardingRuleList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(
- request_type=compute.ListGlobalForwardingRulesRequest,
+def test_insert_rest_required_fields(
+ request_type=compute.InsertGlobalForwardingRuleRequest,
):
transport_class = transports.GlobalForwardingRulesRestTransport
@@ -1643,7 +1615,7 @@ def test_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1652,17 +1624,9 @@ def test_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1676,7 +1640,7 @@ def test_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.ForwardingRuleList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1687,46 +1651,44 @@ def test_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ForwardingRuleList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.GlobalForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "forwardingRuleResource",
+ "project",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.GlobalForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1739,9 +1701,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.GlobalForwardingRulesRestInterceptor, "post_list"
+ transports.GlobalForwardingRulesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.GlobalForwardingRulesRestInterceptor, "pre_list"
+ transports.GlobalForwardingRulesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1756,19 +1718,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.ForwardingRuleList.to_json(
- compute.ForwardingRuleList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListGlobalForwardingRulesRequest()
+ request = compute.InsertGlobalForwardingRuleRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.ForwardingRuleList
+ post.return_value = compute.Operation
- client.list(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1780,8 +1740,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListGlobalForwardingRulesRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertGlobalForwardingRuleRequest
):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1790,6 +1750,49 @@ def test_list_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
+ request_init["forwarding_rule_resource"] = {
+ "I_p_address": "I_p_address_value",
+ "I_p_protocol": "I_p_protocol_value",
+ "all_ports": True,
+ "allow_global_access": True,
+ "backend_service": "backend_service_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "is_mirroring_collector": True,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "metadata_filters": [
+ {
+ "filter_labels": [{"name": "name_value", "value": "value_value"}],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "port_range": "port_range_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ "psc_connection_id": 1793,
+ "psc_connection_status": "psc_connection_status_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "service_directory_registrations": [
+ {
+ "namespace": "namespace_value",
+ "service": "service_value",
+ "service_directory_region": "service_directory_region_value",
+ }
+ ],
+ "service_label": "service_label_value",
+ "service_name": "service_name_value",
+ "subnetwork": "subnetwork_value",
+ "target": "target_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1801,10 +1804,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.insert(request)
-def test_list_rest_flattened():
+def test_insert_rest_flattened():
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1813,7 +1816,7 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ForwardingRuleList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1"}
@@ -1821,18 +1824,21 @@ def test_list_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ForwardingRuleList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1845,7 +1851,7 @@ def test_list_rest_flattened():
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1854,88 +1860,36 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListGlobalForwardingRulesRequest(),
+ client.insert(
+ compute.InsertGlobalForwardingRuleRequest(),
project="project_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_insert_rest_error():
client = GlobalForwardingRulesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.ForwardingRuleList(
- items=[
- compute.ForwardingRule(),
- compute.ForwardingRule(),
- compute.ForwardingRule(),
- ],
- next_page_token="abc",
- ),
- compute.ForwardingRuleList(
- items=[],
- next_page_token="def",
- ),
- compute.ForwardingRuleList(
- items=[
- compute.ForwardingRule(),
- ],
- next_page_token="ghi",
- ),
- compute.ForwardingRuleList(
- items=[
- compute.ForwardingRule(),
- compute.ForwardingRule(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.ForwardingRuleList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.ForwardingRule) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchGlobalForwardingRuleRequest,
+ compute.InsertGlobalForwardingRuleRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_insert_unary_rest(request_type):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "forwarding_rule": "sample2"}
+ request_init = {"project": "sample1"}
request_init["forwarding_rule_resource"] = {
"I_p_address": "I_p_address_value",
"I_p_protocol": "I_p_protocol_value",
@@ -2015,42 +1969,1817 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertGlobalForwardingRuleRequest,
+):
+ transport_class = transports.GlobalForwardingRulesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.GlobalForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "forwardingRuleResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.GlobalForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.GlobalForwardingRulesRestInterceptor(),
+ )
+ client = GlobalForwardingRulesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.GlobalForwardingRulesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.GlobalForwardingRulesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertGlobalForwardingRuleRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertGlobalForwardingRuleRequest
+):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["forwarding_rule_resource"] = {
+ "I_p_address": "I_p_address_value",
+ "I_p_protocol": "I_p_protocol_value",
+ "all_ports": True,
+ "allow_global_access": True,
+ "backend_service": "backend_service_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "is_mirroring_collector": True,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "metadata_filters": [
+ {
+ "filter_labels": [{"name": "name_value", "value": "value_value"}],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "port_range": "port_range_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ "psc_connection_id": 1793,
+ "psc_connection_status": "psc_connection_status_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "service_directory_registrations": [
+ {
+ "namespace": "namespace_value",
+ "service": "service_value",
+ "service_directory_region": "service_directory_region_value",
+ }
+ ],
+ "service_label": "service_label_value",
+ "service_name": "service_name_value",
+ "subnetwork": "subnetwork_value",
+ "target": "target_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/forwardingRules"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertGlobalForwardingRuleRequest(),
+ project="project_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListGlobalForwardingRulesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ForwardingRuleList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ForwardingRuleList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(
+ request_type=compute.ListGlobalForwardingRulesRequest,
+):
+ transport_class = transports.GlobalForwardingRulesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ForwardingRuleList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ForwardingRuleList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.GlobalForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.GlobalForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.GlobalForwardingRulesRestInterceptor(),
+ )
+ client = GlobalForwardingRulesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.GlobalForwardingRulesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.GlobalForwardingRulesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.ForwardingRuleList.to_json(
+ compute.ForwardingRuleList()
+ )
+
+ request = compute.ListGlobalForwardingRulesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.ForwardingRuleList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListGlobalForwardingRulesRequest
+):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ForwardingRuleList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ForwardingRuleList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/forwardingRules"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListGlobalForwardingRulesRequest(),
+ project="project_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.ForwardingRuleList(
+ items=[
+ compute.ForwardingRule(),
+ compute.ForwardingRule(),
+ compute.ForwardingRule(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.ForwardingRuleList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.ForwardingRuleList(
+ items=[
+ compute.ForwardingRule(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.ForwardingRuleList(
+ items=[
+ compute.ForwardingRule(),
+ compute.ForwardingRule(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.ForwardingRuleList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.ForwardingRule) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchGlobalForwardingRuleRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "forwarding_rule": "sample2"}
+ request_init["forwarding_rule_resource"] = {
+ "I_p_address": "I_p_address_value",
+ "I_p_protocol": "I_p_protocol_value",
+ "all_ports": True,
+ "allow_global_access": True,
+ "backend_service": "backend_service_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "is_mirroring_collector": True,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "metadata_filters": [
+ {
+ "filter_labels": [{"name": "name_value", "value": "value_value"}],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "port_range": "port_range_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ "psc_connection_id": 1793,
+ "psc_connection_status": "psc_connection_status_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "service_directory_registrations": [
+ {
+ "namespace": "namespace_value",
+ "service": "service_value",
+ "service_directory_region": "service_directory_region_value",
+ }
+ ],
+ "service_label": "service_label_value",
+ "service_name": "service_name_value",
+ "subnetwork": "subnetwork_value",
+ "target": "target_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(
+ request_type=compute.PatchGlobalForwardingRuleRequest,
+):
+ transport_class = transports.GlobalForwardingRulesRestTransport
+
+ request_init = {}
+ request_init["forwarding_rule"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["forwardingRule"] = "forwarding_rule_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "forwardingRule" in jsonified_request
+ assert jsonified_request["forwardingRule"] == "forwarding_rule_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.GlobalForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "forwardingRule",
+ "forwardingRuleResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.GlobalForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.GlobalForwardingRulesRestInterceptor(),
+ )
+ client = GlobalForwardingRulesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.GlobalForwardingRulesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.GlobalForwardingRulesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchGlobalForwardingRuleRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchGlobalForwardingRuleRequest
+):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "forwarding_rule": "sample2"}
+ request_init["forwarding_rule_resource"] = {
+ "I_p_address": "I_p_address_value",
+ "I_p_protocol": "I_p_protocol_value",
+ "all_ports": True,
+ "allow_global_access": True,
+ "backend_service": "backend_service_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "is_mirroring_collector": True,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "metadata_filters": [
+ {
+ "filter_labels": [{"name": "name_value", "value": "value_value"}],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "port_range": "port_range_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ "psc_connection_id": 1793,
+ "psc_connection_status": "psc_connection_status_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "service_directory_registrations": [
+ {
+ "namespace": "namespace_value",
+ "service": "service_value",
+ "service_directory_region": "service_directory_region_value",
+ }
+ ],
+ "service_label": "service_label_value",
+ "service_name": "service_name_value",
+ "subnetwork": "subnetwork_value",
+ "target": "target_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "forwarding_rule": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ forwarding_rule="forwarding_rule_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/forwardingRules/{forwarding_rule}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchGlobalForwardingRuleRequest(),
+ project="project_value",
+ forwarding_rule="forwarding_rule_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
+ )
+
+
+def test_patch_rest_error():
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchGlobalForwardingRuleRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "forwarding_rule": "sample2"}
+ request_init["forwarding_rule_resource"] = {
+ "I_p_address": "I_p_address_value",
+ "I_p_protocol": "I_p_protocol_value",
+ "all_ports": True,
+ "allow_global_access": True,
+ "backend_service": "backend_service_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "is_mirroring_collector": True,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "metadata_filters": [
+ {
+ "filter_labels": [{"name": "name_value", "value": "value_value"}],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "port_range": "port_range_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ "psc_connection_id": 1793,
+ "psc_connection_status": "psc_connection_status_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "service_directory_registrations": [
+ {
+ "namespace": "namespace_value",
+ "service": "service_value",
+ "service_directory_region": "service_directory_region_value",
+ }
+ ],
+ "service_label": "service_label_value",
+ "service_name": "service_name_value",
+ "subnetwork": "subnetwork_value",
+ "target": "target_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchGlobalForwardingRuleRequest,
+):
+ transport_class = transports.GlobalForwardingRulesRestTransport
+
+ request_init = {}
+ request_init["forwarding_rule"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["forwardingRule"] = "forwarding_rule_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "forwardingRule" in jsonified_request
+ assert jsonified_request["forwardingRule"] == "forwarding_rule_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_unary_rest_unset_required_fields():
+ transport = transports.GlobalForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "forwardingRule",
+ "forwardingRuleResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_unary_rest_interceptors(null_interceptor):
+ transport = transports.GlobalForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.GlobalForwardingRulesRestInterceptor(),
+ )
+ client = GlobalForwardingRulesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.GlobalForwardingRulesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.GlobalForwardingRulesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchGlobalForwardingRuleRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchGlobalForwardingRuleRequest
+):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "forwarding_rule": "sample2"}
+ request_init["forwarding_rule_resource"] = {
+ "I_p_address": "I_p_address_value",
+ "I_p_protocol": "I_p_protocol_value",
+ "all_ports": True,
+ "allow_global_access": True,
+ "backend_service": "backend_service_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_version": "ip_version_value",
+ "is_mirroring_collector": True,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "metadata_filters": [
+ {
+ "filter_labels": [{"name": "name_value", "value": "value_value"}],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "name": "name_value",
+ "network": "network_value",
+ "network_tier": "network_tier_value",
+ "port_range": "port_range_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ "psc_connection_id": 1793,
+ "psc_connection_status": "psc_connection_status_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "service_directory_registrations": [
+ {
+ "namespace": "namespace_value",
+ "service": "service_value",
+ "service_directory_region": "service_directory_region_value",
+ }
+ ],
+ "service_label": "service_label_value",
+ "service_name": "service_name_value",
+ "subnetwork": "subnetwork_value",
+ "target": "target_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_unary(request)
+
+
+def test_patch_unary_rest_flattened():
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "forwarding_rule": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ forwarding_rule="forwarding_rule_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/forwardingRules/{forwarding_rule}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_unary(
+ compute.PatchGlobalForwardingRuleRequest(),
+ project="project_value",
+ forwarding_rule="forwarding_rule_value",
+ forwarding_rule_resource=compute.ForwardingRule(
+ I_p_address="I_p_address_value"
+ ),
+ )
+
+
+def test_patch_unary_rest_error():
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetLabelsGlobalForwardingRuleRequest,
+ dict,
+ ],
+)
+def test_set_labels_rest(request_type):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request_init["global_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_labels(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_set_labels_rest_required_fields(
+ request_type=compute.SetLabelsGlobalForwardingRuleRequest,
+):
+ transport_class = transports.GlobalForwardingRulesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["resource"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_labels._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_labels._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_labels(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_labels_rest_unset_required_fields():
+ transport = transports.GlobalForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_labels._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "globalSetLabelsRequestResource",
+ "project",
+ "resource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_labels_rest_interceptors(null_interceptor):
+ transport = transports.GlobalForwardingRulesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.GlobalForwardingRulesRestInterceptor(),
+ )
+ client = GlobalForwardingRulesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.GlobalForwardingRulesRestInterceptor, "post_set_labels"
+ ) as post, mock.patch.object(
+ transports.GlobalForwardingRulesRestInterceptor, "pre_set_labels"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetLabelsGlobalForwardingRuleRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_labels(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_labels_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetLabelsGlobalForwardingRuleRequest
+):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request_init["global_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_labels(request)
+
+
+def test_set_labels_rest_flattened():
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "resource": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ resource="resource_value",
+ global_set_labels_request_resource=compute.GlobalSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_labels(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/forwardingRules/{resource}/setLabels"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_labels_rest_flattened_error(transport: str = "rest"):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_labels(
+ compute.SetLabelsGlobalForwardingRuleRequest(),
+ project="project_value",
+ resource="resource_value",
+ global_set_labels_request_resource=compute.GlobalSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
+ ),
+ )
+
+
+def test_set_labels_rest_error():
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetLabelsGlobalForwardingRuleRequest,
+ dict,
+ ],
+)
+def test_set_labels_unary_rest(request_type):
+ client = GlobalForwardingRulesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request_init["global_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_labels_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchGlobalForwardingRuleRequest,
+def test_set_labels_unary_rest_required_fields(
+ request_type=compute.SetLabelsGlobalForwardingRuleRequest,
):
transport_class = transports.GlobalForwardingRulesRestTransport
request_init = {}
- request_init["forwarding_rule"] = ""
request_init["project"] = ""
+ request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2062,26 +3791,24 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).set_labels._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["forwardingRule"] = "forwarding_rule_value"
jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).set_labels._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "forwardingRule" in jsonified_request
- assert jsonified_request["forwardingRule"] == "forwarding_rule_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2101,7 +3828,7 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -2113,33 +3840,33 @@ def test_patch_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.set_labels_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_set_labels_unary_rest_unset_required_fields():
transport = transports.GlobalForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.set_labels._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
- "forwardingRule",
- "forwardingRuleResource",
+ "globalSetLabelsRequestResource",
"project",
+ "resource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_set_labels_unary_rest_interceptors(null_interceptor):
transport = transports.GlobalForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2152,9 +3879,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.GlobalForwardingRulesRestInterceptor, "post_patch"
+ transports.GlobalForwardingRulesRestInterceptor, "post_set_labels"
) as post, mock.patch.object(
- transports.GlobalForwardingRulesRestInterceptor, "pre_patch"
+ transports.GlobalForwardingRulesRestInterceptor, "pre_set_labels"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2171,7 +3898,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchGlobalForwardingRuleRequest()
+ request = compute.SetLabelsGlobalForwardingRuleRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2179,7 +3906,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.set_labels_unary(
request,
metadata=[
("key", "val"),
@@ -2191,8 +3918,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchGlobalForwardingRuleRequest
+def test_set_labels_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetLabelsGlobalForwardingRuleRequest
):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2200,49 +3927,10 @@ def test_patch_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "forwarding_rule": "sample2"}
- request_init["forwarding_rule_resource"] = {
- "I_p_address": "I_p_address_value",
- "I_p_protocol": "I_p_protocol_value",
- "all_ports": True,
- "allow_global_access": True,
- "backend_service": "backend_service_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "ip_version": "ip_version_value",
- "is_mirroring_collector": True,
- "kind": "kind_value",
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request_init["global_set_labels_request_resource"] = {
"label_fingerprint": "label_fingerprint_value",
"labels": {},
- "load_balancing_scheme": "load_balancing_scheme_value",
- "metadata_filters": [
- {
- "filter_labels": [{"name": "name_value", "value": "value_value"}],
- "filter_match_criteria": "filter_match_criteria_value",
- }
- ],
- "name": "name_value",
- "network": "network_value",
- "network_tier": "network_tier_value",
- "port_range": "port_range_value",
- "ports": ["ports_value_1", "ports_value_2"],
- "psc_connection_id": 1793,
- "psc_connection_status": "psc_connection_status_value",
- "region": "region_value",
- "self_link": "self_link_value",
- "service_directory_registrations": [
- {
- "namespace": "namespace_value",
- "service": "service_value",
- "service_directory_region": "service_directory_region_value",
- }
- ],
- "service_label": "service_label_value",
- "service_name": "service_name_value",
- "subnetwork": "subnetwork_value",
- "target": "target_value",
}
request = request_type(request_init)
@@ -2255,10 +3943,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.set_labels_unary(request)
-def test_patch_unary_rest_flattened():
+def test_set_labels_unary_rest_flattened():
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2270,14 +3958,14 @@ def test_patch_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "forwarding_rule": "sample2"}
+ sample_request = {"project": "sample1", "resource": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- forwarding_rule="forwarding_rule_value",
- forwarding_rule_resource=compute.ForwardingRule(
- I_p_address="I_p_address_value"
+ resource="resource_value",
+ global_set_labels_request_resource=compute.GlobalSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
),
)
mock_args.update(sample_request)
@@ -2290,20 +3978,20 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.set_labels_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/forwardingRules/{forwarding_rule}"
+ "%s/compute/v1/projects/{project}/global/forwardingRules/{resource}/setLabels"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_labels_unary_rest_flattened_error(transport: str = "rest"):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2312,17 +4000,17 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchGlobalForwardingRuleRequest(),
+ client.set_labels_unary(
+ compute.SetLabelsGlobalForwardingRuleRequest(),
project="project_value",
- forwarding_rule="forwarding_rule_value",
- forwarding_rule_resource=compute.ForwardingRule(
- I_p_address="I_p_address_value"
+ resource="resource_value",
+ global_set_labels_request_resource=compute.GlobalSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
),
)
-def test_patch_unary_rest_error():
+def test_set_labels_unary_rest_error():
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2331,22 +4019,19 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetLabelsGlobalForwardingRuleRequest,
+ compute.SetTargetGlobalForwardingRuleRequest,
dict,
],
)
-def test_set_labels_unary_rest(request_type):
+def test_set_target_rest(request_type):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
- request_init["global_set_labels_request_resource"] = {
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- }
+ request_init = {"project": "sample1", "forwarding_rule": "sample2"}
+ request_init["target_reference_resource"] = {"target": "target_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -2383,10 +4068,10 @@ def test_set_labels_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_labels_unary(request)
+ response = client.set_target(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2411,14 +4096,14 @@ def test_set_labels_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_set_labels_unary_rest_required_fields(
- request_type=compute.SetLabelsGlobalForwardingRuleRequest,
+def test_set_target_rest_required_fields(
+ request_type=compute.SetTargetGlobalForwardingRuleRequest,
):
transport_class = transports.GlobalForwardingRulesRestTransport
request_init = {}
+ request_init["forwarding_rule"] = ""
request_init["project"] = ""
- request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2430,24 +4115,26 @@ def test_set_labels_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_labels._get_unset_required_fields(jsonified_request)
+ ).set_target._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["forwardingRule"] = "forwarding_rule_value"
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_labels._get_unset_required_fields(jsonified_request)
+ ).set_target._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "forwardingRule" in jsonified_request
+ assert jsonified_request["forwardingRule"] == "forwarding_rule_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2479,33 +4166,33 @@ def test_set_labels_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_labels_unary(request)
+ response = client.set_target(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_labels_unary_rest_unset_required_fields():
+def test_set_target_rest_unset_required_fields():
transport = transports.GlobalForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_labels._get_unset_required_fields({})
+ unset_fields = transport.set_target._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
- "globalSetLabelsRequestResource",
+ "forwardingRule",
"project",
- "resource",
+ "targetReferenceResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_labels_unary_rest_interceptors(null_interceptor):
+def test_set_target_rest_interceptors(null_interceptor):
transport = transports.GlobalForwardingRulesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2518,9 +4205,9 @@ def test_set_labels_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.GlobalForwardingRulesRestInterceptor, "post_set_labels"
+ transports.GlobalForwardingRulesRestInterceptor, "post_set_target"
) as post, mock.patch.object(
- transports.GlobalForwardingRulesRestInterceptor, "pre_set_labels"
+ transports.GlobalForwardingRulesRestInterceptor, "pre_set_target"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2537,7 +4224,7 @@ def test_set_labels_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetLabelsGlobalForwardingRuleRequest()
+ request = compute.SetTargetGlobalForwardingRuleRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2545,7 +4232,7 @@ def test_set_labels_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_labels_unary(
+ client.set_target(
request,
metadata=[
("key", "val"),
@@ -2557,8 +4244,8 @@ def test_set_labels_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_labels_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SetLabelsGlobalForwardingRuleRequest
+def test_set_target_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetTargetGlobalForwardingRuleRequest
):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2566,11 +4253,8 @@ def test_set_labels_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
- request_init["global_set_labels_request_resource"] = {
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- }
+ request_init = {"project": "sample1", "forwarding_rule": "sample2"}
+ request_init["target_reference_resource"] = {"target": "target_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2582,10 +4266,10 @@ def test_set_labels_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_labels_unary(request)
+ client.set_target(request)
-def test_set_labels_unary_rest_flattened():
+def test_set_target_rest_flattened():
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2597,15 +4281,13 @@ def test_set_labels_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "resource": "sample2"}
+ sample_request = {"project": "sample1", "forwarding_rule": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- resource="resource_value",
- global_set_labels_request_resource=compute.GlobalSetLabelsRequest(
- label_fingerprint="label_fingerprint_value"
- ),
+ forwarding_rule="forwarding_rule_value",
+ target_reference_resource=compute.TargetReference(target="target_value"),
)
mock_args.update(sample_request)
@@ -2617,20 +4299,20 @@ def test_set_labels_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_labels_unary(**mock_args)
+ client.set_target(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/forwardingRules/{resource}/setLabels"
+ "%s/compute/v1/projects/{project}/global/forwardingRules/{forwarding_rule}/setTarget"
% client.transport._host,
args[1],
)
-def test_set_labels_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_target_rest_flattened_error(transport: str = "rest"):
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2639,17 +4321,15 @@ def test_set_labels_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_labels_unary(
- compute.SetLabelsGlobalForwardingRuleRequest(),
+ client.set_target(
+ compute.SetTargetGlobalForwardingRuleRequest(),
project="project_value",
- resource="resource_value",
- global_set_labels_request_resource=compute.GlobalSetLabelsRequest(
- label_fingerprint="label_fingerprint_value"
- ),
+ forwarding_rule="forwarding_rule_value",
+ target_reference_resource=compute.TargetReference(target="target_value"),
)
-def test_set_labels_unary_rest_error():
+def test_set_target_rest_error():
client = GlobalForwardingRulesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2711,28 +4391,6 @@ def test_set_target_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_set_target_unary_rest_required_fields(
@@ -3049,6 +4707,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = GlobalForwardingRulesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_global_forwarding_rules_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3086,6 +4757,14 @@ def test_global_forwarding_rules_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_global_forwarding_rules_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_global_network_endpoint_groups.py b/tests/unit/gapic/compute_v1/test_global_network_endpoint_groups.py
index f0497108c..3d3f80e2e 100644
--- a/tests/unit/gapic/compute_v1/test_global_network_endpoint_groups.py
+++ b/tests/unit/gapic/compute_v1/test_global_network_endpoint_groups.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -563,7 +565,7 @@ def test_global_network_endpoint_groups_client_client_options_credentials_file(
dict,
],
)
-def test_attach_network_endpoints_unary_rest(request_type):
+def test_attach_network_endpoints_rest(request_type):
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -618,10 +620,10 @@ def test_attach_network_endpoints_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.attach_network_endpoints_unary(request)
+ response = client.attach_network_endpoints(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -646,7 +648,7 @@ def test_attach_network_endpoints_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_attach_network_endpoints_unary_rest_required_fields(
+def test_attach_network_endpoints_rest_required_fields(
request_type=compute.AttachNetworkEndpointsGlobalNetworkEndpointGroupRequest,
):
transport_class = transports.GlobalNetworkEndpointGroupsRestTransport
@@ -716,14 +718,14 @@ def test_attach_network_endpoints_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.attach_network_endpoints_unary(request)
+ response = client.attach_network_endpoints(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_attach_network_endpoints_unary_rest_unset_required_fields():
+def test_attach_network_endpoints_rest_unset_required_fields():
transport = transports.GlobalNetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -742,7 +744,7 @@ def test_attach_network_endpoints_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_attach_network_endpoints_unary_rest_interceptors(null_interceptor):
+def test_attach_network_endpoints_rest_interceptors(null_interceptor):
transport = transports.GlobalNetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -784,7 +786,7 @@ def test_attach_network_endpoints_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.attach_network_endpoints_unary(
+ client.attach_network_endpoints(
request,
metadata=[
("key", "val"),
@@ -796,7 +798,7 @@ def test_attach_network_endpoints_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_attach_network_endpoints_unary_rest_bad_request(
+def test_attach_network_endpoints_rest_bad_request(
transport: str = "rest",
request_type=compute.AttachNetworkEndpointsGlobalNetworkEndpointGroupRequest,
):
@@ -829,10 +831,10 @@ def test_attach_network_endpoints_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.attach_network_endpoints_unary(request)
+ client.attach_network_endpoints(request)
-def test_attach_network_endpoints_unary_rest_flattened():
+def test_attach_network_endpoints_rest_flattened():
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -866,7 +868,7 @@ def test_attach_network_endpoints_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.attach_network_endpoints_unary(**mock_args)
+ client.attach_network_endpoints(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -879,7 +881,7 @@ def test_attach_network_endpoints_unary_rest_flattened():
)
-def test_attach_network_endpoints_unary_rest_flattened_error(transport: str = "rest"):
+def test_attach_network_endpoints_rest_flattened_error(transport: str = "rest"):
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -888,7 +890,7 @@ def test_attach_network_endpoints_unary_rest_flattened_error(transport: str = "r
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.attach_network_endpoints_unary(
+ client.attach_network_endpoints(
compute.AttachNetworkEndpointsGlobalNetworkEndpointGroupRequest(),
project="project_value",
network_endpoint_group="network_endpoint_group_value",
@@ -900,7 +902,7 @@ def test_attach_network_endpoints_unary_rest_flattened_error(transport: str = "r
)
-def test_attach_network_endpoints_unary_rest_error():
+def test_attach_network_endpoints_rest_error():
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -909,11 +911,11 @@ def test_attach_network_endpoints_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteGlobalNetworkEndpointGroupRequest,
+ compute.AttachNetworkEndpointsGlobalNetworkEndpointGroupRequest,
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_attach_network_endpoints_unary_rest(request_type):
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -921,6 +923,17 @@ def test_delete_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "network_endpoint_group": "sample2"}
+ request_init["global_network_endpoint_groups_attach_endpoints_request_resource"] = {
+ "network_endpoints": [
+ {
+ "annotations": {},
+ "fqdn": "fqdn_value",
+ "instance": "instance_value",
+ "ip_address": "ip_address_value",
+ "port": 453,
+ }
+ ]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -957,36 +970,14 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.attach_network_endpoints_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteGlobalNetworkEndpointGroupRequest,
+def test_attach_network_endpoints_unary_rest_required_fields(
+ request_type=compute.AttachNetworkEndpointsGlobalNetworkEndpointGroupRequest,
):
transport_class = transports.GlobalNetworkEndpointGroupsRestTransport
@@ -1004,7 +995,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).attach_network_endpoints._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1014,7 +1005,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).attach_network_endpoints._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -1043,9 +1034,10 @@ def test_delete_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1054,23 +1046,24 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.attach_network_endpoints_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_attach_network_endpoints_unary_rest_unset_required_fields():
transport = transports.GlobalNetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.attach_network_endpoints._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
+ "globalNetworkEndpointGroupsAttachEndpointsRequestResource",
"networkEndpointGroup",
"project",
)
@@ -1079,7 +1072,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_attach_network_endpoints_unary_rest_interceptors(null_interceptor):
transport = transports.GlobalNetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1092,9 +1085,11 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.GlobalNetworkEndpointGroupsRestInterceptor, "post_delete"
+ transports.GlobalNetworkEndpointGroupsRestInterceptor,
+ "post_attach_network_endpoints",
) as post, mock.patch.object(
- transports.GlobalNetworkEndpointGroupsRestInterceptor, "pre_delete"
+ transports.GlobalNetworkEndpointGroupsRestInterceptor,
+ "pre_attach_network_endpoints",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1111,7 +1106,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteGlobalNetworkEndpointGroupRequest()
+ request = compute.AttachNetworkEndpointsGlobalNetworkEndpointGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1119,7 +1114,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.attach_network_endpoints_unary(
request,
metadata=[
("key", "val"),
@@ -1131,9 +1126,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_attach_network_endpoints_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.DeleteGlobalNetworkEndpointGroupRequest,
+ request_type=compute.AttachNetworkEndpointsGlobalNetworkEndpointGroupRequest,
):
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1142,6 +1137,17 @@ def test_delete_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "network_endpoint_group": "sample2"}
+ request_init["global_network_endpoint_groups_attach_endpoints_request_resource"] = {
+ "network_endpoints": [
+ {
+ "annotations": {},
+ "fqdn": "fqdn_value",
+ "instance": "instance_value",
+ "ip_address": "ip_address_value",
+ "port": 453,
+ }
+ ]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1153,10 +1159,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.attach_network_endpoints_unary(request)
-def test_delete_unary_rest_flattened():
+def test_attach_network_endpoints_unary_rest_flattened():
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1174,6 +1180,11 @@ def test_delete_unary_rest_flattened():
mock_args = dict(
project="project_value",
network_endpoint_group="network_endpoint_group_value",
+ global_network_endpoint_groups_attach_endpoints_request_resource=compute.GlobalNetworkEndpointGroupsAttachEndpointsRequest(
+ network_endpoints=[
+ compute.NetworkEndpoint(annotations={"key_value": "value_value"})
+ ]
+ ),
)
mock_args.update(sample_request)
@@ -1185,20 +1196,20 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.attach_network_endpoints_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/networkEndpointGroups/{network_endpoint_group}"
+ "%s/compute/v1/projects/{project}/global/networkEndpointGroups/{network_endpoint_group}/attachNetworkEndpoints"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_attach_network_endpoints_unary_rest_flattened_error(transport: str = "rest"):
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1207,14 +1218,19 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteGlobalNetworkEndpointGroupRequest(),
+ client.attach_network_endpoints_unary(
+ compute.AttachNetworkEndpointsGlobalNetworkEndpointGroupRequest(),
project="project_value",
network_endpoint_group="network_endpoint_group_value",
+ global_network_endpoint_groups_attach_endpoints_request_resource=compute.GlobalNetworkEndpointGroupsAttachEndpointsRequest(
+ network_endpoints=[
+ compute.NetworkEndpoint(annotations={"key_value": "value_value"})
+ ]
+ ),
)
-def test_delete_unary_rest_error():
+def test_attach_network_endpoints_unary_rest_error():
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1223,11 +1239,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest,
+ compute.DeleteGlobalNetworkEndpointGroupRequest,
dict,
],
)
-def test_detach_network_endpoints_unary_rest(request_type):
+def test_delete_rest(request_type):
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1235,17 +1251,6 @@ def test_detach_network_endpoints_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "network_endpoint_group": "sample2"}
- request_init["global_network_endpoint_groups_detach_endpoints_request_resource"] = {
- "network_endpoints": [
- {
- "annotations": {},
- "fqdn": "fqdn_value",
- "instance": "instance_value",
- "ip_address": "ip_address_value",
- "port": 453,
- }
- ]
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1282,10 +1287,10 @@ def test_detach_network_endpoints_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.detach_network_endpoints_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1310,8 +1315,8 @@ def test_detach_network_endpoints_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_detach_network_endpoints_unary_rest_required_fields(
- request_type=compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest,
+def test_delete_rest_required_fields(
+ request_type=compute.DeleteGlobalNetworkEndpointGroupRequest,
):
transport_class = transports.GlobalNetworkEndpointGroupsRestTransport
@@ -1329,7 +1334,7 @@ def test_detach_network_endpoints_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).detach_network_endpoints._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1339,7 +1344,7 @@ def test_detach_network_endpoints_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).detach_network_endpoints._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -1368,10 +1373,9 @@ def test_detach_network_endpoints_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "delete",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1380,24 +1384,23 @@ def test_detach_network_endpoints_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.detach_network_endpoints_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_detach_network_endpoints_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.GlobalNetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.detach_network_endpoints._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
- "globalNetworkEndpointGroupsDetachEndpointsRequestResource",
"networkEndpointGroup",
"project",
)
@@ -1406,7 +1409,7 @@ def test_detach_network_endpoints_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_detach_network_endpoints_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.GlobalNetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1419,11 +1422,9 @@ def test_detach_network_endpoints_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.GlobalNetworkEndpointGroupsRestInterceptor,
- "post_detach_network_endpoints",
+ transports.GlobalNetworkEndpointGroupsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.GlobalNetworkEndpointGroupsRestInterceptor,
- "pre_detach_network_endpoints",
+ transports.GlobalNetworkEndpointGroupsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1440,7 +1441,7 @@ def test_detach_network_endpoints_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest()
+ request = compute.DeleteGlobalNetworkEndpointGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1448,7 +1449,7 @@ def test_detach_network_endpoints_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.detach_network_endpoints_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1460,9 +1461,1276 @@ def test_detach_network_endpoints_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_detach_network_endpoints_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest",
- request_type=compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest,
+ request_type=compute.DeleteGlobalNetworkEndpointGroupRequest,
+):
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network_endpoint_group": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete(request)
+
+
+def test_delete_rest_flattened():
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "network_endpoint_group": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ network_endpoint_group="network_endpoint_group_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/networkEndpointGroups/{network_endpoint_group}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_rest_flattened_error(transport: str = "rest"):
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete(
+ compute.DeleteGlobalNetworkEndpointGroupRequest(),
+ project="project_value",
+ network_endpoint_group="network_endpoint_group_value",
+ )
+
+
+def test_delete_rest_error():
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DeleteGlobalNetworkEndpointGroupRequest,
+ dict,
+ ],
+)
+def test_delete_unary_rest(request_type):
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network_endpoint_group": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.delete_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteGlobalNetworkEndpointGroupRequest,
+):
+ transport_class = transports.GlobalNetworkEndpointGroupsRestTransport
+
+ request_init = {}
+ request_init["network_endpoint_group"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["networkEndpointGroup"] = "network_endpoint_group_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "networkEndpointGroup" in jsonified_request
+ assert jsonified_request["networkEndpointGroup"] == "network_endpoint_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "delete",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_unary_rest_unset_required_fields():
+ transport = transports.GlobalNetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "networkEndpointGroup",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_unary_rest_interceptors(null_interceptor):
+ transport = transports.GlobalNetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.GlobalNetworkEndpointGroupsRestInterceptor(),
+ )
+ client = GlobalNetworkEndpointGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.GlobalNetworkEndpointGroupsRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.GlobalNetworkEndpointGroupsRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteGlobalNetworkEndpointGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DeleteGlobalNetworkEndpointGroupRequest,
+):
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network_endpoint_group": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete_unary(request)
+
+
+def test_delete_unary_rest_flattened():
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "network_endpoint_group": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ network_endpoint_group="network_endpoint_group_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/networkEndpointGroups/{network_endpoint_group}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete_unary(
+ compute.DeleteGlobalNetworkEndpointGroupRequest(),
+ project="project_value",
+ network_endpoint_group="network_endpoint_group_value",
+ )
+
+
+def test_delete_unary_rest_error():
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest,
+ dict,
+ ],
+)
+def test_detach_network_endpoints_rest(request_type):
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network_endpoint_group": "sample2"}
+ request_init["global_network_endpoint_groups_detach_endpoints_request_resource"] = {
+ "network_endpoints": [
+ {
+ "annotations": {},
+ "fqdn": "fqdn_value",
+ "instance": "instance_value",
+ "ip_address": "ip_address_value",
+ "port": 453,
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.detach_network_endpoints(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_detach_network_endpoints_rest_required_fields(
+ request_type=compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest,
+):
+ transport_class = transports.GlobalNetworkEndpointGroupsRestTransport
+
+ request_init = {}
+ request_init["network_endpoint_group"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).detach_network_endpoints._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["networkEndpointGroup"] = "network_endpoint_group_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).detach_network_endpoints._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "networkEndpointGroup" in jsonified_request
+ assert jsonified_request["networkEndpointGroup"] == "network_endpoint_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.detach_network_endpoints(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_detach_network_endpoints_rest_unset_required_fields():
+ transport = transports.GlobalNetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.detach_network_endpoints._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "globalNetworkEndpointGroupsDetachEndpointsRequestResource",
+ "networkEndpointGroup",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_detach_network_endpoints_rest_interceptors(null_interceptor):
+ transport = transports.GlobalNetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.GlobalNetworkEndpointGroupsRestInterceptor(),
+ )
+ client = GlobalNetworkEndpointGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.GlobalNetworkEndpointGroupsRestInterceptor,
+ "post_detach_network_endpoints",
+ ) as post, mock.patch.object(
+ transports.GlobalNetworkEndpointGroupsRestInterceptor,
+ "pre_detach_network_endpoints",
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.detach_network_endpoints(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_detach_network_endpoints_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest,
+):
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network_endpoint_group": "sample2"}
+ request_init["global_network_endpoint_groups_detach_endpoints_request_resource"] = {
+ "network_endpoints": [
+ {
+ "annotations": {},
+ "fqdn": "fqdn_value",
+ "instance": "instance_value",
+ "ip_address": "ip_address_value",
+ "port": 453,
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.detach_network_endpoints(request)
+
+
+def test_detach_network_endpoints_rest_flattened():
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "network_endpoint_group": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ network_endpoint_group="network_endpoint_group_value",
+ global_network_endpoint_groups_detach_endpoints_request_resource=compute.GlobalNetworkEndpointGroupsDetachEndpointsRequest(
+ network_endpoints=[
+ compute.NetworkEndpoint(annotations={"key_value": "value_value"})
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.detach_network_endpoints(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/networkEndpointGroups/{network_endpoint_group}/detachNetworkEndpoints"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_detach_network_endpoints_rest_flattened_error(transport: str = "rest"):
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.detach_network_endpoints(
+ compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest(),
+ project="project_value",
+ network_endpoint_group="network_endpoint_group_value",
+ global_network_endpoint_groups_detach_endpoints_request_resource=compute.GlobalNetworkEndpointGroupsDetachEndpointsRequest(
+ network_endpoints=[
+ compute.NetworkEndpoint(annotations={"key_value": "value_value"})
+ ]
+ ),
+ )
+
+
+def test_detach_network_endpoints_rest_error():
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest,
+ dict,
+ ],
+)
+def test_detach_network_endpoints_unary_rest(request_type):
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network_endpoint_group": "sample2"}
+ request_init["global_network_endpoint_groups_detach_endpoints_request_resource"] = {
+ "network_endpoints": [
+ {
+ "annotations": {},
+ "fqdn": "fqdn_value",
+ "instance": "instance_value",
+ "ip_address": "ip_address_value",
+ "port": 453,
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.detach_network_endpoints_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_detach_network_endpoints_unary_rest_required_fields(
+ request_type=compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest,
+):
+ transport_class = transports.GlobalNetworkEndpointGroupsRestTransport
+
+ request_init = {}
+ request_init["network_endpoint_group"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).detach_network_endpoints._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["networkEndpointGroup"] = "network_endpoint_group_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).detach_network_endpoints._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "networkEndpointGroup" in jsonified_request
+ assert jsonified_request["networkEndpointGroup"] == "network_endpoint_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.detach_network_endpoints_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_detach_network_endpoints_unary_rest_unset_required_fields():
+ transport = transports.GlobalNetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.detach_network_endpoints._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "globalNetworkEndpointGroupsDetachEndpointsRequestResource",
+ "networkEndpointGroup",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_detach_network_endpoints_unary_rest_interceptors(null_interceptor):
+ transport = transports.GlobalNetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.GlobalNetworkEndpointGroupsRestInterceptor(),
+ )
+ client = GlobalNetworkEndpointGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.GlobalNetworkEndpointGroupsRestInterceptor,
+ "post_detach_network_endpoints",
+ ) as post, mock.patch.object(
+ transports.GlobalNetworkEndpointGroupsRestInterceptor,
+ "pre_detach_network_endpoints",
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.detach_network_endpoints_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_detach_network_endpoints_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest,
+):
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network_endpoint_group": "sample2"}
+ request_init["global_network_endpoint_groups_detach_endpoints_request_resource"] = {
+ "network_endpoints": [
+ {
+ "annotations": {},
+ "fqdn": "fqdn_value",
+ "instance": "instance_value",
+ "ip_address": "ip_address_value",
+ "port": 453,
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.detach_network_endpoints_unary(request)
+
+
+def test_detach_network_endpoints_unary_rest_flattened():
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "network_endpoint_group": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ network_endpoint_group="network_endpoint_group_value",
+ global_network_endpoint_groups_detach_endpoints_request_resource=compute.GlobalNetworkEndpointGroupsDetachEndpointsRequest(
+ network_endpoints=[
+ compute.NetworkEndpoint(annotations={"key_value": "value_value"})
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.detach_network_endpoints_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/networkEndpointGroups/{network_endpoint_group}/detachNetworkEndpoints"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_detach_network_endpoints_unary_rest_flattened_error(transport: str = "rest"):
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.detach_network_endpoints_unary(
+ compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest(),
+ project="project_value",
+ network_endpoint_group="network_endpoint_group_value",
+ global_network_endpoint_groups_detach_endpoints_request_resource=compute.GlobalNetworkEndpointGroupsDetachEndpointsRequest(
+ network_endpoints=[
+ compute.NetworkEndpoint(annotations={"key_value": "value_value"})
+ ]
+ ),
+ )
+
+
+def test_detach_network_endpoints_unary_rest_error():
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetGlobalNetworkEndpointGroupRequest,
+ dict,
+ ],
+)
+def test_get_rest(request_type):
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network_endpoint_group": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NetworkEndpointGroup(
+ creation_timestamp="creation_timestamp_value",
+ default_port=1289,
+ description="description_value",
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ network="network_value",
+ network_endpoint_type="network_endpoint_type_value",
+ psc_target_service="psc_target_service_value",
+ region="region_value",
+ self_link="self_link_value",
+ size=443,
+ subnetwork="subnetwork_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.NetworkEndpointGroup)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.default_port == 1289
+ assert response.description == "description_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.network == "network_value"
+ assert response.network_endpoint_type == "network_endpoint_type_value"
+ assert response.psc_target_service == "psc_target_service_value"
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.size == 443
+ assert response.subnetwork == "subnetwork_value"
+ assert response.zone == "zone_value"
+
+
+def test_get_rest_required_fields(
+ request_type=compute.GetGlobalNetworkEndpointGroupRequest,
+):
+ transport_class = transports.GlobalNetworkEndpointGroupsRestTransport
+
+ request_init = {}
+ request_init["network_endpoint_group"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["networkEndpointGroup"] = "network_endpoint_group_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "networkEndpointGroup" in jsonified_request
+ assert jsonified_request["networkEndpointGroup"] == "network_endpoint_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = GlobalNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NetworkEndpointGroup()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.GlobalNetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "networkEndpointGroup",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.GlobalNetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.GlobalNetworkEndpointGroupsRestInterceptor(),
+ )
+ client = GlobalNetworkEndpointGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.GlobalNetworkEndpointGroupsRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.GlobalNetworkEndpointGroupsRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.NetworkEndpointGroup.to_json(
+ compute.NetworkEndpointGroup()
+ )
+
+ request = compute.GetGlobalNetworkEndpointGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.NetworkEndpointGroup
+
+ client.get(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetGlobalNetworkEndpointGroupRequest
):
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1471,17 +2739,6 @@ def test_detach_network_endpoints_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "network_endpoint_group": "sample2"}
- request_init["global_network_endpoint_groups_detach_endpoints_request_resource"] = {
- "network_endpoints": [
- {
- "annotations": {},
- "fqdn": "fqdn_value",
- "instance": "instance_value",
- "ip_address": "ip_address_value",
- "port": 453,
- }
- ]
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1493,10 +2750,10 @@ def test_detach_network_endpoints_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.detach_network_endpoints_unary(request)
+ client.get(request)
-def test_detach_network_endpoints_unary_rest_flattened():
+def test_get_rest_flattened():
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1505,7 +2762,7 @@ def test_detach_network_endpoints_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.NetworkEndpointGroup()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "network_endpoint_group": "sample2"}
@@ -1514,36 +2771,31 @@ def test_detach_network_endpoints_unary_rest_flattened():
mock_args = dict(
project="project_value",
network_endpoint_group="network_endpoint_group_value",
- global_network_endpoint_groups_detach_endpoints_request_resource=compute.GlobalNetworkEndpointGroupsDetachEndpointsRequest(
- network_endpoints=[
- compute.NetworkEndpoint(annotations={"key_value": "value_value"})
- ]
- ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.detach_network_endpoints_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/networkEndpointGroups/{network_endpoint_group}/detachNetworkEndpoints"
+ "%s/compute/v1/projects/{project}/global/networkEndpointGroups/{network_endpoint_group}"
% client.transport._host,
args[1],
)
-def test_detach_network_endpoints_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1552,19 +2804,14 @@ def test_detach_network_endpoints_unary_rest_flattened_error(transport: str = "r
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.detach_network_endpoints_unary(
- compute.DetachNetworkEndpointsGlobalNetworkEndpointGroupRequest(),
+ client.get(
+ compute.GetGlobalNetworkEndpointGroupRequest(),
project="project_value",
network_endpoint_group="network_endpoint_group_value",
- global_network_endpoint_groups_detach_endpoints_request_resource=compute.GlobalNetworkEndpointGroupsDetachEndpointsRequest(
- network_endpoints=[
- compute.NetworkEndpoint(annotations={"key_value": "value_value"})
- ]
- ),
)
-def test_detach_network_endpoints_unary_rest_error():
+def test_get_rest_error():
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1573,73 +2820,116 @@ def test_detach_network_endpoints_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetGlobalNetworkEndpointGroupRequest,
+ compute.InsertGlobalNetworkEndpointGroupRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_insert_rest(request_type):
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "network_endpoint_group": "sample2"}
+ request_init = {"project": "sample1"}
+ request_init["network_endpoint_group_resource"] = {
+ "annotations": {},
+ "app_engine": {
+ "service": "service_value",
+ "url_mask": "url_mask_value",
+ "version": "version_value",
+ },
+ "cloud_function": {"function": "function_value", "url_mask": "url_mask_value"},
+ "cloud_run": {
+ "service": "service_value",
+ "tag": "tag_value",
+ "url_mask": "url_mask_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "default_port": 1289,
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_endpoint_type": "network_endpoint_type_value",
+ "psc_target_service": "psc_target_service_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "subnetwork": "subnetwork_value",
+ "zone": "zone_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NetworkEndpointGroup(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
- default_port=1289,
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- network="network_value",
- network_endpoint_type="network_endpoint_type_value",
- psc_target_service="psc_target_service_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- size=443,
- subnetwork="subnetwork_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.NetworkEndpointGroup)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
- assert response.default_port == 1289
assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.network == "network_value"
- assert response.network_endpoint_type == "network_endpoint_type_value"
- assert response.psc_target_service == "psc_target_service_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.size == 443
- assert response.subnetwork == "subnetwork_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
assert response.zone == "zone_value"
-def test_get_rest_required_fields(
- request_type=compute.GetGlobalNetworkEndpointGroupRequest,
+def test_insert_rest_required_fields(
+ request_type=compute.InsertGlobalNetworkEndpointGroupRequest,
):
transport_class = transports.GlobalNetworkEndpointGroupsRestTransport
request_init = {}
- request_init["network_endpoint_group"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1652,22 +2942,21 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["networkEndpointGroup"] = "network_endpoint_group_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "networkEndpointGroup" in jsonified_request
- assert jsonified_request["networkEndpointGroup"] == "network_endpoint_group_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -1678,7 +2967,7 @@ def test_get_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.NetworkEndpointGroup()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1689,35 +2978,36 @@ def test_get_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.GlobalNetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
- "networkEndpointGroup",
+ "networkEndpointGroupResource",
"project",
)
)
@@ -1725,7 +3015,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.GlobalNetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1738,9 +3028,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.GlobalNetworkEndpointGroupsRestInterceptor, "post_get"
+ transports.GlobalNetworkEndpointGroupsRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.GlobalNetworkEndpointGroupsRestInterceptor, "pre_get"
+ transports.GlobalNetworkEndpointGroupsRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1755,19 +3045,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.NetworkEndpointGroup.to_json(
- compute.NetworkEndpointGroup()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetGlobalNetworkEndpointGroupRequest()
+ request = compute.InsertGlobalNetworkEndpointGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.NetworkEndpointGroup
+ post.return_value = compute.Operation
- client.get(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1779,8 +3067,9 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetGlobalNetworkEndpointGroupRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.InsertGlobalNetworkEndpointGroupRequest,
):
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1788,7 +3077,35 @@ def test_get_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "network_endpoint_group": "sample2"}
+ request_init = {"project": "sample1"}
+ request_init["network_endpoint_group_resource"] = {
+ "annotations": {},
+ "app_engine": {
+ "service": "service_value",
+ "url_mask": "url_mask_value",
+ "version": "version_value",
+ },
+ "cloud_function": {"function": "function_value", "url_mask": "url_mask_value"},
+ "cloud_run": {
+ "service": "service_value",
+ "tag": "tag_value",
+ "url_mask": "url_mask_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "default_port": 1289,
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_endpoint_type": "network_endpoint_type_value",
+ "psc_target_service": "psc_target_service_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "subnetwork": "subnetwork_value",
+ "zone": "zone_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1800,10 +3117,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.insert(request)
-def test_get_rest_flattened():
+def test_insert_rest_flattened():
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1812,40 +3129,42 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NetworkEndpointGroup()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "network_endpoint_group": "sample2"}
+ sample_request = {"project": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- network_endpoint_group="network_endpoint_group_value",
+ network_endpoint_group_resource=compute.NetworkEndpointGroup(
+ annotations={"key_value": "value_value"}
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/networkEndpointGroups/{network_endpoint_group}"
+ "%s/compute/v1/projects/{project}/global/networkEndpointGroups"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1854,14 +3173,16 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetGlobalNetworkEndpointGroupRequest(),
+ client.insert(
+ compute.InsertGlobalNetworkEndpointGroupRequest(),
project="project_value",
- network_endpoint_group="network_endpoint_group_value",
+ network_endpoint_group_resource=compute.NetworkEndpointGroup(
+ annotations={"key_value": "value_value"}
+ ),
)
-def test_get_rest_error():
+def test_insert_rest_error():
client = GlobalNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1950,28 +3271,6 @@ def test_insert_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_insert_unary_rest_required_fields(
@@ -3016,6 +4315,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = GlobalNetworkEndpointGroupsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_global_network_endpoint_groups_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3053,6 +4365,14 @@ def test_global_network_endpoint_groups_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_global_network_endpoint_groups_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_global_operations.py b/tests/unit/gapic/compute_v1/test_global_operations.py
index b37135b31..9ea6c1c83 100644
--- a/tests/unit/gapic/compute_v1/test_global_operations.py
+++ b/tests/unit/gapic/compute_v1/test_global_operations.py
@@ -2188,6 +2188,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = GlobalOperationsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_global_operations_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2223,6 +2236,14 @@ def test_global_operations_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_global_operations_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_global_organization_operations.py b/tests/unit/gapic/compute_v1/test_global_organization_operations.py
index ac02a0e57..1f6f1e3fb 100644
--- a/tests/unit/gapic/compute_v1/test_global_organization_operations.py
+++ b/tests/unit/gapic/compute_v1/test_global_organization_operations.py
@@ -1379,6 +1379,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = GlobalOrganizationOperationsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_global_organization_operations_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -1412,6 +1425,14 @@ def test_global_organization_operations_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_global_organization_operations_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_global_public_delegated_prefixes.py b/tests/unit/gapic/compute_v1/test_global_public_delegated_prefixes.py
index 0aae3cd08..62ea3ffaf 100644
--- a/tests/unit/gapic/compute_v1/test_global_public_delegated_prefixes.py
+++ b/tests/unit/gapic/compute_v1/test_global_public_delegated_prefixes.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -565,7 +567,7 @@ def test_global_public_delegated_prefixes_client_client_options_credentials_file
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -609,10 +611,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -637,7 +639,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteGlobalPublicDelegatedPrefixeRequest,
):
transport_class = transports.GlobalPublicDelegatedPrefixesRestTransport
@@ -706,14 +708,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.GlobalPublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -731,7 +733,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.GlobalPublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -771,7 +773,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -783,7 +785,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest",
request_type=compute.DeleteGlobalPublicDelegatedPrefixeRequest,
):
@@ -805,10 +807,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -837,7 +839,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -850,7 +852,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -859,14 +861,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteGlobalPublicDelegatedPrefixeRequest(),
project="project_value",
public_delegated_prefix="public_delegated_prefix_value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -875,11 +877,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetGlobalPublicDelegatedPrefixeRequest,
+ compute.DeleteGlobalPublicDelegatedPrefixeRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -892,47 +894,45 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PublicDelegatedPrefix(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
- ip_cidr_range="ip_cidr_range_value",
- is_live_migration=True,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- parent_prefix="parent_prefix_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- status="status_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicDelegatedPrefix.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.PublicDelegatedPrefix)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.ip_cidr_range == "ip_cidr_range_value"
- assert response.is_live_migration is True
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.parent_prefix == "parent_prefix_value"
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.status == "status_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(
- request_type=compute.GetGlobalPublicDelegatedPrefixeRequest,
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteGlobalPublicDelegatedPrefixeRequest,
):
transport_class = transports.GlobalPublicDelegatedPrefixesRestTransport
@@ -950,7 +950,7 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -960,7 +960,9 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -976,7 +978,7 @@ def test_get_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.PublicDelegatedPrefix()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -987,32 +989,32 @@ def test_get_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicDelegatedPrefix.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.GlobalPublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -1023,7 +1025,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.GlobalPublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1036,9 +1038,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.GlobalPublicDelegatedPrefixesRestInterceptor, "post_get"
+ transports.GlobalPublicDelegatedPrefixesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.GlobalPublicDelegatedPrefixesRestInterceptor, "pre_get"
+ transports.GlobalPublicDelegatedPrefixesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1053,19 +1055,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.PublicDelegatedPrefix.to_json(
- compute.PublicDelegatedPrefix()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetGlobalPublicDelegatedPrefixeRequest()
+ request = compute.DeleteGlobalPublicDelegatedPrefixeRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.PublicDelegatedPrefix
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1077,8 +1077,9 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetGlobalPublicDelegatedPrefixeRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DeleteGlobalPublicDelegatedPrefixeRequest,
):
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1098,10 +1099,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1110,7 +1111,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PublicDelegatedPrefix()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "public_delegated_prefix": "sample2"}
@@ -1125,12 +1126,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicDelegatedPrefix.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1143,7 +1144,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1152,14 +1153,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetGlobalPublicDelegatedPrefixeRequest(),
+ client.delete_unary(
+ compute.DeleteGlobalPublicDelegatedPrefixeRequest(),
project="project_value",
public_delegated_prefix="public_delegated_prefix_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1168,114 +1169,70 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertGlobalPublicDelegatedPrefixeRequest,
+ compute.GetGlobalPublicDelegatedPrefixeRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["public_delegated_prefix_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "ip_cidr_range": "ip_cidr_range_value",
- "is_live_migration": True,
- "kind": "kind_value",
- "name": "name_value",
- "parent_prefix": "parent_prefix_value",
- "public_delegated_sub_prefixs": [
- {
- "delegatee_project": "delegatee_project_value",
- "description": "description_value",
- "ip_cidr_range": "ip_cidr_range_value",
- "is_address": True,
- "name": "name_value",
- "region": "region_value",
- "status": "status_value",
- }
- ],
- "region": "region_value",
- "self_link": "self_link_value",
- "status": "status_value",
- }
+ request_init = {"project": "sample1", "public_delegated_prefix": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.PublicDelegatedPrefix(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
+ ip_cidr_range="ip_cidr_range_value",
+ is_live_migration=True,
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ parent_prefix="parent_prefix_value",
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ status="status_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.PublicDelegatedPrefix.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.PublicDelegatedPrefix)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert response.ip_cidr_range == "ip_cidr_range_value"
+ assert response.is_live_migration is True
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.parent_prefix == "parent_prefix_value"
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.status == "status_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertGlobalPublicDelegatedPrefixeRequest,
+def test_get_rest_required_fields(
+ request_type=compute.GetGlobalPublicDelegatedPrefixeRequest,
):
transport_class = transports.GlobalPublicDelegatedPrefixesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["public_delegated_prefix"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1287,23 +1244,24 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["publicDelegatedPrefix"] = "public_delegated_prefix_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "publicDelegatedPrefix" in jsonified_request
+ assert jsonified_request["publicDelegatedPrefix"] == "public_delegated_prefix_value"
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1312,7 +1270,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.PublicDelegatedPrefix()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1323,44 +1281,43 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.PublicDelegatedPrefix.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.GlobalPublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"project",
- "publicDelegatedPrefixResource",
+ "publicDelegatedPrefix",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.GlobalPublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1373,9 +1330,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.GlobalPublicDelegatedPrefixesRestInterceptor, "post_insert"
+ transports.GlobalPublicDelegatedPrefixesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.GlobalPublicDelegatedPrefixesRestInterceptor, "pre_insert"
+ transports.GlobalPublicDelegatedPrefixesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1390,17 +1347,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.PublicDelegatedPrefix.to_json(
+ compute.PublicDelegatedPrefix()
+ )
- request = compute.InsertGlobalPublicDelegatedPrefixeRequest()
+ request = compute.GetGlobalPublicDelegatedPrefixeRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.PublicDelegatedPrefix
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1412,9 +1371,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest",
- request_type=compute.InsertGlobalPublicDelegatedPrefixeRequest,
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetGlobalPublicDelegatedPrefixeRequest
):
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1422,9 +1380,688 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["public_delegated_prefix_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
+ request_init = {"project": "sample1", "public_delegated_prefix": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.PublicDelegatedPrefix()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "public_delegated_prefix": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ public_delegated_prefix="public_delegated_prefix_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.PublicDelegatedPrefix.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/publicDelegatedPrefixes/{public_delegated_prefix}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetGlobalPublicDelegatedPrefixeRequest(),
+ project="project_value",
+ public_delegated_prefix="public_delegated_prefix_value",
+ )
+
+
+def test_get_rest_error():
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertGlobalPublicDelegatedPrefixeRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["public_delegated_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_live_migration": True,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent_prefix": "parent_prefix_value",
+ "public_delegated_sub_prefixs": [
+ {
+ "delegatee_project": "delegatee_project_value",
+ "description": "description_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_address": True,
+ "name": "name_value",
+ "region": "region_value",
+ "status": "status_value",
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertGlobalPublicDelegatedPrefixeRequest,
+):
+ transport_class = transports.GlobalPublicDelegatedPrefixesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.GlobalPublicDelegatedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "publicDelegatedPrefixResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.GlobalPublicDelegatedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.GlobalPublicDelegatedPrefixesRestInterceptor(),
+ )
+ client = GlobalPublicDelegatedPrefixesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.GlobalPublicDelegatedPrefixesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.GlobalPublicDelegatedPrefixesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertGlobalPublicDelegatedPrefixeRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.InsertGlobalPublicDelegatedPrefixeRequest,
+):
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["public_delegated_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_live_migration": True,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent_prefix": "parent_prefix_value",
+ "public_delegated_sub_prefixs": [
+ {
+ "delegatee_project": "delegatee_project_value",
+ "description": "description_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_address": True,
+ "name": "name_value",
+ "region": "region_value",
+ "status": "status_value",
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/publicDelegatedPrefixes"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertGlobalPublicDelegatedPrefixeRequest(),
+ project="project_value",
+ public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertGlobalPublicDelegatedPrefixeRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["public_delegated_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_live_migration": True,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent_prefix": "parent_prefix_value",
+ "public_delegated_sub_prefixs": [
+ {
+ "delegatee_project": "delegatee_project_value",
+ "description": "description_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_address": True,
+ "name": "name_value",
+ "region": "region_value",
+ "status": "status_value",
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertGlobalPublicDelegatedPrefixeRequest,
+):
+ transport_class = transports.GlobalPublicDelegatedPrefixesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.GlobalPublicDelegatedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "publicDelegatedPrefixResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.GlobalPublicDelegatedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.GlobalPublicDelegatedPrefixesRestInterceptor(),
+ )
+ client = GlobalPublicDelegatedPrefixesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.GlobalPublicDelegatedPrefixesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.GlobalPublicDelegatedPrefixesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertGlobalPublicDelegatedPrefixeRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.InsertGlobalPublicDelegatedPrefixeRequest,
+):
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["public_delegated_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
"description": "description_value",
"fingerprint": "fingerprint_value",
"id": 205,
@@ -1443,11 +2080,302 @@ def test_insert_unary_rest_bad_request(
"region": "region_value",
"status": "status_value",
}
- ],
- "region": "region_value",
- "self_link": "self_link_value",
- "status": "status_value",
- }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/publicDelegatedPrefixes"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertGlobalPublicDelegatedPrefixeRequest(),
+ project="project_value",
+ public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListGlobalPublicDelegatedPrefixesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.PublicDelegatedPrefixList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.PublicDelegatedPrefixList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(
+ request_type=compute.ListGlobalPublicDelegatedPrefixesRequest,
+):
+ transport_class = transports.GlobalPublicDelegatedPrefixesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.PublicDelegatedPrefixList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.PublicDelegatedPrefixList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.GlobalPublicDelegatedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.GlobalPublicDelegatedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.GlobalPublicDelegatedPrefixesRestInterceptor(),
+ )
+ client = GlobalPublicDelegatedPrefixesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.GlobalPublicDelegatedPrefixesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.GlobalPublicDelegatedPrefixesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.PublicDelegatedPrefixList.to_json(
+ compute.PublicDelegatedPrefixList()
+ )
+
+ request = compute.ListGlobalPublicDelegatedPrefixesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.PublicDelegatedPrefixList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.ListGlobalPublicDelegatedPrefixesRequest,
+):
+ client = GlobalPublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1459,10 +2387,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.list(request)
-def test_insert_unary_rest_flattened():
+def test_list_rest_flattened():
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1471,7 +2399,7 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.PublicDelegatedPrefixList()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1"}
@@ -1479,21 +2407,18 @@ def test_insert_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
- creation_timestamp="creation_timestamp_value"
- ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.PublicDelegatedPrefixList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.list(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1506,7 +2431,7 @@ def test_insert_unary_rest_flattened():
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_list_rest_flattened_error(transport: str = "rest"):
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1515,71 +2440,185 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertGlobalPublicDelegatedPrefixeRequest(),
+ client.list(
+ compute.ListGlobalPublicDelegatedPrefixesRequest(),
project="project_value",
- public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
- creation_timestamp="creation_timestamp_value"
- ),
)
-def test_insert_unary_rest_error():
+def test_list_rest_pager(transport: str = "rest"):
client = GlobalPublicDelegatedPrefixesClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
)
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.PublicDelegatedPrefixList(
+ items=[
+ compute.PublicDelegatedPrefix(),
+ compute.PublicDelegatedPrefix(),
+ compute.PublicDelegatedPrefix(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.PublicDelegatedPrefixList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.PublicDelegatedPrefixList(
+ items=[
+ compute.PublicDelegatedPrefix(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.PublicDelegatedPrefixList(
+ items=[
+ compute.PublicDelegatedPrefix(),
+ compute.PublicDelegatedPrefix(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.PublicDelegatedPrefixList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.PublicDelegatedPrefix) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
@pytest.mark.parametrize(
"request_type",
[
- compute.ListGlobalPublicDelegatedPrefixesRequest,
+ compute.PatchGlobalPublicDelegatedPrefixeRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_patch_rest(request_type):
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "public_delegated_prefix": "sample2"}
+ request_init["public_delegated_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_live_migration": True,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent_prefix": "parent_prefix_value",
+ "public_delegated_sub_prefixs": [
+ {
+ "delegatee_project": "delegatee_project_value",
+ "description": "description_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_address": True,
+ "name": "name_value",
+ "region": "region_value",
+ "status": "status_value",
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PublicDelegatedPrefixList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicDelegatedPrefixList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(
- request_type=compute.ListGlobalPublicDelegatedPrefixesRequest,
+def test_patch_rest_required_fields(
+ request_type=compute.PatchGlobalPublicDelegatedPrefixeRequest,
):
transport_class = transports.GlobalPublicDelegatedPrefixesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["public_delegated_prefix"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1591,31 +2630,26 @@ def test_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["publicDelegatedPrefix"] = "public_delegated_prefix_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "publicDelegatedPrefix" in jsonified_request
+ assert jsonified_request["publicDelegatedPrefix"] == "public_delegated_prefix_value"
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1624,7 +2658,7 @@ def test_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.PublicDelegatedPrefixList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1635,46 +2669,45 @@ def test_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicDelegatedPrefixList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_rest_unset_required_fields():
transport = transports.GlobalPublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "project",
+ "publicDelegatedPrefix",
+ "publicDelegatedPrefixResource",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.GlobalPublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1687,9 +2720,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.GlobalPublicDelegatedPrefixesRestInterceptor, "post_list"
+ transports.GlobalPublicDelegatedPrefixesRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.GlobalPublicDelegatedPrefixesRestInterceptor, "pre_list"
+ transports.GlobalPublicDelegatedPrefixesRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1704,19 +2737,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.PublicDelegatedPrefixList.to_json(
- compute.PublicDelegatedPrefixList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListGlobalPublicDelegatedPrefixesRequest()
+ request = compute.PatchGlobalPublicDelegatedPrefixeRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.PublicDelegatedPrefixList
+ post.return_value = compute.Operation
- client.list(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -1728,9 +2759,9 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
+def test_patch_rest_bad_request(
transport: str = "rest",
- request_type=compute.ListGlobalPublicDelegatedPrefixesRequest,
+ request_type=compute.PatchGlobalPublicDelegatedPrefixeRequest,
):
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1738,7 +2769,32 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "public_delegated_prefix": "sample2"}
+ request_init["public_delegated_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_live_migration": True,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent_prefix": "parent_prefix_value",
+ "public_delegated_sub_prefixs": [
+ {
+ "delegatee_project": "delegatee_project_value",
+ "description": "description_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_address": True,
+ "name": "name_value",
+ "region": "region_value",
+ "status": "status_value",
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1750,10 +2806,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch(request)
-def test_list_rest_flattened():
+def test_patch_rest_flattened():
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1762,39 +2818,43 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PublicDelegatedPrefixList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "public_delegated_prefix": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ public_delegated_prefix="public_delegated_prefix_value",
+ public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicDelegatedPrefixList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/publicDelegatedPrefixes"
+ "%s/compute/v1/projects/{project}/global/publicDelegatedPrefixes/{public_delegated_prefix}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = GlobalPublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1803,72 +2863,21 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListGlobalPublicDelegatedPrefixesRequest(),
+ client.patch(
+ compute.PatchGlobalPublicDelegatedPrefixeRequest(),
project="project_value",
+ public_delegated_prefix="public_delegated_prefix_value",
+ public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_rest_error():
client = GlobalPublicDelegatedPrefixesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.PublicDelegatedPrefixList(
- items=[
- compute.PublicDelegatedPrefix(),
- compute.PublicDelegatedPrefix(),
- compute.PublicDelegatedPrefix(),
- ],
- next_page_token="abc",
- ),
- compute.PublicDelegatedPrefixList(
- items=[],
- next_page_token="def",
- ),
- compute.PublicDelegatedPrefixList(
- items=[
- compute.PublicDelegatedPrefix(),
- ],
- next_page_token="ghi",
- ),
- compute.PublicDelegatedPrefixList(
- items=[
- compute.PublicDelegatedPrefix(),
- compute.PublicDelegatedPrefix(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.PublicDelegatedPrefixList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.PublicDelegatedPrefix) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
@@ -1950,28 +2959,6 @@ def test_patch_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_patch_unary_rest_required_fields(
@@ -2317,6 +3304,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = GlobalPublicDelegatedPrefixesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_global_public_delegated_prefixes_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2352,6 +3352,14 @@ def test_global_public_delegated_prefixes_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_global_public_delegated_prefixes_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_health_checks.py b/tests/unit/gapic/compute_v1/test_health_checks.py
index cc255411c..36872af97 100644
--- a/tests/unit/gapic/compute_v1/test_health_checks.py
+++ b/tests/unit/gapic/compute_v1/test_health_checks.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -873,7 +875,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -917,10 +919,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -945,9 +947,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteHealthCheckRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteHealthCheckRequest):
transport_class = transports.HealthChecksRestTransport
request_init = {}
@@ -1014,14 +1014,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.HealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1039,7 +1039,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.HealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1079,7 +1079,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1091,7 +1091,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteHealthCheckRequest
):
client = HealthChecksClient(
@@ -1112,10 +1112,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1144,7 +1144,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1157,7 +1157,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1166,14 +1166,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteHealthCheckRequest(),
project="project_value",
health_check="health_check_value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1182,11 +1182,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetHealthCheckRequest,
+ compute.DeleteHealthCheckRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1199,46 +1199,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheck(
- check_interval_sec=1884,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- healthy_threshold=1819,
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- timeout_sec=1185,
- type_="type__value",
- unhealthy_threshold=2046,
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheck.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.HealthCheck)
- assert response.check_interval_sec == 1884
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.healthy_threshold == 1819
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.timeout_sec == 1185
- assert response.type_ == "type__value"
- assert response.unhealthy_threshold == 2046
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetHealthCheckRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteHealthCheckRequest,
+):
transport_class = transports.HealthChecksRestTransport
request_init = {}
@@ -1255,7 +1255,7 @@ def test_get_rest_required_fields(request_type=compute.GetHealthCheckRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1265,7 +1265,9 @@ def test_get_rest_required_fields(request_type=compute.GetHealthCheckRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1281,7 +1283,7 @@ def test_get_rest_required_fields(request_type=compute.GetHealthCheckRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheck()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1292,32 +1294,32 @@ def test_get_rest_required_fields(request_type=compute.GetHealthCheckRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheck.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.HealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"healthCheck",
@@ -1328,7 +1330,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.HealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1341,9 +1343,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.HealthChecksRestInterceptor, "post_get"
+ transports.HealthChecksRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.HealthChecksRestInterceptor, "pre_get"
+ transports.HealthChecksRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1358,17 +1360,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.HealthCheck.to_json(compute.HealthCheck())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetHealthCheckRequest()
+ request = compute.DeleteHealthCheckRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.HealthCheck
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1380,8 +1382,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetHealthCheckRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteHealthCheckRequest
):
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1401,10 +1403,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1413,7 +1415,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheck()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "health_check": "sample2"}
@@ -1428,12 +1430,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheck.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1446,7 +1448,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1455,14 +1457,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetHealthCheckRequest(),
+ client.delete_unary(
+ compute.DeleteHealthCheckRequest(),
project="project_value",
health_check="health_check_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1471,152 +1473,67 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertHealthCheckRequest,
+ compute.GetHealthCheckRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["health_check_resource"] = {
- "check_interval_sec": 1884,
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "grpc_health_check": {
- "grpc_service_name": "grpc_service_name_value",
- "port": 453,
- "port_name": "port_name_value",
- "port_specification": "port_specification_value",
- },
- "healthy_threshold": 1819,
- "http2_health_check": {
- "host": "host_value",
- "port": 453,
- "port_name": "port_name_value",
- "port_specification": "port_specification_value",
- "proxy_header": "proxy_header_value",
- "request_path": "request_path_value",
- "response": "response_value",
- },
- "http_health_check": {
- "host": "host_value",
- "port": 453,
- "port_name": "port_name_value",
- "port_specification": "port_specification_value",
- "proxy_header": "proxy_header_value",
- "request_path": "request_path_value",
- "response": "response_value",
- },
- "https_health_check": {
- "host": "host_value",
- "port": 453,
- "port_name": "port_name_value",
- "port_specification": "port_specification_value",
- "proxy_header": "proxy_header_value",
- "request_path": "request_path_value",
- "response": "response_value",
- },
- "id": 205,
- "kind": "kind_value",
- "log_config": {"enable": True},
- "name": "name_value",
- "region": "region_value",
- "self_link": "self_link_value",
- "ssl_health_check": {
- "port": 453,
- "port_name": "port_name_value",
- "port_specification": "port_specification_value",
- "proxy_header": "proxy_header_value",
- "request": "request_value",
- "response": "response_value",
- },
- "tcp_health_check": {
- "port": 453,
- "port_name": "port_name_value",
- "port_specification": "port_specification_value",
- "proxy_header": "proxy_header_value",
- "request": "request_value",
- "response": "response_value",
- },
- "timeout_sec": 1185,
- "type_": "type__value",
- "unhealthy_threshold": 2046,
- }
+ request_init = {"project": "sample1", "health_check": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.HealthCheck(
+ check_interval_sec=1884,
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ healthy_threshold=1819,
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ timeout_sec=1185,
+ type_="type__value",
+ unhealthy_threshold=2046,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.HealthCheck.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.HealthCheck)
+ assert response.check_interval_sec == 1884
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.healthy_threshold == 1819
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.timeout_sec == 1185
+ assert response.type_ == "type__value"
+ assert response.unhealthy_threshold == 2046
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertHealthCheckRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetHealthCheckRequest):
transport_class = transports.HealthChecksRestTransport
request_init = {}
+ request_init["health_check"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1629,21 +1546,22 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["healthCheck"] = "health_check_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "healthCheck" in jsonified_request
+ assert jsonified_request["healthCheck"] == "health_check_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -1654,7 +1572,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.HealthCheck()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1665,7 +1583,1571 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.HealthCheck.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.HealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "healthCheck",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.HealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.HealthChecksRestInterceptor(),
+ )
+ client = HealthChecksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.HealthChecksRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.HealthChecksRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.HealthCheck.to_json(compute.HealthCheck())
+
+ request = compute.GetHealthCheckRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.HealthCheck
+
+ client.get(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetHealthCheckRequest
+):
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "health_check": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.HealthCheck()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "health_check": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ health_check="health_check_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.HealthCheck.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/healthChecks/{health_check}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetHealthCheckRequest(),
+ project="project_value",
+ health_check="health_check_value",
+ )
+
+
+def test_get_rest_error():
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertHealthCheckRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["health_check_resource"] = {
+ "check_interval_sec": 1884,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_health_check": {
+ "grpc_service_name": "grpc_service_name_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ },
+ "healthy_threshold": 1819,
+ "http2_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "http_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "https_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True},
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "ssl_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "tcp_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "timeout_sec": 1185,
+ "type_": "type__value",
+ "unhealthy_threshold": 2046,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertHealthCheckRequest):
+ transport_class = transports.HealthChecksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.HealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "healthCheckResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.HealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.HealthChecksRestInterceptor(),
+ )
+ client = HealthChecksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.HealthChecksRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.HealthChecksRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertHealthCheckRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertHealthCheckRequest
+):
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["health_check_resource"] = {
+ "check_interval_sec": 1884,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_health_check": {
+ "grpc_service_name": "grpc_service_name_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ },
+ "healthy_threshold": 1819,
+ "http2_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "http_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "https_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True},
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "ssl_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "tcp_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "timeout_sec": 1185,
+ "type_": "type__value",
+ "unhealthy_threshold": 2046,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ health_check_resource=compute.HealthCheck(check_interval_sec=1884),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/healthChecks"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertHealthCheckRequest(),
+ project="project_value",
+ health_check_resource=compute.HealthCheck(check_interval_sec=1884),
+ )
+
+
+def test_insert_rest_error():
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertHealthCheckRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["health_check_resource"] = {
+ "check_interval_sec": 1884,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_health_check": {
+ "grpc_service_name": "grpc_service_name_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ },
+ "healthy_threshold": 1819,
+ "http2_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "http_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "https_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True},
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "ssl_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "tcp_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "timeout_sec": 1185,
+ "type_": "type__value",
+ "unhealthy_threshold": 2046,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertHealthCheckRequest,
+):
+ transport_class = transports.HealthChecksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.HealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "healthCheckResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.HealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.HealthChecksRestInterceptor(),
+ )
+ client = HealthChecksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.HealthChecksRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.HealthChecksRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertHealthCheckRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertHealthCheckRequest
+):
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["health_check_resource"] = {
+ "check_interval_sec": 1884,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_health_check": {
+ "grpc_service_name": "grpc_service_name_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ },
+ "healthy_threshold": 1819,
+ "http2_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "http_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "https_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True},
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "ssl_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "tcp_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "timeout_sec": 1185,
+ "type_": "type__value",
+ "unhealthy_threshold": 2046,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ health_check_resource=compute.HealthCheck(check_interval_sec=1884),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/healthChecks"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertHealthCheckRequest(),
+ project="project_value",
+ health_check_resource=compute.HealthCheck(check_interval_sec=1884),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListHealthChecksRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.HealthCheckList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.HealthCheckList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListHealthChecksRequest):
+ transport_class = transports.HealthChecksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.HealthCheckList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.HealthCheckList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.HealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.HealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.HealthChecksRestInterceptor(),
+ )
+ client = HealthChecksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.HealthChecksRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.HealthChecksRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.HealthCheckList.to_json(
+ compute.HealthCheckList()
+ )
+
+ request = compute.ListHealthChecksRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.HealthCheckList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListHealthChecksRequest
+):
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.HealthCheckList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.HealthCheckList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/healthChecks"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListHealthChecksRequest(),
+ project="project_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.HealthCheckList(
+ items=[
+ compute.HealthCheck(),
+ compute.HealthCheck(),
+ compute.HealthCheck(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.HealthCheckList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.HealthCheckList(
+ items=[
+ compute.HealthCheck(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.HealthCheckList(
+ items=[
+ compute.HealthCheck(),
+ compute.HealthCheck(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.HealthCheckList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.HealthCheck) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchHealthCheckRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "health_check": "sample2"}
+ request_init["health_check_resource"] = {
+ "check_interval_sec": 1884,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_health_check": {
+ "grpc_service_name": "grpc_service_name_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ },
+ "healthy_threshold": 1819,
+ "http2_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "http_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "https_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True},
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "ssl_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "tcp_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "timeout_sec": 1185,
+ "type_": "type__value",
+ "unhealthy_threshold": 2046,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchHealthCheckRequest):
+ transport_class = transports.HealthChecksRestTransport
+
+ request_init = {}
+ request_init["health_check"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["healthCheck"] = "health_check_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "healthCheck" in jsonified_request
+ assert jsonified_request["healthCheck"] == "health_check_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = HealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -1677,23 +3159,24 @@ def test_insert_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.patch(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_patch_rest_unset_required_fields():
transport = transports.HealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
+ "healthCheck",
"healthCheckResource",
"project",
)
@@ -1702,7 +3185,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.HealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1715,9 +3198,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.HealthChecksRestInterceptor, "post_insert"
+ transports.HealthChecksRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.HealthChecksRestInterceptor, "pre_insert"
+ transports.HealthChecksRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1734,7 +3217,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.InsertHealthCheckRequest()
+ request = compute.PatchHealthCheckRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1742,7 +3225,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.insert_unary(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -1754,8 +3237,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertHealthCheckRequest
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchHealthCheckRequest
):
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1763,7 +3246,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "health_check": "sample2"}
request_init["health_check_resource"] = {
"check_interval_sec": 1884,
"creation_timestamp": "creation_timestamp_value",
@@ -1839,10 +3322,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.patch(request)
-def test_insert_unary_rest_flattened():
+def test_patch_rest_flattened():
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1854,11 +3337,12 @@ def test_insert_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "health_check": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ health_check="health_check_value",
health_check_resource=compute.HealthCheck(check_interval_sec=1884),
)
mock_args.update(sample_request)
@@ -1871,20 +3355,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/healthChecks"
+ "%s/compute/v1/projects/{project}/global/healthChecks/{health_check}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1893,14 +3377,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertHealthCheckRequest(),
+ client.patch(
+ compute.PatchHealthCheckRequest(),
project="project_value",
+ health_check="health_check_value",
health_check_resource=compute.HealthCheck(check_interval_sec=1884),
)
-def test_insert_unary_rest_error():
+def test_patch_rest_error():
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1909,50 +3394,129 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListHealthChecksRequest,
+ compute.PatchHealthCheckRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_patch_unary_rest(request_type):
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "health_check": "sample2"}
+ request_init["health_check_resource"] = {
+ "check_interval_sec": 1884,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_health_check": {
+ "grpc_service_name": "grpc_service_name_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ },
+ "healthy_threshold": 1819,
+ "http2_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "http_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "https_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True},
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "ssl_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "tcp_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "timeout_sec": 1185,
+ "type_": "type__value",
+ "unhealthy_threshold": 2046,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheckList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheckList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_list_rest_required_fields(request_type=compute.ListHealthChecksRequest):
+def test_patch_unary_rest_required_fields(request_type=compute.PatchHealthCheckRequest):
transport_class = transports.HealthChecksRestTransport
request_init = {}
+ request_init["health_check"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1965,29 +3529,24 @@ def test_list_rest_required_fields(request_type=compute.ListHealthChecksRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["healthCheck"] = "health_check_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "healthCheck" in jsonified_request
+ assert jsonified_request["healthCheck"] == "health_check_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -1998,7 +3557,7 @@ def test_list_rest_required_fields(request_type=compute.ListHealthChecksRequest)
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheckList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2009,46 +3568,45 @@ def test_list_rest_required_fields(request_type=compute.ListHealthChecksRequest)
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheckList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_unary_rest_unset_required_fields():
transport = transports.HealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "healthCheck",
+ "healthCheckResource",
+ "project",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_unary_rest_interceptors(null_interceptor):
transport = transports.HealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2061,9 +3619,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.HealthChecksRestInterceptor, "post_list"
+ transports.HealthChecksRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.HealthChecksRestInterceptor, "pre_list"
+ transports.HealthChecksRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2078,19 +3636,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.HealthCheckList.to_json(
- compute.HealthCheckList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListHealthChecksRequest()
+ request = compute.PatchHealthCheckRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.HealthCheckList
+ post.return_value = compute.Operation
- client.list(
+ client.patch_unary(
request,
metadata=[
("key", "val"),
@@ -2102,8 +3658,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListHealthChecksRequest
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchHealthCheckRequest
):
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2111,7 +3667,71 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "health_check": "sample2"}
+ request_init["health_check_resource"] = {
+ "check_interval_sec": 1884,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_health_check": {
+ "grpc_service_name": "grpc_service_name_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ },
+ "healthy_threshold": 1819,
+ "http2_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "http_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "https_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True},
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "ssl_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "tcp_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "timeout_sec": 1185,
+ "type_": "type__value",
+ "unhealthy_threshold": 2046,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2123,10 +3743,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch_unary(request)
-def test_list_rest_flattened():
+def test_patch_unary_rest_flattened():
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2135,39 +3755,41 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheckList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "health_check": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ health_check="health_check_value",
+ health_check_resource=compute.HealthCheck(check_interval_sec=1884),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheckList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/healthChecks"
+ "%s/compute/v1/projects/{project}/global/healthChecks/{health_check}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2176,81 +3798,28 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListHealthChecksRequest(),
+ client.patch_unary(
+ compute.PatchHealthCheckRequest(),
project="project_value",
+ health_check="health_check_value",
+ health_check_resource=compute.HealthCheck(check_interval_sec=1884),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_unary_rest_error():
client = HealthChecksClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.HealthCheckList(
- items=[
- compute.HealthCheck(),
- compute.HealthCheck(),
- compute.HealthCheck(),
- ],
- next_page_token="abc",
- ),
- compute.HealthCheckList(
- items=[],
- next_page_token="def",
- ),
- compute.HealthCheckList(
- items=[
- compute.HealthCheck(),
- ],
- next_page_token="ghi",
- ),
- compute.HealthCheckList(
- items=[
- compute.HealthCheck(),
- compute.HealthCheck(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.HealthCheckList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.HealthCheck) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchHealthCheckRequest,
+ compute.UpdateHealthCheckRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_update_rest(request_type):
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2358,10 +3927,10 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.update(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2386,7 +3955,7 @@ def test_patch_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(request_type=compute.PatchHealthCheckRequest):
+def test_update_rest_required_fields(request_type=compute.UpdateHealthCheckRequest):
transport_class = transports.HealthChecksRestTransport
request_init = {}
@@ -2403,7 +3972,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchHealthCheckR
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2413,7 +3982,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchHealthCheckR
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -2442,7 +4011,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchHealthCheckR
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "put",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -2454,19 +4023,19 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchHealthCheckR
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.update(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_update_rest_unset_required_fields():
transport = transports.HealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.update._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
@@ -2480,7 +4049,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_update_rest_interceptors(null_interceptor):
transport = transports.HealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2493,9 +4062,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.HealthChecksRestInterceptor, "post_patch"
+ transports.HealthChecksRestInterceptor, "post_update"
) as post, mock.patch.object(
- transports.HealthChecksRestInterceptor, "pre_patch"
+ transports.HealthChecksRestInterceptor, "pre_update"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2512,7 +4081,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchHealthCheckRequest()
+ request = compute.UpdateHealthCheckRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2520,7 +4089,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.update(
request,
metadata=[
("key", "val"),
@@ -2532,8 +4101,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchHealthCheckRequest
+def test_update_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateHealthCheckRequest
):
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2617,10 +4186,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.update(request)
-def test_patch_unary_rest_flattened():
+def test_update_rest_flattened():
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2650,7 +4219,7 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.update(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -2663,7 +4232,7 @@ def test_patch_unary_rest_flattened():
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_rest_flattened_error(transport: str = "rest"):
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2672,15 +4241,15 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchHealthCheckRequest(),
+ client.update(
+ compute.UpdateHealthCheckRequest(),
project="project_value",
health_check="health_check_value",
health_check_resource=compute.HealthCheck(check_interval_sec=1884),
)
-def test_patch_unary_rest_error():
+def test_update_rest_error():
client = HealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2805,28 +4374,6 @@ def test_update_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_unary_rest_required_fields(
@@ -3206,6 +4753,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = HealthChecksClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_health_checks_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3243,6 +4803,14 @@ def test_health_checks_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_health_checks_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_image_family_views.py b/tests/unit/gapic/compute_v1/test_image_family_views.py
index ca6cef236..55966dc1f 100644
--- a/tests/unit/gapic/compute_v1/test_image_family_views.py
+++ b/tests/unit/gapic/compute_v1/test_image_family_views.py
@@ -885,6 +885,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = ImageFamilyViewsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_image_family_views_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -914,6 +927,14 @@ def test_image_family_views_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_image_family_views_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_images.py b/tests/unit/gapic/compute_v1/test_images.py
index 0dc939f97..28743c5c0 100644
--- a/tests/unit/gapic/compute_v1/test_images.py
+++ b/tests/unit/gapic/compute_v1/test_images.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -509,7 +511,7 @@ def test_images_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -553,10 +555,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -581,7 +583,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(request_type=compute.DeleteImageRequest):
+def test_delete_rest_required_fields(request_type=compute.DeleteImageRequest):
transport_class = transports.ImagesRestTransport
request_init = {}
@@ -648,14 +650,14 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteImageReque
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -673,7 +675,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ImagesRestInterceptor(),
@@ -711,7 +713,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -723,7 +725,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteImageRequest
):
client = ImagesClient(
@@ -744,10 +746,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -776,7 +778,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -789,7 +791,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -798,14 +800,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteImageRequest(),
project="project_value",
image="image_value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -814,11 +816,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeprecateImageRequest,
+ compute.DeleteImageRequest,
dict,
],
)
-def test_deprecate_unary_rest(request_type):
+def test_delete_unary_rest(request_type):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -826,13 +828,6 @@ def test_deprecate_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "image": "sample2"}
- request_init["deprecation_status_resource"] = {
- "deleted": "deleted_value",
- "deprecated": "deprecated_value",
- "obsolete": "obsolete_value",
- "replacement": "replacement_value",
- "state": "state_value",
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -869,37 +864,13 @@ def test_deprecate_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.deprecate_unary(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_deprecate_unary_rest_required_fields(
- request_type=compute.DeprecateImageRequest,
-):
+def test_delete_unary_rest_required_fields(request_type=compute.DeleteImageRequest):
transport_class = transports.ImagesRestTransport
request_init = {}
@@ -916,7 +887,7 @@ def test_deprecate_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).deprecate._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -926,7 +897,7 @@ def test_deprecate_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).deprecate._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -955,10 +926,9 @@ def test_deprecate_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "delete",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -967,24 +937,23 @@ def test_deprecate_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.deprecate_unary(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_deprecate_unary_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.deprecate._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
- "deprecationStatusResource",
"image",
"project",
)
@@ -993,7 +962,7 @@ def test_deprecate_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_deprecate_unary_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ImagesRestInterceptor(),
@@ -1004,9 +973,9 @@ def test_deprecate_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ImagesRestInterceptor, "post_deprecate"
+ transports.ImagesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.ImagesRestInterceptor, "pre_deprecate"
+ transports.ImagesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1023,7 +992,7 @@ def test_deprecate_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeprecateImageRequest()
+ request = compute.DeleteImageRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1031,7 +1000,7 @@ def test_deprecate_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.deprecate_unary(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1043,8 +1012,8 @@ def test_deprecate_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_deprecate_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeprecateImageRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteImageRequest
):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1053,13 +1022,6 @@ def test_deprecate_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "image": "sample2"}
- request_init["deprecation_status_resource"] = {
- "deleted": "deleted_value",
- "deprecated": "deprecated_value",
- "obsolete": "obsolete_value",
- "replacement": "replacement_value",
- "state": "state_value",
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1071,10 +1033,10 @@ def test_deprecate_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.deprecate_unary(request)
+ client.delete_unary(request)
-def test_deprecate_unary_rest_flattened():
+def test_delete_unary_rest_flattened():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1092,9 +1054,6 @@ def test_deprecate_unary_rest_flattened():
mock_args = dict(
project="project_value",
image="image_value",
- deprecation_status_resource=compute.DeprecationStatus(
- deleted="deleted_value"
- ),
)
mock_args.update(sample_request)
@@ -1106,20 +1065,20 @@ def test_deprecate_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.deprecate_unary(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/images/{image}/deprecate"
+ "%s/compute/v1/projects/{project}/global/images/{image}"
% client.transport._host,
args[1],
)
-def test_deprecate_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1128,17 +1087,14 @@ def test_deprecate_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.deprecate_unary(
- compute.DeprecateImageRequest(),
+ client.delete_unary(
+ compute.DeleteImageRequest(),
project="project_value",
image="image_value",
- deprecation_status_resource=compute.DeprecationStatus(
- deleted="deleted_value"
- ),
)
-def test_deprecate_unary_rest_error():
+def test_delete_unary_rest_error():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1147,11 +1103,11 @@ def test_deprecate_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetImageRequest,
+ compute.DeprecateImageRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_deprecate_rest(request_type):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1159,71 +1115,78 @@ def test_get_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "image": "sample2"}
+ request_init["deprecation_status_resource"] = {
+ "deleted": "deleted_value",
+ "deprecated": "deprecated_value",
+ "obsolete": "obsolete_value",
+ "replacement": "replacement_value",
+ "state": "state_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Image(
- archive_size_bytes=1922,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- disk_size_gb=1261,
- family="family_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- label_fingerprint="label_fingerprint_value",
- license_codes=[1360],
- licenses=["licenses_value"],
name="name_value",
- satisfies_pzs=True,
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- source_disk="source_disk_value",
- source_disk_id="source_disk_id_value",
- source_image="source_image_value",
- source_image_id="source_image_id_value",
- source_snapshot="source_snapshot_value",
- source_snapshot_id="source_snapshot_id_value",
- source_type="source_type_value",
- status="status_value",
- storage_locations=["storage_locations_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Image.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.deprecate(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Image)
- assert response.archive_size_bytes == 1922
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.disk_size_gb == 1261
- assert response.family == "family_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.label_fingerprint == "label_fingerprint_value"
- assert response.license_codes == [1360]
- assert response.licenses == ["licenses_value"]
assert response.name == "name_value"
- assert response.satisfies_pzs is True
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.source_disk == "source_disk_value"
- assert response.source_disk_id == "source_disk_id_value"
- assert response.source_image == "source_image_value"
- assert response.source_image_id == "source_image_id_value"
- assert response.source_snapshot == "source_snapshot_value"
- assert response.source_snapshot_id == "source_snapshot_id_value"
- assert response.source_type == "source_type_value"
- assert response.status == "status_value"
- assert response.storage_locations == ["storage_locations_value"]
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_rest_required_fields(request_type=compute.GetImageRequest):
+def test_deprecate_rest_required_fields(request_type=compute.DeprecateImageRequest):
transport_class = transports.ImagesRestTransport
request_init = {}
@@ -1240,7 +1203,7 @@ def test_get_rest_required_fields(request_type=compute.GetImageRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).deprecate._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1250,7 +1213,9 @@ def test_get_rest_required_fields(request_type=compute.GetImageRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).deprecate._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1266,7 +1231,7 @@ def test_get_rest_required_fields(request_type=compute.GetImageRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Image()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1277,34 +1242,36 @@ def test_get_rest_required_fields(request_type=compute.GetImageRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Image.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.deprecate(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_deprecate_rest_unset_required_fields():
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.deprecate._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
+ "deprecationStatusResource",
"image",
"project",
)
@@ -1313,7 +1280,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_deprecate_rest_interceptors(null_interceptor):
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ImagesRestInterceptor(),
@@ -1324,9 +1291,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ImagesRestInterceptor, "post_get"
+ transports.ImagesRestInterceptor, "post_deprecate"
) as post, mock.patch.object(
- transports.ImagesRestInterceptor, "pre_get"
+ transports.ImagesRestInterceptor, "pre_deprecate"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1341,17 +1308,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Image.to_json(compute.Image())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetImageRequest()
+ request = compute.DeprecateImageRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Image
+ post.return_value = compute.Operation
- client.get(
+ client.deprecate(
request,
metadata=[
("key", "val"),
@@ -1363,8 +1330,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetImageRequest
+def test_deprecate_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeprecateImageRequest
):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1373,6 +1340,13 @@ def test_get_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "image": "sample2"}
+ request_init["deprecation_status_resource"] = {
+ "deleted": "deleted_value",
+ "deprecated": "deprecated_value",
+ "obsolete": "obsolete_value",
+ "replacement": "replacement_value",
+ "state": "state_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1384,10 +1358,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.deprecate(request)
-def test_get_rest_flattened():
+def test_deprecate_rest_flattened():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1396,7 +1370,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Image()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "image": "sample2"}
@@ -1405,31 +1379,34 @@ def test_get_rest_flattened():
mock_args = dict(
project="project_value",
image="image_value",
+ deprecation_status_resource=compute.DeprecationStatus(
+ deleted="deleted_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Image.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.deprecate(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/images/{image}"
+ "%s/compute/v1/projects/{project}/global/images/{image}/deprecate"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_deprecate_rest_flattened_error(transport: str = "rest"):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1438,14 +1415,17 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetImageRequest(),
+ client.deprecate(
+ compute.DeprecateImageRequest(),
project="project_value",
image="image_value",
+ deprecation_status_resource=compute.DeprecationStatus(
+ deleted="deleted_value"
+ ),
)
-def test_get_rest_error():
+def test_deprecate_rest_error():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1454,89 +1434,74 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetFromFamilyImageRequest,
+ compute.DeprecateImageRequest,
dict,
],
)
-def test_get_from_family_rest(request_type):
+def test_deprecate_unary_rest(request_type):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "family": "sample2"}
+ request_init = {"project": "sample1", "image": "sample2"}
+ request_init["deprecation_status_resource"] = {
+ "deleted": "deleted_value",
+ "deprecated": "deprecated_value",
+ "obsolete": "obsolete_value",
+ "replacement": "replacement_value",
+ "state": "state_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Image(
- archive_size_bytes=1922,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- disk_size_gb=1261,
- family="family_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- label_fingerprint="label_fingerprint_value",
- license_codes=[1360],
- licenses=["licenses_value"],
name="name_value",
- satisfies_pzs=True,
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- source_disk="source_disk_value",
- source_disk_id="source_disk_id_value",
- source_image="source_image_value",
- source_image_id="source_image_id_value",
- source_snapshot="source_snapshot_value",
- source_snapshot_id="source_snapshot_id_value",
- source_type="source_type_value",
- status="status_value",
- storage_locations=["storage_locations_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Image.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_from_family(request)
+ response = client.deprecate_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Image)
- assert response.archive_size_bytes == 1922
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.disk_size_gb == 1261
- assert response.family == "family_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.label_fingerprint == "label_fingerprint_value"
- assert response.license_codes == [1360]
- assert response.licenses == ["licenses_value"]
- assert response.name == "name_value"
- assert response.satisfies_pzs is True
- assert response.self_link == "self_link_value"
- assert response.source_disk == "source_disk_value"
- assert response.source_disk_id == "source_disk_id_value"
- assert response.source_image == "source_image_value"
- assert response.source_image_id == "source_image_id_value"
- assert response.source_snapshot == "source_snapshot_value"
- assert response.source_snapshot_id == "source_snapshot_id_value"
- assert response.source_type == "source_type_value"
- assert response.status == "status_value"
- assert response.storage_locations == ["storage_locations_value"]
+ assert isinstance(response, compute.Operation)
-def test_get_from_family_rest_required_fields(
- request_type=compute.GetFromFamilyImageRequest,
+def test_deprecate_unary_rest_required_fields(
+ request_type=compute.DeprecateImageRequest,
):
transport_class = transports.ImagesRestTransport
request_init = {}
- request_init["family"] = ""
+ request_init["image"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1549,22 +1514,24 @@ def test_get_from_family_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_from_family._get_unset_required_fields(jsonified_request)
+ ).deprecate._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["family"] = "family_value"
+ jsonified_request["image"] = "image_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_from_family._get_unset_required_fields(jsonified_request)
+ ).deprecate._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "family" in jsonified_request
- assert jsonified_request["family"] == "family_value"
+ assert "image" in jsonified_request
+ assert jsonified_request["image"] == "image_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -1575,7 +1542,7 @@ def test_get_from_family_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Image()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1586,35 +1553,37 @@ def test_get_from_family_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Image.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_from_family(request)
+ response = client.deprecate_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_from_family_rest_unset_required_fields():
+def test_deprecate_unary_rest_unset_required_fields():
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_from_family._get_unset_required_fields({})
+ unset_fields = transport.deprecate._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
- "family",
+ "deprecationStatusResource",
+ "image",
"project",
)
)
@@ -1622,7 +1591,7 @@ def test_get_from_family_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_from_family_rest_interceptors(null_interceptor):
+def test_deprecate_unary_rest_interceptors(null_interceptor):
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ImagesRestInterceptor(),
@@ -1633,9 +1602,9 @@ def test_get_from_family_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ImagesRestInterceptor, "post_get_from_family"
+ transports.ImagesRestInterceptor, "post_deprecate"
) as post, mock.patch.object(
- transports.ImagesRestInterceptor, "pre_get_from_family"
+ transports.ImagesRestInterceptor, "pre_deprecate"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1650,17 +1619,17 @@ def test_get_from_family_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Image.to_json(compute.Image())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetFromFamilyImageRequest()
+ request = compute.DeprecateImageRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Image
+ post.return_value = compute.Operation
- client.get_from_family(
+ client.deprecate_unary(
request,
metadata=[
("key", "val"),
@@ -1672,8 +1641,8 @@ def test_get_from_family_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_from_family_rest_bad_request(
- transport: str = "rest", request_type=compute.GetFromFamilyImageRequest
+def test_deprecate_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeprecateImageRequest
):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1681,7 +1650,14 @@ def test_get_from_family_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "family": "sample2"}
+ request_init = {"project": "sample1", "image": "sample2"}
+ request_init["deprecation_status_resource"] = {
+ "deleted": "deleted_value",
+ "deprecated": "deprecated_value",
+ "obsolete": "obsolete_value",
+ "replacement": "replacement_value",
+ "state": "state_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1693,10 +1669,10 @@ def test_get_from_family_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_from_family(request)
+ client.deprecate_unary(request)
-def test_get_from_family_rest_flattened():
+def test_deprecate_unary_rest_flattened():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1705,40 +1681,43 @@ def test_get_from_family_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Image()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "family": "sample2"}
+ sample_request = {"project": "sample1", "image": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- family="family_value",
+ image="image_value",
+ deprecation_status_resource=compute.DeprecationStatus(
+ deleted="deleted_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Image.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_from_family(**mock_args)
+ client.deprecate_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/images/family/{family}"
+ "%s/compute/v1/projects/{project}/global/images/{image}/deprecate"
% client.transport._host,
args[1],
)
-def test_get_from_family_rest_flattened_error(transport: str = "rest"):
+def test_deprecate_unary_rest_flattened_error(transport: str = "rest"):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1747,14 +1726,17 @@ def test_get_from_family_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_from_family(
- compute.GetFromFamilyImageRequest(),
+ client.deprecate_unary(
+ compute.DeprecateImageRequest(),
project="project_value",
- family="family_value",
+ image="image_value",
+ deprecation_status_resource=compute.DeprecationStatus(
+ deleted="deleted_value"
+ ),
)
-def test_get_from_family_rest_error():
+def test_deprecate_unary_rest_error():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1763,52 +1745,88 @@ def test_get_from_family_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicyImageRequest,
+ compute.GetImageRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_get_rest(request_type):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
+ request_init = {"project": "sample1", "image": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Image(
+ archive_size_bytes=1922,
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ disk_size_gb=1261,
+ family="family_value",
+ id=205,
+ kind="kind_value",
+ label_fingerprint="label_fingerprint_value",
+ license_codes=[1360],
+ licenses=["licenses_value"],
+ name="name_value",
+ satisfies_pzs=True,
+ self_link="self_link_value",
+ source_disk="source_disk_value",
+ source_disk_id="source_disk_id_value",
+ source_image="source_image_value",
+ source_image_id="source_image_id_value",
+ source_snapshot="source_snapshot_value",
+ source_snapshot_id="source_snapshot_id_value",
+ source_type="source_type_value",
+ status="status_value",
+ storage_locations=["storage_locations_value"],
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Image.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, compute.Image)
+ assert response.archive_size_bytes == 1922
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.disk_size_gb == 1261
+ assert response.family == "family_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.label_fingerprint == "label_fingerprint_value"
+ assert response.license_codes == [1360]
+ assert response.licenses == ["licenses_value"]
+ assert response.name == "name_value"
+ assert response.satisfies_pzs is True
+ assert response.self_link == "self_link_value"
+ assert response.source_disk == "source_disk_value"
+ assert response.source_disk_id == "source_disk_id_value"
+ assert response.source_image == "source_image_value"
+ assert response.source_image_id == "source_image_id_value"
+ assert response.source_snapshot == "source_snapshot_value"
+ assert response.source_snapshot_id == "source_snapshot_id_value"
+ assert response.source_type == "source_type_value"
+ assert response.status == "status_value"
+ assert response.storage_locations == ["storage_locations_value"]
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicyImageRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetImageRequest):
transport_class = transports.ImagesRestTransport
request_init = {}
+ request_init["image"] = ""
request_init["project"] = ""
- request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1820,26 +1838,24 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["image"] = "image_value"
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "image" in jsonified_request
+ assert jsonified_request["image"] == "image_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1848,7 +1864,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Image()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1866,36 +1882,36 @@ def test_get_iam_policy_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Image.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
+ set(())
& set(
(
+ "image",
"project",
- "resource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ImagesRestInterceptor(),
@@ -1906,9 +1922,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ImagesRestInterceptor, "post_get_iam_policy"
+ transports.ImagesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.ImagesRestInterceptor, "pre_get_iam_policy"
+ transports.ImagesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1923,17 +1939,17 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Image.to_json(compute.Image())
- request = compute.GetIamPolicyImageRequest()
+ request = compute.GetImageRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Image
- client.get_iam_policy(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1945,8 +1961,8 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.GetIamPolicyImageRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetImageRequest
):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1954,7 +1970,7 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
+ request_init = {"project": "sample1", "image": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1966,10 +1982,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.get(request)
-def test_get_iam_policy_rest_flattened():
+def test_get_rest_flattened():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1978,40 +1994,40 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Image()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "resource": "sample2"}
+ sample_request = {"project": "sample1", "image": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- resource="resource_value",
+ image="image_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Image.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/images/{resource}/getIamPolicy"
+ "%s/compute/v1/projects/{project}/global/images/{image}"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2020,14 +2036,14 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicyImageRequest(),
+ client.get(
+ compute.GetImageRequest(),
project="project_value",
- resource="resource_value",
+ image="image_value",
)
-def test_get_iam_policy_rest_error():
+def test_get_rest_error():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2036,140 +2052,89 @@ def test_get_iam_policy_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertImageRequest,
+ compute.GetFromFamilyImageRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_from_family_rest(request_type):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["image_resource"] = {
- "archive_size_bytes": 1922,
- "creation_timestamp": "creation_timestamp_value",
- "deprecated": {
- "deleted": "deleted_value",
- "deprecated": "deprecated_value",
- "obsolete": "obsolete_value",
- "replacement": "replacement_value",
- "state": "state_value",
- },
- "description": "description_value",
- "disk_size_gb": 1261,
- "family": "family_value",
- "guest_os_features": [{"type_": "type__value"}],
- "id": 205,
- "image_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "license_codes": [1361, 1362],
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "name": "name_value",
- "raw_disk": {
- "container_type": "container_type_value",
- "sha1_checksum": "sha1_checksum_value",
- "source": "source_value",
- },
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "shielded_instance_initial_state": {
- "dbs": [{"content": "content_value", "file_type": "file_type_value"}],
- "dbxs": {},
- "keks": {},
- "pk": {},
- },
- "source_disk": "source_disk_value",
- "source_disk_encryption_key": {},
- "source_disk_id": "source_disk_id_value",
- "source_image": "source_image_value",
- "source_image_encryption_key": {},
- "source_image_id": "source_image_id_value",
- "source_snapshot": "source_snapshot_value",
- "source_snapshot_encryption_key": {},
- "source_snapshot_id": "source_snapshot_id_value",
- "source_type": "source_type_value",
- "status": "status_value",
- "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
- }
+ request_init = {"project": "sample1", "family": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.Image(
+ archive_size_bytes=1922,
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ disk_size_gb=1261,
+ family="family_value",
id=205,
- insert_time="insert_time_value",
kind="kind_value",
+ label_fingerprint="label_fingerprint_value",
+ license_codes=[1360],
+ licenses=["licenses_value"],
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
+ satisfies_pzs=True,
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ source_disk="source_disk_value",
+ source_disk_id="source_disk_id_value",
+ source_image="source_image_value",
+ source_image_id="source_image_id_value",
+ source_snapshot="source_snapshot_value",
+ source_snapshot_id="source_snapshot_id_value",
+ source_type="source_type_value",
+ status="status_value",
+ storage_locations=["storage_locations_value"],
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Image.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get_from_family(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.Image)
+ assert response.archive_size_bytes == 1922
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.disk_size_gb == 1261
+ assert response.family == "family_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
+ assert response.label_fingerprint == "label_fingerprint_value"
+ assert response.license_codes == [1360]
+ assert response.licenses == ["licenses_value"]
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
+ assert response.satisfies_pzs is True
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.source_disk == "source_disk_value"
+ assert response.source_disk_id == "source_disk_id_value"
+ assert response.source_image == "source_image_value"
+ assert response.source_image_id == "source_image_id_value"
+ assert response.source_snapshot == "source_snapshot_value"
+ assert response.source_snapshot_id == "source_snapshot_id_value"
+ assert response.source_type == "source_type_value"
+ assert response.status == "status_value"
+ assert response.storage_locations == ["storage_locations_value"]
-def test_insert_unary_rest_required_fields(request_type=compute.InsertImageRequest):
+def test_get_from_family_rest_required_fields(
+ request_type=compute.GetFromFamilyImageRequest,
+):
transport_class = transports.ImagesRestTransport
request_init = {}
+ request_init["family"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -2182,26 +2147,22 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertImageReque
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get_from_family._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["family"] = "family_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "force_create",
- "request_id",
- )
- )
+ ).get_from_family._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "family" in jsonified_request
+ assert jsonified_request["family"] == "family_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -2212,7 +2173,7 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertImageReque
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Image()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2223,41 +2184,35 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertImageReque
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Image.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get_from_family(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_from_family_rest_unset_required_fields():
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get_from_family._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "forceCreate",
- "requestId",
- )
- )
+ set(())
& set(
(
- "imageResource",
+ "family",
"project",
)
)
@@ -2265,7 +2220,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_from_family_rest_interceptors(null_interceptor):
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ImagesRestInterceptor(),
@@ -2276,9 +2231,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ImagesRestInterceptor, "post_insert"
+ transports.ImagesRestInterceptor, "post_get_from_family"
) as post, mock.patch.object(
- transports.ImagesRestInterceptor, "pre_insert"
+ transports.ImagesRestInterceptor, "pre_get_from_family"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2293,17 +2248,17 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.Image.to_json(compute.Image())
- request = compute.InsertImageRequest()
+ request = compute.GetFromFamilyImageRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.Image
- client.insert_unary(
+ client.get_from_family(
request,
metadata=[
("key", "val"),
@@ -2315,8 +2270,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertImageRequest
+def test_get_from_family_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetFromFamilyImageRequest
):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2324,61 +2279,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["image_resource"] = {
- "archive_size_bytes": 1922,
- "creation_timestamp": "creation_timestamp_value",
- "deprecated": {
- "deleted": "deleted_value",
- "deprecated": "deprecated_value",
- "obsolete": "obsolete_value",
- "replacement": "replacement_value",
- "state": "state_value",
- },
- "description": "description_value",
- "disk_size_gb": 1261,
- "family": "family_value",
- "guest_os_features": [{"type_": "type__value"}],
- "id": 205,
- "image_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "license_codes": [1361, 1362],
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "name": "name_value",
- "raw_disk": {
- "container_type": "container_type_value",
- "sha1_checksum": "sha1_checksum_value",
- "source": "source_value",
- },
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "shielded_instance_initial_state": {
- "dbs": [{"content": "content_value", "file_type": "file_type_value"}],
- "dbxs": {},
- "keks": {},
- "pk": {},
- },
- "source_disk": "source_disk_value",
- "source_disk_encryption_key": {},
- "source_disk_id": "source_disk_id_value",
- "source_image": "source_image_value",
- "source_image_encryption_key": {},
- "source_image_id": "source_image_id_value",
- "source_snapshot": "source_snapshot_value",
- "source_snapshot_encryption_key": {},
- "source_snapshot_id": "source_snapshot_id_value",
- "source_type": "source_type_value",
- "status": "status_value",
- "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
- }
+ request_init = {"project": "sample1", "family": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2390,10 +2291,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get_from_family(request)
-def test_insert_unary_rest_flattened():
+def test_get_from_family_rest_flattened():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2402,39 +2303,40 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Image()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "family": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- image_resource=compute.Image(archive_size_bytes=1922),
+ family="family_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Image.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get_from_family(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/images" % client.transport._host,
+ "%s/compute/v1/projects/{project}/global/images/family/{family}"
+ % client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_from_family_rest_flattened_error(transport: str = "rest"):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2443,14 +2345,14 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertImageRequest(),
+ client.get_from_family(
+ compute.GetFromFamilyImageRequest(),
project="project_value",
- image_resource=compute.Image(archive_size_bytes=1922),
+ family="family_value",
)
-def test_insert_unary_rest_error():
+def test_get_from_family_rest_error():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2459,51 +2361,52 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListImagesRequest,
+ compute.GetIamPolicyImageRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_get_iam_policy_rest(request_type):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "resource": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ImageList(
- id="id_value",
- kind="kind_value",
- next_page_token="next_page_token_value",
- self_link="self_link_value",
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ImageList.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get_iam_policy(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
-def test_list_rest_required_fields(request_type=compute.ListImagesRequest):
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicyImageRequest,
+):
transport_class = transports.ImagesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2515,31 +2418,26 @@ def test_list_rest_required_fields(request_type=compute.ListImagesRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2548,7 +2446,7 @@ def test_list_rest_required_fields(request_type=compute.ListImagesRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.ImageList()
+ return_value = compute.Policy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2566,39 +2464,36 @@ def test_list_rest_required_fields(request_type=compute.ListImagesRequest):
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ImageList.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get_iam_policy(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_get_iam_policy_rest_unset_required_fields():
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("optionsRequestedPolicyVersion",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "project",
+ "resource",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_get_iam_policy_rest_interceptors(null_interceptor):
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ImagesRestInterceptor(),
@@ -2609,9 +2504,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ImagesRestInterceptor, "post_list"
+ transports.ImagesRestInterceptor, "post_get_iam_policy"
) as post, mock.patch.object(
- transports.ImagesRestInterceptor, "pre_list"
+ transports.ImagesRestInterceptor, "pre_get_iam_policy"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2626,17 +2521,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.ImageList.to_json(compute.ImageList())
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
- request = compute.ListImagesRequest()
+ request = compute.GetIamPolicyImageRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.ImageList
+ post.return_value = compute.Policy
- client.list(
+ client.get_iam_policy(
request,
metadata=[
("key", "val"),
@@ -2648,8 +2543,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListImagesRequest
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetIamPolicyImageRequest
):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2657,7 +2552,7 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "resource": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2669,10 +2564,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.get_iam_policy(request)
-def test_list_rest_flattened():
+def test_get_iam_policy_rest_flattened():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2681,38 +2576,40 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ImageList()
+ return_value = compute.Policy()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "resource": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ resource="resource_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ImageList.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.get_iam_policy(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/images" % client.transport._host,
+ "%s/compute/v1/projects/{project}/global/images/{resource}/getIamPolicy"
+ % client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2721,88 +2618,34 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListImagesRequest(),
+ client.get_iam_policy(
+ compute.GetIamPolicyImageRequest(),
project="project_value",
+ resource="resource_value",
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_get_iam_policy_rest_error():
client = ImagesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.ImageList(
- items=[
- compute.Image(),
- compute.Image(),
- compute.Image(),
- ],
- next_page_token="abc",
- ),
- compute.ImageList(
- items=[],
- next_page_token="def",
- ),
- compute.ImageList(
- items=[
- compute.Image(),
- ],
- next_page_token="ghi",
- ),
- compute.ImageList(
- items=[
- compute.Image(),
- compute.Image(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.ImageList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Image) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchImageRequest,
+ compute.InsertImageRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_insert_rest(request_type):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "image": "sample2"}
+ request_init = {"project": "sample1"}
request_init["image_resource"] = {
"archive_size_bytes": 1922,
"creation_timestamp": "creation_timestamp_value",
@@ -2893,10 +2736,10 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2921,11 +2764,10 @@ def test_patch_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(request_type=compute.PatchImageRequest):
+def test_insert_rest_required_fields(request_type=compute.InsertImageRequest):
transport_class = transports.ImagesRestTransport
request_init = {}
- request_init["image"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -2938,24 +2780,26 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchImageRequest
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["image"] = "image_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "force_create",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "image" in jsonified_request
- assert jsonified_request["image"] == "image_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -2977,7 +2821,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchImageRequest
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -2989,24 +2833,28 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchImageRequest
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "forceCreate",
+ "requestId",
+ )
+ )
& set(
(
- "image",
"imageResource",
"project",
)
@@ -3015,7 +2863,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ImagesRestInterceptor(),
@@ -3026,9 +2874,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ImagesRestInterceptor, "post_patch"
+ transports.ImagesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.ImagesRestInterceptor, "pre_patch"
+ transports.ImagesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3045,7 +2893,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchImageRequest()
+ request = compute.InsertImageRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3053,7 +2901,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -3065,8 +2913,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchImageRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertImageRequest
):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3074,7 +2922,7 @@ def test_patch_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "image": "sample2"}
+ request_init = {"project": "sample1"}
request_init["image_resource"] = {
"archive_size_bytes": 1922,
"creation_timestamp": "creation_timestamp_value",
@@ -3140,10 +2988,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.insert(request)
-def test_patch_unary_rest_flattened():
+def test_insert_rest_flattened():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3155,12 +3003,11 @@ def test_patch_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "image": "sample2"}
+ sample_request = {"project": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- image="image_value",
image_resource=compute.Image(archive_size_bytes=1922),
)
mock_args.update(sample_request)
@@ -3173,20 +3020,19 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/images/{image}"
- % client.transport._host,
+ "%s/compute/v1/projects/{project}/global/images" % client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3195,15 +3041,14 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchImageRequest(),
+ client.insert(
+ compute.InsertImageRequest(),
project="project_value",
- image="image_value",
image_resource=compute.Image(archive_size_bytes=1922),
)
-def test_patch_unary_rest_error():
+def test_insert_rest_error():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3212,124 +3057,2073 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetIamPolicyImageRequest,
+ compute.InsertImageRequest,
dict,
],
)
-def test_set_iam_policy_rest(request_type):
+def test_insert_unary_rest(request_type):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
- request_init["global_set_policy_request_resource"] = {
- "bindings": [
- {
- "binding_id": "binding_id_value",
- "condition": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "members": ["members_value_1", "members_value_2"],
- "role": "role_value",
- }
- ],
- "etag": "etag_value",
- "policy": {
- "audit_configs": [
- {
- "audit_log_configs": [
- {
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "ignore_child_exemptions": True,
- "log_type": "log_type_value",
- }
- ],
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "service": "service_value",
- }
- ],
- "bindings": {},
- "etag": "etag_value",
- "iam_owned": True,
- "rules": [
- {
- "action": "action_value",
- "conditions": [
- {
- "iam": "iam_value",
- "op": "op_value",
- "svc": "svc_value",
- "sys": "sys_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "description": "description_value",
- "ins": ["ins_value_1", "ins_value_2"],
- "log_configs": [
- {
- "cloud_audit": {
- "authorization_logging_options": {
- "permission_type": "permission_type_value"
- },
- "log_name": "log_name_value",
- },
- "counter": {
- "custom_fields": [
- {"name": "name_value", "value": "value_value"}
- ],
- "field": "field_value",
- "metric": "metric_value",
- },
- "data_access": {"log_mode": "log_mode_value"},
- }
- ],
- "not_ins": ["not_ins_value_1", "not_ins_value_2"],
- "permissions": ["permissions_value_1", "permissions_value_2"],
- }
- ],
- "version": 774,
+ request_init = {"project": "sample1"}
+ request_init["image_resource"] = {
+ "archive_size_bytes": 1922,
+ "creation_timestamp": "creation_timestamp_value",
+ "deprecated": {
+ "deleted": "deleted_value",
+ "deprecated": "deprecated_value",
+ "obsolete": "obsolete_value",
+ "replacement": "replacement_value",
+ "state": "state_value",
+ },
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "family": "family_value",
+ "guest_os_features": [{"type_": "type__value"}],
+ "id": 205,
+ "image_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "name": "name_value",
+ "raw_disk": {
+ "container_type": "container_type_value",
+ "sha1_checksum": "sha1_checksum_value",
+ "source": "source_value",
+ },
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "shielded_instance_initial_state": {
+ "dbs": [{"content": "content_value", "file_type": "file_type_value"}],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
},
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_image_id": "source_image_id_value",
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ "source_snapshot_id": "source_snapshot_id_value",
+ "source_type": "source_type_value",
+ "status": "status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(request_type=compute.InsertImageRequest):
+ transport_class = transports.ImagesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "force_create",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.ImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "forceCreate",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "imageResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.ImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.ImagesRestInterceptor(),
+ )
+ client = ImagesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ImagesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.ImagesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertImageRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertImageRequest
+):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["image_resource"] = {
+ "archive_size_bytes": 1922,
+ "creation_timestamp": "creation_timestamp_value",
+ "deprecated": {
+ "deleted": "deleted_value",
+ "deprecated": "deprecated_value",
+ "obsolete": "obsolete_value",
+ "replacement": "replacement_value",
+ "state": "state_value",
+ },
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "family": "family_value",
+ "guest_os_features": [{"type_": "type__value"}],
+ "id": 205,
+ "image_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "name": "name_value",
+ "raw_disk": {
+ "container_type": "container_type_value",
+ "sha1_checksum": "sha1_checksum_value",
+ "source": "source_value",
+ },
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "shielded_instance_initial_state": {
+ "dbs": [{"content": "content_value", "file_type": "file_type_value"}],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_image_id": "source_image_id_value",
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ "source_snapshot_id": "source_snapshot_id_value",
+ "source_type": "source_type_value",
+ "status": "status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ image_resource=compute.Image(archive_size_bytes=1922),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/images" % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertImageRequest(),
+ project="project_value",
+ image_resource=compute.Image(archive_size_bytes=1922),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListImagesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ImageList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ImageList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListImagesRequest):
+ transport_class = transports.ImagesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ImageList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ImageList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.ImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.ImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.ImagesRestInterceptor(),
+ )
+ client = ImagesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ImagesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.ImagesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.ImageList.to_json(compute.ImageList())
+
+ request = compute.ListImagesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.ImageList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListImagesRequest
+):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ImageList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ImageList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/images" % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListImagesRequest(),
+ project="project_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.ImageList(
+ items=[
+ compute.Image(),
+ compute.Image(),
+ compute.Image(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.ImageList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.ImageList(
+ items=[
+ compute.Image(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.ImageList(
+ items=[
+ compute.Image(),
+ compute.Image(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.ImageList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Image) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchImageRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "image": "sample2"}
+ request_init["image_resource"] = {
+ "archive_size_bytes": 1922,
+ "creation_timestamp": "creation_timestamp_value",
+ "deprecated": {
+ "deleted": "deleted_value",
+ "deprecated": "deprecated_value",
+ "obsolete": "obsolete_value",
+ "replacement": "replacement_value",
+ "state": "state_value",
+ },
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "family": "family_value",
+ "guest_os_features": [{"type_": "type__value"}],
+ "id": 205,
+ "image_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "name": "name_value",
+ "raw_disk": {
+ "container_type": "container_type_value",
+ "sha1_checksum": "sha1_checksum_value",
+ "source": "source_value",
+ },
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "shielded_instance_initial_state": {
+ "dbs": [{"content": "content_value", "file_type": "file_type_value"}],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_image_id": "source_image_id_value",
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ "source_snapshot_id": "source_snapshot_id_value",
+ "source_type": "source_type_value",
+ "status": "status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchImageRequest):
+ transport_class = transports.ImagesRestTransport
+
+ request_init = {}
+ request_init["image"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["image"] = "image_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "image" in jsonified_request
+ assert jsonified_request["image"] == "image_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.ImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "image",
+ "imageResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.ImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.ImagesRestInterceptor(),
+ )
+ client = ImagesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ImagesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.ImagesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchImageRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchImageRequest
+):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "image": "sample2"}
+ request_init["image_resource"] = {
+ "archive_size_bytes": 1922,
+ "creation_timestamp": "creation_timestamp_value",
+ "deprecated": {
+ "deleted": "deleted_value",
+ "deprecated": "deprecated_value",
+ "obsolete": "obsolete_value",
+ "replacement": "replacement_value",
+ "state": "state_value",
+ },
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "family": "family_value",
+ "guest_os_features": [{"type_": "type__value"}],
+ "id": 205,
+ "image_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "name": "name_value",
+ "raw_disk": {
+ "container_type": "container_type_value",
+ "sha1_checksum": "sha1_checksum_value",
+ "source": "source_value",
+ },
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "shielded_instance_initial_state": {
+ "dbs": [{"content": "content_value", "file_type": "file_type_value"}],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_image_id": "source_image_id_value",
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ "source_snapshot_id": "source_snapshot_id_value",
+ "source_type": "source_type_value",
+ "status": "status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "image": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ image="image_value",
+ image_resource=compute.Image(archive_size_bytes=1922),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/images/{image}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchImageRequest(),
+ project="project_value",
+ image="image_value",
+ image_resource=compute.Image(archive_size_bytes=1922),
+ )
+
+
+def test_patch_rest_error():
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchImageRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "image": "sample2"}
+ request_init["image_resource"] = {
+ "archive_size_bytes": 1922,
+ "creation_timestamp": "creation_timestamp_value",
+ "deprecated": {
+ "deleted": "deleted_value",
+ "deprecated": "deprecated_value",
+ "obsolete": "obsolete_value",
+ "replacement": "replacement_value",
+ "state": "state_value",
+ },
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "family": "family_value",
+ "guest_os_features": [{"type_": "type__value"}],
+ "id": 205,
+ "image_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "name": "name_value",
+ "raw_disk": {
+ "container_type": "container_type_value",
+ "sha1_checksum": "sha1_checksum_value",
+ "source": "source_value",
+ },
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "shielded_instance_initial_state": {
+ "dbs": [{"content": "content_value", "file_type": "file_type_value"}],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_image_id": "source_image_id_value",
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ "source_snapshot_id": "source_snapshot_id_value",
+ "source_type": "source_type_value",
+ "status": "status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(request_type=compute.PatchImageRequest):
+ transport_class = transports.ImagesRestTransport
+
+ request_init = {}
+ request_init["image"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["image"] = "image_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "image" in jsonified_request
+ assert jsonified_request["image"] == "image_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_unary_rest_unset_required_fields():
+ transport = transports.ImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "image",
+ "imageResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_unary_rest_interceptors(null_interceptor):
+ transport = transports.ImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.ImagesRestInterceptor(),
+ )
+ client = ImagesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ImagesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.ImagesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchImageRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchImageRequest
+):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "image": "sample2"}
+ request_init["image_resource"] = {
+ "archive_size_bytes": 1922,
+ "creation_timestamp": "creation_timestamp_value",
+ "deprecated": {
+ "deleted": "deleted_value",
+ "deprecated": "deprecated_value",
+ "obsolete": "obsolete_value",
+ "replacement": "replacement_value",
+ "state": "state_value",
+ },
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "family": "family_value",
+ "guest_os_features": [{"type_": "type__value"}],
+ "id": 205,
+ "image_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "name": "name_value",
+ "raw_disk": {
+ "container_type": "container_type_value",
+ "sha1_checksum": "sha1_checksum_value",
+ "source": "source_value",
+ },
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "shielded_instance_initial_state": {
+ "dbs": [{"content": "content_value", "file_type": "file_type_value"}],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_image_id": "source_image_id_value",
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ "source_snapshot_id": "source_snapshot_id_value",
+ "source_type": "source_type_value",
+ "status": "status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_unary(request)
+
+
+def test_patch_unary_rest_flattened():
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "image": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ image="image_value",
+ image_resource=compute.Image(archive_size_bytes=1922),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/images/{image}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_unary(
+ compute.PatchImageRequest(),
+ project="project_value",
+ image="image_value",
+ image_resource=compute.Image(archive_size_bytes=1922),
+ )
+
+
+def test_patch_unary_rest_error():
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetIamPolicyImageRequest,
+ dict,
+ ],
+)
+def test_set_iam_policy_rest(request_type):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request_init["global_set_policy_request_resource"] = {
+ "bindings": [
+ {
+ "binding_id": "binding_id_value",
+ "condition": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "members": ["members_value_1", "members_value_2"],
+ "role": "role_value",
+ }
+ ],
+ "etag": "etag_value",
+ "policy": {
+ "audit_configs": [
+ {
+ "audit_log_configs": [
+ {
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "ignore_child_exemptions": True,
+ "log_type": "log_type_value",
+ }
+ ],
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "service": "service_value",
+ }
+ ],
+ "bindings": {},
+ "etag": "etag_value",
+ "iam_owned": True,
+ "rules": [
+ {
+ "action": "action_value",
+ "conditions": [
+ {
+ "iam": "iam_value",
+ "op": "op_value",
+ "svc": "svc_value",
+ "sys": "sys_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "ins": ["ins_value_1", "ins_value_2"],
+ "log_configs": [
+ {
+ "cloud_audit": {
+ "authorization_logging_options": {
+ "permission_type": "permission_type_value"
+ },
+ "log_name": "log_name_value",
+ },
+ "counter": {
+ "custom_fields": [
+ {"name": "name_value", "value": "value_value"}
+ ],
+ "field": "field_value",
+ "metric": "metric_value",
+ },
+ "data_access": {"log_mode": "log_mode_value"},
+ }
+ ],
+ "not_ins": ["not_ins_value_1", "not_ins_value_2"],
+ "permissions": ["permissions_value_1", "permissions_value_2"],
+ }
+ ],
+ "version": 774,
+ },
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_set_iam_policy_rest_required_fields(
+ request_type=compute.SetIamPolicyImageRequest,
+):
+ transport_class = transports.ImagesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["resource"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_iam_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_iam_policy_rest_unset_required_fields():
+ transport = transports.ImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "globalSetPolicyRequestResource",
+ "project",
+ "resource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_iam_policy_rest_interceptors(null_interceptor):
+ transport = transports.ImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.ImagesRestInterceptor(),
+ )
+ client = ImagesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ImagesRestInterceptor, "post_set_iam_policy"
+ ) as post, mock.patch.object(
+ transports.ImagesRestInterceptor, "pre_set_iam_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
+
+ request = compute.SetIamPolicyImageRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Policy
+
+ client.set_iam_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetIamPolicyImageRequest
+):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request_init["global_set_policy_request_resource"] = {
+ "bindings": [
+ {
+ "binding_id": "binding_id_value",
+ "condition": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "members": ["members_value_1", "members_value_2"],
+ "role": "role_value",
+ }
+ ],
+ "etag": "etag_value",
+ "policy": {
+ "audit_configs": [
+ {
+ "audit_log_configs": [
+ {
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "ignore_child_exemptions": True,
+ "log_type": "log_type_value",
+ }
+ ],
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "service": "service_value",
+ }
+ ],
+ "bindings": {},
+ "etag": "etag_value",
+ "iam_owned": True,
+ "rules": [
+ {
+ "action": "action_value",
+ "conditions": [
+ {
+ "iam": "iam_value",
+ "op": "op_value",
+ "svc": "svc_value",
+ "sys": "sys_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "ins": ["ins_value_1", "ins_value_2"],
+ "log_configs": [
+ {
+ "cloud_audit": {
+ "authorization_logging_options": {
+ "permission_type": "permission_type_value"
+ },
+ "log_name": "log_name_value",
+ },
+ "counter": {
+ "custom_fields": [
+ {"name": "name_value", "value": "value_value"}
+ ],
+ "field": "field_value",
+ "metric": "metric_value",
+ },
+ "data_access": {"log_mode": "log_mode_value"},
+ }
+ ],
+ "not_ins": ["not_ins_value_1", "not_ins_value_2"],
+ "permissions": ["permissions_value_1", "permissions_value_2"],
+ }
+ ],
+ "version": 774,
+ },
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_iam_policy(request)
+
+
+def test_set_iam_policy_rest_flattened():
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "resource": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ resource="resource_value",
+ global_set_policy_request_resource=compute.GlobalSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_iam_policy(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/images/{resource}/setIamPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_iam_policy(
+ compute.SetIamPolicyImageRequest(),
+ project="project_value",
+ resource="resource_value",
+ global_set_policy_request_resource=compute.GlobalSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
+ ),
+ )
+
+
+def test_set_iam_policy_rest_error():
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetLabelsImageRequest,
+ dict,
+ ],
+)
+def test_set_labels_rest(request_type):
+ client = ImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request_init["global_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.set_labels(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_set_iam_policy_rest_required_fields(
- request_type=compute.SetIamPolicyImageRequest,
-):
+def test_set_labels_rest_required_fields(request_type=compute.SetLabelsImageRequest):
transport_class = transports.ImagesRestTransport
request_init = {}
@@ -3346,7 +5140,7 @@ def test_set_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).set_labels._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3356,7 +5150,7 @@ def test_set_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).set_labels._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -3372,7 +5166,7 @@ def test_set_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3391,28 +5185,28 @@ def test_set_iam_policy_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.set_labels(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_iam_policy_rest_unset_required_fields():
+def test_set_labels_rest_unset_required_fields():
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.set_labels._get_unset_required_fields({})
assert set(unset_fields) == (
set(())
& set(
(
- "globalSetPolicyRequestResource",
+ "globalSetLabelsRequestResource",
"project",
"resource",
)
@@ -3421,7 +5215,7 @@ def test_set_iam_policy_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_iam_policy_rest_interceptors(null_interceptor):
+def test_set_labels_rest_interceptors(null_interceptor):
transport = transports.ImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ImagesRestInterceptor(),
@@ -3432,9 +5226,9 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ImagesRestInterceptor, "post_set_iam_policy"
+ transports.ImagesRestInterceptor, "post_set_labels"
) as post, mock.patch.object(
- transports.ImagesRestInterceptor, "pre_set_iam_policy"
+ transports.ImagesRestInterceptor, "pre_set_labels"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3449,17 +5243,17 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetIamPolicyImageRequest()
+ request = compute.SetLabelsImageRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.set_iam_policy(
+ client.set_labels(
request,
metadata=[
("key", "val"),
@@ -3471,8 +5265,8 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.SetIamPolicyImageRequest
+def test_set_labels_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetLabelsImageRequest
):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3481,82 +5275,9 @@ def test_set_iam_policy_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "resource": "sample2"}
- request_init["global_set_policy_request_resource"] = {
- "bindings": [
- {
- "binding_id": "binding_id_value",
- "condition": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "members": ["members_value_1", "members_value_2"],
- "role": "role_value",
- }
- ],
- "etag": "etag_value",
- "policy": {
- "audit_configs": [
- {
- "audit_log_configs": [
- {
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "ignore_child_exemptions": True,
- "log_type": "log_type_value",
- }
- ],
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "service": "service_value",
- }
- ],
- "bindings": {},
- "etag": "etag_value",
- "iam_owned": True,
- "rules": [
- {
- "action": "action_value",
- "conditions": [
- {
- "iam": "iam_value",
- "op": "op_value",
- "svc": "svc_value",
- "sys": "sys_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "description": "description_value",
- "ins": ["ins_value_1", "ins_value_2"],
- "log_configs": [
- {
- "cloud_audit": {
- "authorization_logging_options": {
- "permission_type": "permission_type_value"
- },
- "log_name": "log_name_value",
- },
- "counter": {
- "custom_fields": [
- {"name": "name_value", "value": "value_value"}
- ],
- "field": "field_value",
- "metric": "metric_value",
- },
- "data_access": {"log_mode": "log_mode_value"},
- }
- ],
- "not_ins": ["not_ins_value_1", "not_ins_value_2"],
- "permissions": ["permissions_value_1", "permissions_value_2"],
- }
- ],
- "version": 774,
- },
+ request_init["global_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
}
request = request_type(request_init)
@@ -3569,10 +5290,10 @@ def test_set_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_iam_policy(request)
+ client.set_labels(request)
-def test_set_iam_policy_rest_flattened():
+def test_set_labels_rest_flattened():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3581,7 +5302,7 @@ def test_set_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "resource": "sample2"}
@@ -3590,8 +5311,8 @@ def test_set_iam_policy_rest_flattened():
mock_args = dict(
project="project_value",
resource="resource_value",
- global_set_policy_request_resource=compute.GlobalSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
+ global_set_labels_request_resource=compute.GlobalSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
),
)
mock_args.update(sample_request)
@@ -3599,25 +5320,25 @@ def test_set_iam_policy_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_iam_policy(**mock_args)
+ client.set_labels(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/images/{resource}/setIamPolicy"
+ "%s/compute/v1/projects/{project}/global/images/{resource}/setLabels"
% client.transport._host,
args[1],
)
-def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_set_labels_rest_flattened_error(transport: str = "rest"):
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3626,17 +5347,17 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_iam_policy(
- compute.SetIamPolicyImageRequest(),
+ client.set_labels(
+ compute.SetLabelsImageRequest(),
project="project_value",
resource="resource_value",
- global_set_policy_request_resource=compute.GlobalSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
+ global_set_labels_request_resource=compute.GlobalSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
),
)
-def test_set_iam_policy_rest_error():
+def test_set_labels_rest_error():
client = ImagesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3701,28 +5422,6 @@ def test_set_labels_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_set_labels_unary_rest_required_fields(
@@ -4325,6 +6024,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = ImagesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_images_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -4366,6 +6078,14 @@ def test_images_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_images_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_instance_group_managers.py b/tests/unit/gapic/compute_v1/test_instance_group_managers.py
index 4dda887a5..eb059863c 100644
--- a/tests/unit/gapic/compute_v1/test_instance_group_managers.py
+++ b/tests/unit/gapic/compute_v1/test_instance_group_managers.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -555,7 +557,7 @@ def test_instance_group_managers_client_client_options_credentials_file(
dict,
],
)
-def test_abandon_instances_unary_rest(request_type):
+def test_abandon_instances_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -606,10 +608,10 @@ def test_abandon_instances_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.abandon_instances_unary(request)
+ response = client.abandon_instances(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -634,7 +636,7 @@ def test_abandon_instances_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_abandon_instances_unary_rest_required_fields(
+def test_abandon_instances_rest_required_fields(
request_type=compute.AbandonInstancesInstanceGroupManagerRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
@@ -708,14 +710,14 @@ def test_abandon_instances_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.abandon_instances_unary(request)
+ response = client.abandon_instances(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_abandon_instances_unary_rest_unset_required_fields():
+def test_abandon_instances_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -735,7 +737,7 @@ def test_abandon_instances_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_abandon_instances_unary_rest_interceptors(null_interceptor):
+def test_abandon_instances_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -775,7 +777,7 @@ def test_abandon_instances_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.abandon_instances_unary(
+ client.abandon_instances(
request,
metadata=[
("key", "val"),
@@ -787,7 +789,7 @@ def test_abandon_instances_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_abandon_instances_unary_rest_bad_request(
+def test_abandon_instances_rest_bad_request(
transport: str = "rest",
request_type=compute.AbandonInstancesInstanceGroupManagerRequest,
):
@@ -816,10 +818,10 @@ def test_abandon_instances_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.abandon_instances_unary(request)
+ client.abandon_instances(request)
-def test_abandon_instances_unary_rest_flattened():
+def test_abandon_instances_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -856,7 +858,7 @@ def test_abandon_instances_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.abandon_instances_unary(**mock_args)
+ client.abandon_instances(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -869,7 +871,7 @@ def test_abandon_instances_unary_rest_flattened():
)
-def test_abandon_instances_unary_rest_flattened_error(transport: str = "rest"):
+def test_abandon_instances_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -878,7 +880,7 @@ def test_abandon_instances_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.abandon_instances_unary(
+ client.abandon_instances(
compute.AbandonInstancesInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
@@ -889,7 +891,7 @@ def test_abandon_instances_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_abandon_instances_unary_rest_error():
+def test_abandon_instances_rest_error():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -898,57 +900,76 @@ def test_abandon_instances_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.AggregatedListInstanceGroupManagersRequest,
+ compute.AbandonInstancesInstanceGroupManagerRequest,
dict,
],
)
-def test_aggregated_list_rest(request_type):
+def test_abandon_instances_unary_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_managers_abandon_instances_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManagerAggregatedList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- unreachables=["unreachables_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupManagerAggregatedList.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.aggregated_list(request)
+ response = client.abandon_instances_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.AggregatedListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
- assert response.unreachables == ["unreachables_value"]
+ assert isinstance(response, compute.Operation)
-def test_aggregated_list_rest_required_fields(
- request_type=compute.AggregatedListInstanceGroupManagersRequest,
+def test_abandon_instances_unary_rest_required_fields(
+ request_type=compute.AbandonInstancesInstanceGroupManagerRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
request_init = {}
+ request_init["instance_group_manager"] = ""
request_init["project"] = ""
+ request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -960,32 +981,29 @@ def test_aggregated_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).aggregated_list._get_unset_required_fields(jsonified_request)
+ ).abandon_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).aggregated_list._get_unset_required_fields(jsonified_request)
+ ).abandon_instances._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "include_all_scopes",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -994,7 +1012,7 @@ def test_aggregated_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManagerAggregatedList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1005,49 +1023,46 @@ def test_aggregated_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupManagerAggregatedList.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.aggregated_list(request)
+ response = client.abandon_instances_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_aggregated_list_rest_unset_required_fields():
+def test_abandon_instances_unary_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.aggregated_list._get_unset_required_fields({})
+ unset_fields = transport.abandon_instances._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "includeAllScopes",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "instanceGroupManager",
+ "instanceGroupManagersAbandonInstancesRequestResource",
+ "project",
+ "zone",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_aggregated_list_rest_interceptors(null_interceptor):
+def test_abandon_instances_unary_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1060,9 +1075,9 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "post_aggregated_list"
+ transports.InstanceGroupManagersRestInterceptor, "post_abandon_instances"
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "pre_aggregated_list"
+ transports.InstanceGroupManagersRestInterceptor, "pre_abandon_instances"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1077,19 +1092,17 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InstanceGroupManagerAggregatedList.to_json(
- compute.InstanceGroupManagerAggregatedList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.AggregatedListInstanceGroupManagersRequest()
+ request = compute.AbandonInstancesInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstanceGroupManagerAggregatedList
+ post.return_value = compute.Operation
- client.aggregated_list(
+ client.abandon_instances_unary(
request,
metadata=[
("key", "val"),
@@ -1101,9 +1114,9 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_aggregated_list_rest_bad_request(
+def test_abandon_instances_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.AggregatedListInstanceGroupManagersRequest,
+ request_type=compute.AbandonInstancesInstanceGroupManagerRequest,
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1111,7 +1124,14 @@ def test_aggregated_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_managers_abandon_instances_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1123,10 +1143,10 @@ def test_aggregated_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.aggregated_list(request)
+ client.abandon_instances_unary(request)
-def test_aggregated_list_rest_flattened():
+def test_abandon_instances_unary_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1135,41 +1155,48 @@ def test_aggregated_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManagerAggregatedList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_managers_abandon_instances_request_resource=compute.InstanceGroupManagersAbandonInstancesRequest(
+ instances=["instances_value"]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupManagerAggregatedList.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.aggregated_list(**mock_args)
+ client.abandon_instances_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/aggregated/instanceGroupManagers"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/abandonInstances"
% client.transport._host,
args[1],
)
-def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
+def test_abandon_instances_unary_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1178,185 +1205,77 @@ def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.aggregated_list(
- compute.AggregatedListInstanceGroupManagersRequest(),
+ client.abandon_instances_unary(
+ compute.AbandonInstancesInstanceGroupManagerRequest(),
project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_managers_abandon_instances_request_resource=compute.InstanceGroupManagersAbandonInstancesRequest(
+ instances=["instances_value"]
+ ),
)
-def test_aggregated_list_rest_pager(transport: str = "rest"):
+def test_abandon_instances_unary_rest_error():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.AggregatedListInstanceGroupManagersRequest,
+ dict,
+ ],
+)
+def test_aggregated_list_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ transport="rest",
)
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
# Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.InstanceGroupManagerAggregatedList(
- items={
- "a": compute.InstanceGroupManagersScopedList(),
- "b": compute.InstanceGroupManagersScopedList(),
- "c": compute.InstanceGroupManagersScopedList(),
- },
- next_page_token="abc",
- ),
- compute.InstanceGroupManagerAggregatedList(
- items={},
- next_page_token="def",
- ),
- compute.InstanceGroupManagerAggregatedList(
- items={
- "g": compute.InstanceGroupManagersScopedList(),
- },
- next_page_token="ghi",
- ),
- compute.InstanceGroupManagerAggregatedList(
- items={
- "h": compute.InstanceGroupManagersScopedList(),
- "i": compute.InstanceGroupManagersScopedList(),
- },
- ),
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupManagerAggregatedList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ unreachables=["unreachables_value"],
)
- # Two responses for two calls
- response = response + response
- # Wrap the values into proper Response objs
- response = tuple(
- compute.InstanceGroupManagerAggregatedList.to_json(x) for x in response
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroupManagerAggregatedList.to_json(
+ return_value
)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.aggregated_list(request=sample_request)
-
- assert isinstance(pager.get("a"), compute.InstanceGroupManagersScopedList)
- assert pager.get("h") is None
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, tuple) for i in results)
- for result in results:
- assert isinstance(result, tuple)
- assert tuple(type(t) for t in result) == (
- str,
- compute.InstanceGroupManagersScopedList,
- )
-
- assert pager.get("a") is None
- assert isinstance(pager.get("h"), compute.InstanceGroupManagersScopedList)
-
- pages = list(client.aggregated_list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
-
-@pytest.mark.parametrize(
- "request_type",
- [
- compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest,
- dict,
- ],
-)
-def test_apply_updates_to_instances_unary_rest(request_type):
- client = InstanceGroupManagersClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport="rest",
- )
-
- # send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "zone": "sample2",
- "instance_group_manager": "sample3",
- }
- request_init["instance_group_managers_apply_updates_request_resource"] = {
- "all_instances": True,
- "instances": ["instances_value_1", "instances_value_2"],
- "minimal_action": "minimal_action_value",
- "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
- }
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
- kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
- self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
- )
-
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.apply_updates_to_instances_unary(request)
+ response = client.aggregated_list(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert isinstance(response, pagers.AggregatedListPager)
+ assert response.id == "id_value"
assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
+ assert response.next_page_token == "next_page_token_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.unreachables == ["unreachables_value"]
-def test_apply_updates_to_instances_unary_rest_required_fields(
- request_type=compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest,
+def test_aggregated_list_rest_required_fields(
+ request_type=compute.AggregatedListInstanceGroupManagersRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
request_init = {}
- request_init["instance_group_manager"] = ""
request_init["project"] = ""
- request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1368,27 +1287,32 @@ def test_apply_updates_to_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).apply_updates_to_instances._get_unset_required_fields(jsonified_request)
+ ).aggregated_list._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
jsonified_request["project"] = "project_value"
- jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).apply_updates_to_instances._get_unset_required_fields(jsonified_request)
+ ).aggregated_list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "include_all_scopes",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "instanceGroupManager" in jsonified_request
- assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "zone" in jsonified_request
- assert jsonified_request["zone"] == "zone_value"
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1397,7 +1321,7 @@ def test_apply_updates_to_instances_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.InstanceGroupManagerAggregatedList()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1408,46 +1332,49 @@ def test_apply_updates_to_instances_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InstanceGroupManagerAggregatedList.to_json(
+ return_value
+ )
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.apply_updates_to_instances_unary(request)
+ response = client.aggregated_list(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_apply_updates_to_instances_unary_rest_unset_required_fields():
+def test_aggregated_list_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.apply_updates_to_instances._get_unset_required_fields({})
+ unset_fields = transport.aggregated_list._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
- & set(
+ set(
(
- "instanceGroupManager",
- "instanceGroupManagersApplyUpdatesRequestResource",
- "project",
- "zone",
+ "filter",
+ "includeAllScopes",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
)
)
+ & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_apply_updates_to_instances_unary_rest_interceptors(null_interceptor):
+def test_aggregated_list_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1460,11 +1387,9 @@ def test_apply_updates_to_instances_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor,
- "post_apply_updates_to_instances",
+ transports.InstanceGroupManagersRestInterceptor, "post_aggregated_list"
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor,
- "pre_apply_updates_to_instances",
+ transports.InstanceGroupManagersRestInterceptor, "pre_aggregated_list"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1479,17 +1404,19 @@ def test_apply_updates_to_instances_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.InstanceGroupManagerAggregatedList.to_json(
+ compute.InstanceGroupManagerAggregatedList()
+ )
- request = compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest()
+ request = compute.AggregatedListInstanceGroupManagersRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.InstanceGroupManagerAggregatedList
- client.apply_updates_to_instances_unary(
+ client.aggregated_list(
request,
metadata=[
("key", "val"),
@@ -1501,9 +1428,9 @@ def test_apply_updates_to_instances_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_apply_updates_to_instances_unary_rest_bad_request(
+def test_aggregated_list_rest_bad_request(
transport: str = "rest",
- request_type=compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest,
+ request_type=compute.AggregatedListInstanceGroupManagersRequest,
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1511,17 +1438,7 @@ def test_apply_updates_to_instances_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "zone": "sample2",
- "instance_group_manager": "sample3",
- }
- request_init["instance_group_managers_apply_updates_request_resource"] = {
- "all_instances": True,
- "instances": ["instances_value_1", "instances_value_2"],
- "minimal_action": "minimal_action_value",
- "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
- }
+ request_init = {"project": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1533,10 +1450,10 @@ def test_apply_updates_to_instances_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.apply_updates_to_instances_unary(request)
+ client.aggregated_list(request)
-def test_apply_updates_to_instances_unary_rest_flattened():
+def test_aggregated_list_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1545,48 +1462,41 @@ def test_apply_updates_to_instances_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.InstanceGroupManagerAggregatedList()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "zone": "sample2",
- "instance_group_manager": "sample3",
- }
+ sample_request = {"project": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- zone="zone_value",
- instance_group_manager="instance_group_manager_value",
- instance_group_managers_apply_updates_request_resource=compute.InstanceGroupManagersApplyUpdatesRequest(
- all_instances=True
- ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InstanceGroupManagerAggregatedList.to_json(
+ return_value
+ )
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.apply_updates_to_instances_unary(**mock_args)
+ client.aggregated_list(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/applyUpdatesToInstances"
+ "%s/compute/v1/projects/{project}/aggregated/instanceGroupManagers"
% client.transport._host,
args[1],
)
-def test_apply_updates_to_instances_unary_rest_flattened_error(transport: str = "rest"):
+def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1595,31 +1505,95 @@ def test_apply_updates_to_instances_unary_rest_flattened_error(transport: str =
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.apply_updates_to_instances_unary(
- compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest(),
+ client.aggregated_list(
+ compute.AggregatedListInstanceGroupManagersRequest(),
project="project_value",
- zone="zone_value",
- instance_group_manager="instance_group_manager_value",
- instance_group_managers_apply_updates_request_resource=compute.InstanceGroupManagersApplyUpdatesRequest(
- all_instances=True
- ),
)
-def test_apply_updates_to_instances_unary_rest_error():
+def test_aggregated_list_rest_pager(transport: str = "rest"):
client = InstanceGroupManagersClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
)
-
-@pytest.mark.parametrize(
- "request_type",
- [
- compute.CreateInstancesInstanceGroupManagerRequest,
- dict,
- ],
-)
-def test_create_instances_unary_rest(request_type):
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.InstanceGroupManagerAggregatedList(
+ items={
+ "a": compute.InstanceGroupManagersScopedList(),
+ "b": compute.InstanceGroupManagersScopedList(),
+ "c": compute.InstanceGroupManagersScopedList(),
+ },
+ next_page_token="abc",
+ ),
+ compute.InstanceGroupManagerAggregatedList(
+ items={},
+ next_page_token="def",
+ ),
+ compute.InstanceGroupManagerAggregatedList(
+ items={
+ "g": compute.InstanceGroupManagersScopedList(),
+ },
+ next_page_token="ghi",
+ ),
+ compute.InstanceGroupManagerAggregatedList(
+ items={
+ "h": compute.InstanceGroupManagersScopedList(),
+ "i": compute.InstanceGroupManagersScopedList(),
+ },
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.InstanceGroupManagerAggregatedList.to_json(x) for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.aggregated_list(request=sample_request)
+
+ assert isinstance(pager.get("a"), compute.InstanceGroupManagersScopedList)
+ assert pager.get("h") is None
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, tuple) for i in results)
+ for result in results:
+ assert isinstance(result, tuple)
+ assert tuple(type(t) for t in result) == (
+ str,
+ compute.InstanceGroupManagersScopedList,
+ )
+
+ assert pager.get("a") is None
+ assert isinstance(pager.get("h"), compute.InstanceGroupManagersScopedList)
+
+ pages = list(client.aggregated_list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_apply_updates_to_instances_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1631,15 +1605,11 @@ def test_create_instances_unary_rest(request_type):
"zone": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_managers_create_instances_request_resource"] = {
- "instances": [
- {
- "fingerprint": "fingerprint_value",
- "name": "name_value",
- "preserved_state": {"disks": {}, "metadata": {}},
- "status": "status_value",
- }
- ]
+ request_init["instance_group_managers_apply_updates_request_resource"] = {
+ "all_instances": True,
+ "instances": ["instances_value_1", "instances_value_2"],
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
}
request = request_type(request_init)
@@ -1677,10 +1647,10 @@ def test_create_instances_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.create_instances_unary(request)
+ response = client.apply_updates_to_instances(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1705,8 +1675,8 @@ def test_create_instances_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_create_instances_unary_rest_required_fields(
- request_type=compute.CreateInstancesInstanceGroupManagerRequest,
+def test_apply_updates_to_instances_rest_required_fields(
+ request_type=compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
@@ -1725,7 +1695,7 @@ def test_create_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).create_instances._get_unset_required_fields(jsonified_request)
+ ).apply_updates_to_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1736,9 +1706,7 @@ def test_create_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).create_instances._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).apply_updates_to_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1779,25 +1747,25 @@ def test_create_instances_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.create_instances_unary(request)
+ response = client.apply_updates_to_instances(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_create_instances_unary_rest_unset_required_fields():
+def test_apply_updates_to_instances_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.create_instances._get_unset_required_fields({})
+ unset_fields = transport.apply_updates_to_instances._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"instanceGroupManager",
- "instanceGroupManagersCreateInstancesRequestResource",
+ "instanceGroupManagersApplyUpdatesRequestResource",
"project",
"zone",
)
@@ -1806,7 +1774,7 @@ def test_create_instances_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_create_instances_unary_rest_interceptors(null_interceptor):
+def test_apply_updates_to_instances_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1819,9 +1787,11 @@ def test_create_instances_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "post_create_instances"
+ transports.InstanceGroupManagersRestInterceptor,
+ "post_apply_updates_to_instances",
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "pre_create_instances"
+ transports.InstanceGroupManagersRestInterceptor,
+ "pre_apply_updates_to_instances",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1838,7 +1808,7 @@ def test_create_instances_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.CreateInstancesInstanceGroupManagerRequest()
+ request = compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1846,7 +1816,7 @@ def test_create_instances_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.create_instances_unary(
+ client.apply_updates_to_instances(
request,
metadata=[
("key", "val"),
@@ -1858,9 +1828,9 @@ def test_create_instances_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_create_instances_unary_rest_bad_request(
+def test_apply_updates_to_instances_rest_bad_request(
transport: str = "rest",
- request_type=compute.CreateInstancesInstanceGroupManagerRequest,
+ request_type=compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest,
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1873,15 +1843,11 @@ def test_create_instances_unary_rest_bad_request(
"zone": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_managers_create_instances_request_resource"] = {
- "instances": [
- {
- "fingerprint": "fingerprint_value",
- "name": "name_value",
- "preserved_state": {"disks": {}, "metadata": {}},
- "status": "status_value",
- }
- ]
+ request_init["instance_group_managers_apply_updates_request_resource"] = {
+ "all_instances": True,
+ "instances": ["instances_value_1", "instances_value_2"],
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
}
request = request_type(request_init)
@@ -1894,10 +1860,10 @@ def test_create_instances_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.create_instances_unary(request)
+ client.apply_updates_to_instances(request)
-def test_create_instances_unary_rest_flattened():
+def test_apply_updates_to_instances_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1920,8 +1886,8 @@ def test_create_instances_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_managers_create_instances_request_resource=compute.InstanceGroupManagersCreateInstancesRequest(
- instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")]
+ instance_group_managers_apply_updates_request_resource=compute.InstanceGroupManagersApplyUpdatesRequest(
+ all_instances=True
),
)
mock_args.update(sample_request)
@@ -1934,20 +1900,20 @@ def test_create_instances_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.create_instances_unary(**mock_args)
+ client.apply_updates_to_instances(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/createInstances"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/applyUpdatesToInstances"
% client.transport._host,
args[1],
)
-def test_create_instances_unary_rest_flattened_error(transport: str = "rest"):
+def test_apply_updates_to_instances_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1956,18 +1922,18 @@ def test_create_instances_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.create_instances_unary(
- compute.CreateInstancesInstanceGroupManagerRequest(),
+ client.apply_updates_to_instances(
+ compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_managers_create_instances_request_resource=compute.InstanceGroupManagersCreateInstancesRequest(
- instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")]
+ instance_group_managers_apply_updates_request_resource=compute.InstanceGroupManagersApplyUpdatesRequest(
+ all_instances=True
),
)
-def test_create_instances_unary_rest_error():
+def test_apply_updates_to_instances_rest_error():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1976,11 +1942,11 @@ def test_create_instances_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteInstanceGroupManagerRequest,
+ compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest,
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_apply_updates_to_instances_unary_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1992,6 +1958,12 @@ def test_delete_unary_rest(request_type):
"zone": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["instance_group_managers_apply_updates_request_resource"] = {
+ "all_instances": True,
+ "instances": ["instances_value_1", "instances_value_2"],
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -2028,36 +2000,14 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.apply_updates_to_instances_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteInstanceGroupManagerRequest,
+def test_apply_updates_to_instances_unary_rest_required_fields(
+ request_type=compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
@@ -2076,7 +2026,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).apply_updates_to_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2087,9 +2037,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).apply_updates_to_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2118,9 +2066,10 @@ def test_delete_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -2129,24 +2078,25 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.apply_updates_to_instances_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_apply_updates_to_instances_unary_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.apply_updates_to_instances._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"instanceGroupManager",
+ "instanceGroupManagersApplyUpdatesRequestResource",
"project",
"zone",
)
@@ -2155,7 +2105,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_apply_updates_to_instances_unary_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2168,9 +2118,11 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "post_delete"
+ transports.InstanceGroupManagersRestInterceptor,
+ "post_apply_updates_to_instances",
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "pre_delete"
+ transports.InstanceGroupManagersRestInterceptor,
+ "pre_apply_updates_to_instances",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2187,7 +2139,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteInstanceGroupManagerRequest()
+ request = compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2195,7 +2147,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.apply_updates_to_instances_unary(
request,
metadata=[
("key", "val"),
@@ -2207,8 +2159,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteInstanceGroupManagerRequest
+def test_apply_updates_to_instances_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest,
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2221,6 +2174,12 @@ def test_delete_unary_rest_bad_request(
"zone": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["instance_group_managers_apply_updates_request_resource"] = {
+ "all_instances": True,
+ "instances": ["instances_value_1", "instances_value_2"],
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2232,10 +2191,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.apply_updates_to_instances_unary(request)
-def test_delete_unary_rest_flattened():
+def test_apply_updates_to_instances_unary_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2258,6 +2217,9 @@ def test_delete_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
+ instance_group_managers_apply_updates_request_resource=compute.InstanceGroupManagersApplyUpdatesRequest(
+ all_instances=True
+ ),
)
mock_args.update(sample_request)
@@ -2269,20 +2231,20 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.apply_updates_to_instances_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/applyUpdatesToInstances"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_apply_updates_to_instances_unary_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2291,15 +2253,18 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteInstanceGroupManagerRequest(),
+ client.apply_updates_to_instances_unary(
+ compute.ApplyUpdatesToInstancesInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
+ instance_group_managers_apply_updates_request_resource=compute.InstanceGroupManagersApplyUpdatesRequest(
+ all_instances=True
+ ),
)
-def test_delete_unary_rest_error():
+def test_apply_updates_to_instances_unary_rest_error():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2308,11 +2273,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteInstancesInstanceGroupManagerRequest,
+ compute.CreateInstancesInstanceGroupManagerRequest,
dict,
],
)
-def test_delete_instances_unary_rest(request_type):
+def test_create_instances_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2324,9 +2289,15 @@ def test_delete_instances_unary_rest(request_type):
"zone": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_managers_delete_instances_request_resource"] = {
- "instances": ["instances_value_1", "instances_value_2"],
- "skip_instances_on_validation_error": True,
+ request_init["instance_group_managers_create_instances_request_resource"] = {
+ "instances": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
}
request = request_type(request_init)
@@ -2364,10 +2335,10 @@ def test_delete_instances_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_instances_unary(request)
+ response = client.create_instances(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2392,8 +2363,8 @@ def test_delete_instances_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_instances_unary_rest_required_fields(
- request_type=compute.DeleteInstancesInstanceGroupManagerRequest,
+def test_create_instances_rest_required_fields(
+ request_type=compute.CreateInstancesInstanceGroupManagerRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
@@ -2412,7 +2383,7 @@ def test_delete_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_instances._get_unset_required_fields(jsonified_request)
+ ).create_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2423,7 +2394,7 @@ def test_delete_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_instances._get_unset_required_fields(jsonified_request)
+ ).create_instances._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -2466,25 +2437,25 @@ def test_delete_instances_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_instances_unary(request)
+ response = client.create_instances(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_instances_unary_rest_unset_required_fields():
+def test_create_instances_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete_instances._get_unset_required_fields({})
+ unset_fields = transport.create_instances._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instanceGroupManager",
- "instanceGroupManagersDeleteInstancesRequestResource",
+ "instanceGroupManagersCreateInstancesRequestResource",
"project",
"zone",
)
@@ -2493,7 +2464,7 @@ def test_delete_instances_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_instances_unary_rest_interceptors(null_interceptor):
+def test_create_instances_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2506,9 +2477,9 @@ def test_delete_instances_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "post_delete_instances"
+ transports.InstanceGroupManagersRestInterceptor, "post_create_instances"
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "pre_delete_instances"
+ transports.InstanceGroupManagersRestInterceptor, "pre_create_instances"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2525,7 +2496,7 @@ def test_delete_instances_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteInstancesInstanceGroupManagerRequest()
+ request = compute.CreateInstancesInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2533,7 +2504,7 @@ def test_delete_instances_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_instances_unary(
+ client.create_instances(
request,
metadata=[
("key", "val"),
@@ -2545,9 +2516,9 @@ def test_delete_instances_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_instances_unary_rest_bad_request(
+def test_create_instances_rest_bad_request(
transport: str = "rest",
- request_type=compute.DeleteInstancesInstanceGroupManagerRequest,
+ request_type=compute.CreateInstancesInstanceGroupManagerRequest,
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2560,9 +2531,15 @@ def test_delete_instances_unary_rest_bad_request(
"zone": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_managers_delete_instances_request_resource"] = {
- "instances": ["instances_value_1", "instances_value_2"],
- "skip_instances_on_validation_error": True,
+ request_init["instance_group_managers_create_instances_request_resource"] = {
+ "instances": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
}
request = request_type(request_init)
@@ -2575,10 +2552,10 @@ def test_delete_instances_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_instances_unary(request)
+ client.create_instances(request)
-def test_delete_instances_unary_rest_flattened():
+def test_create_instances_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2601,8 +2578,8 @@ def test_delete_instances_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_managers_delete_instances_request_resource=compute.InstanceGroupManagersDeleteInstancesRequest(
- instances=["instances_value"]
+ instance_group_managers_create_instances_request_resource=compute.InstanceGroupManagersCreateInstancesRequest(
+ instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")]
),
)
mock_args.update(sample_request)
@@ -2615,20 +2592,20 @@ def test_delete_instances_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_instances_unary(**mock_args)
+ client.create_instances(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/deleteInstances"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/createInstances"
% client.transport._host,
args[1],
)
-def test_delete_instances_unary_rest_flattened_error(transport: str = "rest"):
+def test_create_instances_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2637,18 +2614,18 @@ def test_delete_instances_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_instances_unary(
- compute.DeleteInstancesInstanceGroupManagerRequest(),
+ client.create_instances(
+ compute.CreateInstancesInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_managers_delete_instances_request_resource=compute.InstanceGroupManagersDeleteInstancesRequest(
- instances=["instances_value"]
+ instance_group_managers_create_instances_request_resource=compute.InstanceGroupManagersCreateInstancesRequest(
+ instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")]
),
)
-def test_delete_instances_unary_rest_error():
+def test_create_instances_rest_error():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2657,11 +2634,11 @@ def test_delete_instances_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeletePerInstanceConfigsInstanceGroupManagerRequest,
+ compute.CreateInstancesInstanceGroupManagerRequest,
dict,
],
)
-def test_delete_per_instance_configs_unary_rest(request_type):
+def test_create_instances_unary_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2673,8 +2650,15 @@ def test_delete_per_instance_configs_unary_rest(request_type):
"zone": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_managers_delete_per_instance_configs_req_resource"] = {
- "names": ["names_value_1", "names_value_2"]
+ request_init["instance_group_managers_create_instances_request_resource"] = {
+ "instances": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
}
request = request_type(request_init)
@@ -2712,36 +2696,14 @@ def test_delete_per_instance_configs_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_per_instance_configs_unary(request)
+ response = client.create_instances_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_delete_per_instance_configs_unary_rest_required_fields(
- request_type=compute.DeletePerInstanceConfigsInstanceGroupManagerRequest,
+def test_create_instances_unary_rest_required_fields(
+ request_type=compute.CreateInstancesInstanceGroupManagerRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
@@ -2760,7 +2722,7 @@ def test_delete_per_instance_configs_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_per_instance_configs._get_unset_required_fields(jsonified_request)
+ ).create_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2771,7 +2733,9 @@ def test_delete_per_instance_configs_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_per_instance_configs._get_unset_required_fields(jsonified_request)
+ ).create_instances._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2812,25 +2776,25 @@ def test_delete_per_instance_configs_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_per_instance_configs_unary(request)
+ response = client.create_instances_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_per_instance_configs_unary_rest_unset_required_fields():
+def test_create_instances_unary_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete_per_instance_configs._get_unset_required_fields({})
+ unset_fields = transport.create_instances._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"instanceGroupManager",
- "instanceGroupManagersDeletePerInstanceConfigsReqResource",
+ "instanceGroupManagersCreateInstancesRequestResource",
"project",
"zone",
)
@@ -2839,7 +2803,7 @@ def test_delete_per_instance_configs_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_per_instance_configs_unary_rest_interceptors(null_interceptor):
+def test_create_instances_unary_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2852,11 +2816,9 @@ def test_delete_per_instance_configs_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor,
- "post_delete_per_instance_configs",
+ transports.InstanceGroupManagersRestInterceptor, "post_create_instances"
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor,
- "pre_delete_per_instance_configs",
+ transports.InstanceGroupManagersRestInterceptor, "pre_create_instances"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2873,7 +2835,7 @@ def test_delete_per_instance_configs_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeletePerInstanceConfigsInstanceGroupManagerRequest()
+ request = compute.CreateInstancesInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2881,7 +2843,7 @@ def test_delete_per_instance_configs_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_per_instance_configs_unary(
+ client.create_instances_unary(
request,
metadata=[
("key", "val"),
@@ -2893,9 +2855,9 @@ def test_delete_per_instance_configs_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_per_instance_configs_unary_rest_bad_request(
+def test_create_instances_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.DeletePerInstanceConfigsInstanceGroupManagerRequest,
+ request_type=compute.CreateInstancesInstanceGroupManagerRequest,
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2908,8 +2870,15 @@ def test_delete_per_instance_configs_unary_rest_bad_request(
"zone": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_managers_delete_per_instance_configs_req_resource"] = {
- "names": ["names_value_1", "names_value_2"]
+ request_init["instance_group_managers_create_instances_request_resource"] = {
+ "instances": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
}
request = request_type(request_init)
@@ -2922,10 +2891,10 @@ def test_delete_per_instance_configs_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_per_instance_configs_unary(request)
+ client.create_instances_unary(request)
-def test_delete_per_instance_configs_unary_rest_flattened():
+def test_create_instances_unary_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2948,8 +2917,8 @@ def test_delete_per_instance_configs_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_managers_delete_per_instance_configs_req_resource=compute.InstanceGroupManagersDeletePerInstanceConfigsReq(
- names=["names_value"]
+ instance_group_managers_create_instances_request_resource=compute.InstanceGroupManagersCreateInstancesRequest(
+ instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")]
),
)
mock_args.update(sample_request)
@@ -2962,22 +2931,20 @@ def test_delete_per_instance_configs_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_per_instance_configs_unary(**mock_args)
+ client.create_instances_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/deletePerInstanceConfigs"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/createInstances"
% client.transport._host,
args[1],
)
-def test_delete_per_instance_configs_unary_rest_flattened_error(
- transport: str = "rest",
-):
+def test_create_instances_unary_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2986,18 +2953,18 @@ def test_delete_per_instance_configs_unary_rest_flattened_error(
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_per_instance_configs_unary(
- compute.DeletePerInstanceConfigsInstanceGroupManagerRequest(),
+ client.create_instances_unary(
+ compute.CreateInstancesInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_managers_delete_per_instance_configs_req_resource=compute.InstanceGroupManagersDeletePerInstanceConfigsReq(
- names=["names_value"]
+ instance_group_managers_create_instances_request_resource=compute.InstanceGroupManagersCreateInstancesRequest(
+ instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")]
),
)
-def test_delete_per_instance_configs_unary_rest_error():
+def test_create_instances_unary_rest_error():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3006,11 +2973,11 @@ def test_delete_per_instance_configs_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetInstanceGroupManagerRequest,
+ compute.DeleteInstanceGroupManagerRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3027,50 +2994,68 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManager(
- base_instance_name="base_instance_name_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
- instance_group="instance_group_value",
- instance_template="instance_template_value",
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- target_pools=["target_pools_value"],
- target_size=1185,
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupManager.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.InstanceGroupManager)
- assert response.base_instance_name == "base_instance_name_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
- assert response.instance_group == "instance_group_value"
- assert response.instance_template == "instance_template_value"
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.target_pools == ["target_pools_value"]
- assert response.target_size == 1185
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
assert response.zone == "zone_value"
-def test_get_rest_required_fields(request_type=compute.GetInstanceGroupManagerRequest):
+def test_delete_rest_required_fields(
+ request_type=compute.DeleteInstanceGroupManagerRequest,
+):
transport_class = transports.InstanceGroupManagersRestTransport
request_init = {}
@@ -3088,7 +3073,7 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceGroupManagerRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3099,7 +3084,9 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceGroupManagerRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -3117,7 +3104,7 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceGroupManagerRe
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManager()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3128,32 +3115,32 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceGroupManagerRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupManager.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"instanceGroupManager",
@@ -3165,7 +3152,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3178,9 +3165,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "post_get"
+ transports.InstanceGroupManagersRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "pre_get"
+ transports.InstanceGroupManagersRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3195,19 +3182,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InstanceGroupManager.to_json(
- compute.InstanceGroupManager()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetInstanceGroupManagerRequest()
+ request = compute.DeleteInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstanceGroupManager
+ post.return_value = compute.Operation
- client.get(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -3219,8 +3204,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetInstanceGroupManagerRequest
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteInstanceGroupManagerRequest
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3244,10 +3229,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete(request)
-def test_get_rest_flattened():
+def test_delete_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3256,7 +3241,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManager()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -3276,12 +3261,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupManager.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -3294,7 +3279,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3303,15 +3288,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetInstanceGroupManagerRequest(),
+ client.delete(
+ compute.DeleteInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
)
-def test_get_rest_error():
+def test_delete_rest_error():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3320,82 +3305,21 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertInstanceGroupManagerRequest,
+ compute.DeleteInstanceGroupManagerRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_delete_unary_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
- request_init["instance_group_manager_resource"] = {
- "auto_healing_policies": [
- {"health_check": "health_check_value", "initial_delay_sec": 1778}
- ],
- "base_instance_name": "base_instance_name_value",
- "creation_timestamp": "creation_timestamp_value",
- "current_actions": {
- "abandoning": 1041,
- "creating": 845,
- "creating_without_retries": 2589,
- "deleting": 844,
- "none": 432,
- "recreating": 1060,
- "refreshing": 1069,
- "restarting": 1091,
- "resuming": 874,
- "starting": 876,
- "stopping": 884,
- "suspending": 1088,
- "verifying": 979,
- },
- "description": "description_value",
- "distribution_policy": {
- "target_shape": "target_shape_value",
- "zones": [{"zone": "zone_value"}],
- },
- "fingerprint": "fingerprint_value",
- "id": 205,
- "instance_group": "instance_group_value",
- "instance_template": "instance_template_value",
- "kind": "kind_value",
- "name": "name_value",
- "named_ports": [{"name": "name_value", "port": 453}],
- "region": "region_value",
- "self_link": "self_link_value",
- "stateful_policy": {"preserved_state": {"disks": {}}},
- "status": {
- "autoscaler": "autoscaler_value",
- "is_stable": True,
- "stateful": {
- "has_stateful_config": True,
- "per_instance_configs": {"all_effective": True},
- },
- "version_target": {"is_reached": True},
- },
- "target_pools": ["target_pools_value_1", "target_pools_value_2"],
- "target_size": 1185,
- "update_policy": {
- "instance_redistribution_type": "instance_redistribution_type_value",
- "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
- "max_unavailable": {},
- "minimal_action": "minimal_action_value",
- "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
- "replacement_method": "replacement_method_value",
- "type_": "type__value",
- },
- "versions": [
- {
- "instance_template": "instance_template_value",
- "name": "name_value",
- "target_size": {},
- }
- ],
- "zone": "zone_value",
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
}
request = request_type(request_init)
@@ -3433,40 +3357,19 @@ def test_insert_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertInstanceGroupManagerRequest,
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteInstanceGroupManagerRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
request_init = {}
+ request_init["instance_group_manager"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -3480,22 +3383,25 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -3519,10 +3425,9 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "delete",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -3531,24 +3436,24 @@ def test_insert_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
- "instanceGroupManagerResource",
+ "instanceGroupManager",
"project",
"zone",
)
@@ -3557,7 +3462,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3570,9 +3475,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "post_insert"
+ transports.InstanceGroupManagersRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "pre_insert"
+ transports.InstanceGroupManagersRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3589,7 +3494,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.InsertInstanceGroupManagerRequest()
+ request = compute.DeleteInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3597,7 +3502,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.insert_unary(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -3609,8 +3514,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertInstanceGroupManagerRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteInstanceGroupManagerRequest
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3618,71 +3523,10 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
- request_init["instance_group_manager_resource"] = {
- "auto_healing_policies": [
- {"health_check": "health_check_value", "initial_delay_sec": 1778}
- ],
- "base_instance_name": "base_instance_name_value",
- "creation_timestamp": "creation_timestamp_value",
- "current_actions": {
- "abandoning": 1041,
- "creating": 845,
- "creating_without_retries": 2589,
- "deleting": 844,
- "none": 432,
- "recreating": 1060,
- "refreshing": 1069,
- "restarting": 1091,
- "resuming": 874,
- "starting": 876,
- "stopping": 884,
- "suspending": 1088,
- "verifying": 979,
- },
- "description": "description_value",
- "distribution_policy": {
- "target_shape": "target_shape_value",
- "zones": [{"zone": "zone_value"}],
- },
- "fingerprint": "fingerprint_value",
- "id": 205,
- "instance_group": "instance_group_value",
- "instance_template": "instance_template_value",
- "kind": "kind_value",
- "name": "name_value",
- "named_ports": [{"name": "name_value", "port": 453}],
- "region": "region_value",
- "self_link": "self_link_value",
- "stateful_policy": {"preserved_state": {"disks": {}}},
- "status": {
- "autoscaler": "autoscaler_value",
- "is_stable": True,
- "stateful": {
- "has_stateful_config": True,
- "per_instance_configs": {"all_effective": True},
- },
- "version_target": {"is_reached": True},
- },
- "target_pools": ["target_pools_value_1", "target_pools_value_2"],
- "target_size": 1185,
- "update_policy": {
- "instance_redistribution_type": "instance_redistribution_type_value",
- "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
- "max_unavailable": {},
- "minimal_action": "minimal_action_value",
- "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
- "replacement_method": "replacement_method_value",
- "type_": "type__value",
- },
- "versions": [
- {
- "instance_template": "instance_template_value",
- "name": "name_value",
- "target_size": {},
- }
- ],
- "zone": "zone_value",
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
}
request = request_type(request_init)
@@ -3695,10 +3539,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.delete_unary(request)
-def test_insert_unary_rest_flattened():
+def test_delete_unary_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3710,19 +3554,17 @@ def test_insert_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "zone": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- instance_group_manager_resource=compute.InstanceGroupManager(
- auto_healing_policies=[
- compute.InstanceGroupManagerAutoHealingPolicy(
- health_check="health_check_value"
- )
- ]
- ),
+ instance_group_manager="instance_group_manager_value",
)
mock_args.update(sample_request)
@@ -3734,20 +3576,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3756,21 +3598,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertInstanceGroupManagerRequest(),
+ client.delete_unary(
+ compute.DeleteInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
- instance_group_manager_resource=compute.InstanceGroupManager(
- auto_healing_policies=[
- compute.InstanceGroupManagerAutoHealingPolicy(
- health_check="health_check_value"
- )
- ]
- ),
+ instance_group_manager="instance_group_manager_value",
)
-def test_insert_unary_rest_error():
+def test_delete_unary_rest_error():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3779,52 +3615,97 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListInstanceGroupManagersRequest,
+ compute.DeleteInstancesInstanceGroupManagerRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_delete_instances_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_managers_delete_instances_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"],
+ "skip_instances_on_validation_error": True,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManagerList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupManagerList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.delete_instances(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(
- request_type=compute.ListInstanceGroupManagersRequest,
+def test_delete_instances_rest_required_fields(
+ request_type=compute.DeleteInstancesInstanceGroupManagerRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
request_init = {}
+ request_init["instance_group_manager"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -3838,30 +3719,25 @@ def test_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).delete_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).delete_instances._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -3874,7 +3750,7 @@ def test_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManagerList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3885,42 +3761,37 @@ def test_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupManagerList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.delete_instances(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_delete_instances_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.delete_instances._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
+ "instanceGroupManager",
+ "instanceGroupManagersDeleteInstancesRequestResource",
"project",
"zone",
)
@@ -3929,7 +3800,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_delete_instances_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3942,9 +3813,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "post_list"
+ transports.InstanceGroupManagersRestInterceptor, "post_delete_instances"
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "pre_list"
+ transports.InstanceGroupManagersRestInterceptor, "pre_delete_instances"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3959,19 +3830,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InstanceGroupManagerList.to_json(
- compute.InstanceGroupManagerList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListInstanceGroupManagersRequest()
+ request = compute.DeleteInstancesInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstanceGroupManagerList
+ post.return_value = compute.Operation
- client.list(
+ client.delete_instances(
request,
metadata=[
("key", "val"),
@@ -3983,8 +3852,9 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListInstanceGroupManagersRequest
+def test_delete_instances_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DeleteInstancesInstanceGroupManagerRequest,
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3992,7 +3862,15 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_managers_delete_instances_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"],
+ "skip_instances_on_validation_error": True,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -4004,10 +3882,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.delete_instances(request)
-def test_list_rest_flattened():
+def test_delete_instances_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4016,40 +3894,48 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManagerList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "zone": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_managers_delete_instances_request_resource=compute.InstanceGroupManagersDeleteInstancesRequest(
+ instances=["instances_value"]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupManagerList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.delete_instances(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/deleteInstances"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_delete_instances_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4058,82 +3944,31 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListInstanceGroupManagersRequest(),
+ client.delete_instances(
+ compute.DeleteInstancesInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_managers_delete_instances_request_resource=compute.InstanceGroupManagersDeleteInstancesRequest(
+ instances=["instances_value"]
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_delete_instances_rest_error():
client = InstanceGroupManagersClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.InstanceGroupManagerList(
- items=[
- compute.InstanceGroupManager(),
- compute.InstanceGroupManager(),
- compute.InstanceGroupManager(),
- ],
- next_page_token="abc",
- ),
- compute.InstanceGroupManagerList(
- items=[],
- next_page_token="def",
- ),
- compute.InstanceGroupManagerList(
- items=[
- compute.InstanceGroupManager(),
- ],
- next_page_token="ghi",
- ),
- compute.InstanceGroupManagerList(
- items=[
- compute.InstanceGroupManager(),
- compute.InstanceGroupManager(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.InstanceGroupManagerList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "zone": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.InstanceGroupManager) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.ListErrorsInstanceGroupManagersRequest,
+ compute.DeleteInstancesInstanceGroupManagerRequest,
dict,
],
)
-def test_list_errors_rest(request_type):
+def test_delete_instances_unary_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4145,32 +3980,54 @@ def test_list_errors_rest(request_type):
"zone": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["instance_group_managers_delete_instances_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"],
+ "skip_instances_on_validation_error": True,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManagersListErrorsResponse(
- next_page_token="next_page_token_value",
- )
-
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 200
- json_return_value = compute.InstanceGroupManagersListErrorsResponse.to_json(
- return_value
- )
- response_value._content = json_return_value.encode("UTF-8")
- req.return_value = response_value
- response = client.list_errors(request)
-
- # Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListErrorsPager)
- assert response.next_page_token == "next_page_token_value"
-
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
-def test_list_errors_rest_required_fields(
- request_type=compute.ListErrorsInstanceGroupManagersRequest,
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.delete_instances_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_delete_instances_unary_rest_required_fields(
+ request_type=compute.DeleteInstancesInstanceGroupManagerRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
@@ -4189,7 +4046,7 @@ def test_list_errors_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_errors._get_unset_required_fields(jsonified_request)
+ ).delete_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4200,17 +4057,9 @@ def test_list_errors_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_errors._get_unset_required_fields(jsonified_request)
+ ).delete_instances._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -4228,7 +4077,7 @@ def test_list_errors_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManagersListErrorsResponse()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -4239,45 +4088,37 @@ def test_list_errors_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupManagersListErrorsResponse.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_errors(request)
+ response = client.delete_instances_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_errors_rest_unset_required_fields():
+def test_delete_instances_unary_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list_errors._get_unset_required_fields({})
+ unset_fields = transport.delete_instances._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
"instanceGroupManager",
+ "instanceGroupManagersDeleteInstancesRequestResource",
"project",
"zone",
)
@@ -4286,7 +4127,7 @@ def test_list_errors_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_errors_rest_interceptors(null_interceptor):
+def test_delete_instances_unary_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -4299,9 +4140,9 @@ def test_list_errors_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "post_list_errors"
+ transports.InstanceGroupManagersRestInterceptor, "post_delete_instances"
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "pre_list_errors"
+ transports.InstanceGroupManagersRestInterceptor, "pre_delete_instances"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4316,21 +4157,17 @@ def test_list_errors_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = (
- compute.InstanceGroupManagersListErrorsResponse.to_json(
- compute.InstanceGroupManagersListErrorsResponse()
- )
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListErrorsInstanceGroupManagersRequest()
+ request = compute.DeleteInstancesInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstanceGroupManagersListErrorsResponse
+ post.return_value = compute.Operation
- client.list_errors(
+ client.delete_instances_unary(
request,
metadata=[
("key", "val"),
@@ -4342,8 +4179,9 @@ def test_list_errors_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_errors_rest_bad_request(
- transport: str = "rest", request_type=compute.ListErrorsInstanceGroupManagersRequest
+def test_delete_instances_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DeleteInstancesInstanceGroupManagerRequest,
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4356,6 +4194,10 @@ def test_list_errors_rest_bad_request(
"zone": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["instance_group_managers_delete_instances_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"],
+ "skip_instances_on_validation_error": True,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -4367,10 +4209,10 @@ def test_list_errors_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list_errors(request)
+ client.delete_instances_unary(request)
-def test_list_errors_rest_flattened():
+def test_delete_instances_unary_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4379,7 +4221,7 @@ def test_list_errors_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManagersListErrorsResponse()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -4393,33 +4235,34 @@ def test_list_errors_rest_flattened():
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
+ instance_group_managers_delete_instances_request_resource=compute.InstanceGroupManagersDeleteInstancesRequest(
+ instances=["instances_value"]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupManagersListErrorsResponse.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list_errors(**mock_args)
+ client.delete_instances_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/listErrors"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/deleteInstances"
% client.transport._host,
args[1],
)
-def test_list_errors_rest_flattened_error(transport: str = "rest"):
+def test_delete_instances_unary_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4428,89 +4271,31 @@ def test_list_errors_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list_errors(
- compute.ListErrorsInstanceGroupManagersRequest(),
+ client.delete_instances_unary(
+ compute.DeleteInstancesInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
+ instance_group_managers_delete_instances_request_resource=compute.InstanceGroupManagersDeleteInstancesRequest(
+ instances=["instances_value"]
+ ),
)
-def test_list_errors_rest_pager(transport: str = "rest"):
+def test_delete_instances_unary_rest_error():
client = InstanceGroupManagersClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.InstanceGroupManagersListErrorsResponse(
- items=[
- compute.InstanceManagedByIgmError(),
- compute.InstanceManagedByIgmError(),
- compute.InstanceManagedByIgmError(),
- ],
- next_page_token="abc",
- ),
- compute.InstanceGroupManagersListErrorsResponse(
- items=[],
- next_page_token="def",
- ),
- compute.InstanceGroupManagersListErrorsResponse(
- items=[
- compute.InstanceManagedByIgmError(),
- ],
- next_page_token="ghi",
- ),
- compute.InstanceGroupManagersListErrorsResponse(
- items=[
- compute.InstanceManagedByIgmError(),
- compute.InstanceManagedByIgmError(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(
- compute.InstanceGroupManagersListErrorsResponse.to_json(x) for x in response
- )
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {
- "project": "sample1",
- "zone": "sample2",
- "instance_group_manager": "sample3",
- }
-
- pager = client.list_errors(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.InstanceManagedByIgmError) for i in results)
-
- pages = list(client.list_errors(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.ListManagedInstancesInstanceGroupManagersRequest,
+ compute.DeletePerInstanceConfigsInstanceGroupManagerRequest,
dict,
],
)
-def test_list_managed_instances_rest(request_type):
+def test_delete_per_instance_configs_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4522,53 +4307,94 @@ def test_list_managed_instances_rest(request_type):
"zone": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["instance_group_managers_delete_per_instance_configs_req_resource"] = {
+ "names": ["names_value_1", "names_value_2"]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManagersListManagedInstancesResponse(
- next_page_token="next_page_token_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.InstanceGroupManagersListManagedInstancesResponse.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_managed_instances(request)
+ response = client.delete_per_instance_configs(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListManagedInstancesPager)
- assert response.next_page_token == "next_page_token_value"
-
-
-def test_list_managed_instances_rest_required_fields(
- request_type=compute.ListManagedInstancesInstanceGroupManagersRequest,
-):
- transport_class = transports.InstanceGroupManagersRestTransport
-
- request_init = {}
- request_init["instance_group_manager"] = ""
- request_init["project"] = ""
- request_init["zone"] = ""
- request = request_type(request_init)
- jsonified_request = json.loads(
- request_type.to_json(
- request, including_default_value_fields=False, use_integers_for_enums=False
- )
- )
-
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_delete_per_instance_configs_rest_required_fields(
+ request_type=compute.DeletePerInstanceConfigsInstanceGroupManagerRequest,
+):
+ transport_class = transports.InstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
# verify fields with default values are dropped
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_managed_instances._get_unset_required_fields(jsonified_request)
+ ).delete_per_instance_configs._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4579,17 +4405,7 @@ def test_list_managed_instances_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_managed_instances._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ ).delete_per_instance_configs._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -4607,7 +4423,7 @@ def test_list_managed_instances_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManagersListManagedInstancesResponse()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -4621,44 +4437,34 @@ def test_list_managed_instances_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.InstanceGroupManagersListManagedInstancesResponse.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_managed_instances(request)
+ response = client.delete_per_instance_configs(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_managed_instances_rest_unset_required_fields():
+def test_delete_per_instance_configs_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list_managed_instances._get_unset_required_fields({})
+ unset_fields = transport.delete_per_instance_configs._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(())
& set(
(
"instanceGroupManager",
+ "instanceGroupManagersDeletePerInstanceConfigsReqResource",
"project",
"zone",
)
@@ -4667,7 +4473,7 @@ def test_list_managed_instances_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_managed_instances_rest_interceptors(null_interceptor):
+def test_delete_per_instance_configs_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -4680,9 +4486,11 @@ def test_list_managed_instances_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "post_list_managed_instances"
+ transports.InstanceGroupManagersRestInterceptor,
+ "post_delete_per_instance_configs",
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "pre_list_managed_instances"
+ transports.InstanceGroupManagersRestInterceptor,
+ "pre_delete_per_instance_configs",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4697,21 +4505,17 @@ def test_list_managed_instances_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = (
- compute.InstanceGroupManagersListManagedInstancesResponse.to_json(
- compute.InstanceGroupManagersListManagedInstancesResponse()
- )
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListManagedInstancesInstanceGroupManagersRequest()
+ request = compute.DeletePerInstanceConfigsInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstanceGroupManagersListManagedInstancesResponse
+ post.return_value = compute.Operation
- client.list_managed_instances(
+ client.delete_per_instance_configs(
request,
metadata=[
("key", "val"),
@@ -4723,9 +4527,9 @@ def test_list_managed_instances_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_managed_instances_rest_bad_request(
+def test_delete_per_instance_configs_rest_bad_request(
transport: str = "rest",
- request_type=compute.ListManagedInstancesInstanceGroupManagersRequest,
+ request_type=compute.DeletePerInstanceConfigsInstanceGroupManagerRequest,
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4738,6 +4542,9 @@ def test_list_managed_instances_rest_bad_request(
"zone": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["instance_group_managers_delete_per_instance_configs_req_resource"] = {
+ "names": ["names_value_1", "names_value_2"]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -4749,10 +4556,10 @@ def test_list_managed_instances_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list_managed_instances(request)
+ client.delete_per_instance_configs(request)
-def test_list_managed_instances_rest_flattened():
+def test_delete_per_instance_configs_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4761,7 +4568,7 @@ def test_list_managed_instances_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManagersListManagedInstancesResponse()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -4775,35 +4582,34 @@ def test_list_managed_instances_rest_flattened():
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
+ instance_group_managers_delete_per_instance_configs_req_resource=compute.InstanceGroupManagersDeletePerInstanceConfigsReq(
+ names=["names_value"]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.InstanceGroupManagersListManagedInstancesResponse.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list_managed_instances(**mock_args)
+ client.delete_per_instance_configs(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/listManagedInstances"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/deletePerInstanceConfigs"
% client.transport._host,
args[1],
)
-def test_list_managed_instances_rest_flattened_error(transport: str = "rest"):
+def test_delete_per_instance_configs_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4812,90 +4618,31 @@ def test_list_managed_instances_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list_managed_instances(
- compute.ListManagedInstancesInstanceGroupManagersRequest(),
+ client.delete_per_instance_configs(
+ compute.DeletePerInstanceConfigsInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
+ instance_group_managers_delete_per_instance_configs_req_resource=compute.InstanceGroupManagersDeletePerInstanceConfigsReq(
+ names=["names_value"]
+ ),
)
-def test_list_managed_instances_rest_pager(transport: str = "rest"):
+def test_delete_per_instance_configs_rest_error():
client = InstanceGroupManagersClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.InstanceGroupManagersListManagedInstancesResponse(
- managed_instances=[
- compute.ManagedInstance(),
- compute.ManagedInstance(),
- compute.ManagedInstance(),
- ],
- next_page_token="abc",
- ),
- compute.InstanceGroupManagersListManagedInstancesResponse(
- managed_instances=[],
- next_page_token="def",
- ),
- compute.InstanceGroupManagersListManagedInstancesResponse(
- managed_instances=[
- compute.ManagedInstance(),
- ],
- next_page_token="ghi",
- ),
- compute.InstanceGroupManagersListManagedInstancesResponse(
- managed_instances=[
- compute.ManagedInstance(),
- compute.ManagedInstance(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(
- compute.InstanceGroupManagersListManagedInstancesResponse.to_json(x)
- for x in response
- )
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {
- "project": "sample1",
- "zone": "sample2",
- "instance_group_manager": "sample3",
- }
-
- pager = client.list_managed_instances(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.ManagedInstance) for i in results)
-
- pages = list(client.list_managed_instances(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.ListPerInstanceConfigsInstanceGroupManagersRequest,
+ compute.DeletePerInstanceConfigsInstanceGroupManagerRequest,
dict,
],
)
-def test_list_per_instance_configs_rest(request_type):
+def test_delete_per_instance_configs_unary_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4907,34 +4654,53 @@ def test_list_per_instance_configs_rest(request_type):
"zone": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["instance_group_managers_delete_per_instance_configs_req_resource"] = {
+ "names": ["names_value_1", "names_value_2"]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp(
- next_page_token="next_page_token_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.InstanceGroupManagersListPerInstanceConfigsResp.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_per_instance_configs(request)
+ response = client.delete_per_instance_configs_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPerInstanceConfigsPager)
- assert response.next_page_token == "next_page_token_value"
+ assert isinstance(response, compute.Operation)
-def test_list_per_instance_configs_rest_required_fields(
- request_type=compute.ListPerInstanceConfigsInstanceGroupManagersRequest,
+def test_delete_per_instance_configs_unary_rest_required_fields(
+ request_type=compute.DeletePerInstanceConfigsInstanceGroupManagerRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
@@ -4953,7 +4719,7 @@ def test_list_per_instance_configs_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_per_instance_configs._get_unset_required_fields(jsonified_request)
+ ).delete_per_instance_configs._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4964,17 +4730,7 @@ def test_list_per_instance_configs_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_per_instance_configs._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ ).delete_per_instance_configs._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -4992,7 +4748,7 @@ def test_list_per_instance_configs_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -5006,44 +4762,34 @@ def test_list_per_instance_configs_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.InstanceGroupManagersListPerInstanceConfigsResp.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_per_instance_configs(request)
+ response = client.delete_per_instance_configs_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_per_instance_configs_rest_unset_required_fields():
+def test_delete_per_instance_configs_unary_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list_per_instance_configs._get_unset_required_fields({})
+ unset_fields = transport.delete_per_instance_configs._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(())
& set(
(
"instanceGroupManager",
+ "instanceGroupManagersDeletePerInstanceConfigsReqResource",
"project",
"zone",
)
@@ -5052,7 +4798,7 @@ def test_list_per_instance_configs_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_per_instance_configs_rest_interceptors(null_interceptor):
+def test_delete_per_instance_configs_unary_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -5066,9 +4812,10 @@ def test_list_per_instance_configs_rest_interceptors(null_interceptor):
path_template, "transcode"
) as transcode, mock.patch.object(
transports.InstanceGroupManagersRestInterceptor,
- "post_list_per_instance_configs",
+ "post_delete_per_instance_configs",
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "pre_list_per_instance_configs"
+ transports.InstanceGroupManagersRestInterceptor,
+ "pre_delete_per_instance_configs",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -5083,21 +4830,17 @@ def test_list_per_instance_configs_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = (
- compute.InstanceGroupManagersListPerInstanceConfigsResp.to_json(
- compute.InstanceGroupManagersListPerInstanceConfigsResp()
- )
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListPerInstanceConfigsInstanceGroupManagersRequest()
+ request = compute.DeletePerInstanceConfigsInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp
+ post.return_value = compute.Operation
- client.list_per_instance_configs(
+ client.delete_per_instance_configs_unary(
request,
metadata=[
("key", "val"),
@@ -5109,9 +4852,9 @@ def test_list_per_instance_configs_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_per_instance_configs_rest_bad_request(
+def test_delete_per_instance_configs_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.ListPerInstanceConfigsInstanceGroupManagersRequest,
+ request_type=compute.DeletePerInstanceConfigsInstanceGroupManagerRequest,
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -5124,6 +4867,9 @@ def test_list_per_instance_configs_rest_bad_request(
"zone": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["instance_group_managers_delete_per_instance_configs_req_resource"] = {
+ "names": ["names_value_1", "names_value_2"]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -5135,10 +4881,10 @@ def test_list_per_instance_configs_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list_per_instance_configs(request)
+ client.delete_per_instance_configs_unary(request)
-def test_list_per_instance_configs_rest_flattened():
+def test_delete_per_instance_configs_unary_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5147,7 +4893,7 @@ def test_list_per_instance_configs_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -5161,35 +4907,36 @@ def test_list_per_instance_configs_rest_flattened():
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
+ instance_group_managers_delete_per_instance_configs_req_resource=compute.InstanceGroupManagersDeletePerInstanceConfigsReq(
+ names=["names_value"]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.InstanceGroupManagersListPerInstanceConfigsResp.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list_per_instance_configs(**mock_args)
+ client.delete_per_instance_configs_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/listPerInstanceConfigs"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/deletePerInstanceConfigs"
% client.transport._host,
args[1],
)
-def test_list_per_instance_configs_rest_flattened_error(transport: str = "rest"):
+def test_delete_per_instance_configs_unary_rest_flattened_error(
+ transport: str = "rest",
+):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -5198,90 +4945,31 @@ def test_list_per_instance_configs_rest_flattened_error(transport: str = "rest")
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list_per_instance_configs(
- compute.ListPerInstanceConfigsInstanceGroupManagersRequest(),
+ client.delete_per_instance_configs_unary(
+ compute.DeletePerInstanceConfigsInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
+ instance_group_managers_delete_per_instance_configs_req_resource=compute.InstanceGroupManagersDeletePerInstanceConfigsReq(
+ names=["names_value"]
+ ),
)
-def test_list_per_instance_configs_rest_pager(transport: str = "rest"):
+def test_delete_per_instance_configs_unary_rest_error():
client = InstanceGroupManagersClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.InstanceGroupManagersListPerInstanceConfigsResp(
- items=[
- compute.PerInstanceConfig(),
- compute.PerInstanceConfig(),
- compute.PerInstanceConfig(),
- ],
- next_page_token="abc",
- ),
- compute.InstanceGroupManagersListPerInstanceConfigsResp(
- items=[],
- next_page_token="def",
- ),
- compute.InstanceGroupManagersListPerInstanceConfigsResp(
- items=[
- compute.PerInstanceConfig(),
- ],
- next_page_token="ghi",
- ),
- compute.InstanceGroupManagersListPerInstanceConfigsResp(
- items=[
- compute.PerInstanceConfig(),
- compute.PerInstanceConfig(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(
- compute.InstanceGroupManagersListPerInstanceConfigsResp.to_json(x)
- for x in response
- )
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {
- "project": "sample1",
- "zone": "sample2",
- "instance_group_manager": "sample3",
- }
-
- pager = client.list_per_instance_configs(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.PerInstanceConfig) for i in results)
-
- pages = list(client.list_per_instance_configs(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchInstanceGroupManagerRequest,
+ compute.GetInstanceGroupManagerRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_get_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5293,138 +4981,55 @@ def test_patch_unary_rest(request_type):
"zone": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_manager_resource"] = {
- "auto_healing_policies": [
- {"health_check": "health_check_value", "initial_delay_sec": 1778}
- ],
- "base_instance_name": "base_instance_name_value",
- "creation_timestamp": "creation_timestamp_value",
- "current_actions": {
- "abandoning": 1041,
- "creating": 845,
- "creating_without_retries": 2589,
- "deleting": 844,
- "none": 432,
- "recreating": 1060,
- "refreshing": 1069,
- "restarting": 1091,
- "resuming": 874,
- "starting": 876,
- "stopping": 884,
- "suspending": 1088,
- "verifying": 979,
- },
- "description": "description_value",
- "distribution_policy": {
- "target_shape": "target_shape_value",
- "zones": [{"zone": "zone_value"}],
- },
- "fingerprint": "fingerprint_value",
- "id": 205,
- "instance_group": "instance_group_value",
- "instance_template": "instance_template_value",
- "kind": "kind_value",
- "name": "name_value",
- "named_ports": [{"name": "name_value", "port": 453}],
- "region": "region_value",
- "self_link": "self_link_value",
- "stateful_policy": {"preserved_state": {"disks": {}}},
- "status": {
- "autoscaler": "autoscaler_value",
- "is_stable": True,
- "stateful": {
- "has_stateful_config": True,
- "per_instance_configs": {"all_effective": True},
- },
- "version_target": {"is_reached": True},
- },
- "target_pools": ["target_pools_value_1", "target_pools_value_2"],
- "target_size": 1185,
- "update_policy": {
- "instance_redistribution_type": "instance_redistribution_type_value",
- "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
- "max_unavailable": {},
- "minimal_action": "minimal_action_value",
- "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
- "replacement_method": "replacement_method_value",
- "type_": "type__value",
- },
- "versions": [
- {
- "instance_template": "instance_template_value",
- "name": "name_value",
- "target_size": {},
- }
- ],
- "zone": "zone_value",
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.InstanceGroupManager(
+ base_instance_name="base_instance_name_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
+ instance_group="instance_group_value",
+ instance_template="instance_template_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
+ target_pools=["target_pools_value"],
+ target_size=1185,
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InstanceGroupManager.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.InstanceGroupManager)
+ assert response.base_instance_name == "base_instance_name_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert response.instance_group == "instance_group_value"
+ assert response.instance_template == "instance_template_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
+ assert response.target_pools == ["target_pools_value"]
+ assert response.target_size == 1185
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchInstanceGroupManagerRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetInstanceGroupManagerRequest):
transport_class = transports.InstanceGroupManagersRestTransport
request_init = {}
@@ -5442,7 +5047,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -5453,9 +5058,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -5473,7 +5076,7 @@ def test_patch_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.InstanceGroupManager()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -5484,37 +5087,35 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InstanceGroupManager.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"instanceGroupManager",
- "instanceGroupManagerResource",
"project",
"zone",
)
@@ -5523,7 +5124,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -5536,9 +5137,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "post_patch"
+ transports.InstanceGroupManagersRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "pre_patch"
+ transports.InstanceGroupManagersRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -5553,17 +5154,19 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.InstanceGroupManager.to_json(
+ compute.InstanceGroupManager()
+ )
- request = compute.PatchInstanceGroupManagerRequest()
+ request = compute.GetInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.InstanceGroupManager
- client.patch_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -5575,8 +5178,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchInstanceGroupManagerRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetInstanceGroupManagerRequest
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -5589,6 +5192,105 @@ def test_patch_unary_rest_bad_request(
"zone": "sample2",
"instance_group_manager": "sample3",
}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupManager()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroupManager.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetInstanceGroupManagerRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+
+
+def test_get_rest_error():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
request_init["instance_group_manager_resource"] = {
"auto_healing_policies": [
{"health_check": "health_check_value", "initial_delay_sec": 1778}
@@ -5656,6 +5358,5244 @@ def test_patch_unary_rest_bad_request(
}
request = request_type(request_init)
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertInstanceGroupManagerRequest,
+):
+ transport_class = transports.InstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManagerResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupManagersRestInterceptor(),
+ )
+ client = InstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertInstanceGroupManagerRequest
+):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["instance_group_manager_resource"] = {
+ "auto_healing_policies": [
+ {"health_check": "health_check_value", "initial_delay_sec": 1778}
+ ],
+ "base_instance_name": "base_instance_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "current_actions": {
+ "abandoning": 1041,
+ "creating": 845,
+ "creating_without_retries": 2589,
+ "deleting": 844,
+ "none": 432,
+ "recreating": 1060,
+ "refreshing": 1069,
+ "restarting": 1091,
+ "resuming": 874,
+ "starting": 876,
+ "stopping": 884,
+ "suspending": 1088,
+ "verifying": 979,
+ },
+ "description": "description_value",
+ "distribution_policy": {
+ "target_shape": "target_shape_value",
+ "zones": [{"zone": "zone_value"}],
+ },
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "instance_group": "instance_group_value",
+ "instance_template": "instance_template_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "stateful_policy": {"preserved_state": {"disks": {}}},
+ "status": {
+ "autoscaler": "autoscaler_value",
+ "is_stable": True,
+ "stateful": {
+ "has_stateful_config": True,
+ "per_instance_configs": {"all_effective": True},
+ },
+ "version_target": {"is_reached": True},
+ },
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ "target_size": 1185,
+ "update_policy": {
+ "instance_redistribution_type": "instance_redistribution_type_value",
+ "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
+ "max_unavailable": {},
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ "replacement_method": "replacement_method_value",
+ "type_": "type__value",
+ },
+ "versions": [
+ {
+ "instance_template": "instance_template_value",
+ "name": "name_value",
+ "target_size": {},
+ }
+ ],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertInstanceGroupManagerRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["instance_group_manager_resource"] = {
+ "auto_healing_policies": [
+ {"health_check": "health_check_value", "initial_delay_sec": 1778}
+ ],
+ "base_instance_name": "base_instance_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "current_actions": {
+ "abandoning": 1041,
+ "creating": 845,
+ "creating_without_retries": 2589,
+ "deleting": 844,
+ "none": 432,
+ "recreating": 1060,
+ "refreshing": 1069,
+ "restarting": 1091,
+ "resuming": 874,
+ "starting": 876,
+ "stopping": 884,
+ "suspending": 1088,
+ "verifying": 979,
+ },
+ "description": "description_value",
+ "distribution_policy": {
+ "target_shape": "target_shape_value",
+ "zones": [{"zone": "zone_value"}],
+ },
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "instance_group": "instance_group_value",
+ "instance_template": "instance_template_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "stateful_policy": {"preserved_state": {"disks": {}}},
+ "status": {
+ "autoscaler": "autoscaler_value",
+ "is_stable": True,
+ "stateful": {
+ "has_stateful_config": True,
+ "per_instance_configs": {"all_effective": True},
+ },
+ "version_target": {"is_reached": True},
+ },
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ "target_size": 1185,
+ "update_policy": {
+ "instance_redistribution_type": "instance_redistribution_type_value",
+ "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
+ "max_unavailable": {},
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ "replacement_method": "replacement_method_value",
+ "type_": "type__value",
+ },
+ "versions": [
+ {
+ "instance_template": "instance_template_value",
+ "name": "name_value",
+ "target_size": {},
+ }
+ ],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertInstanceGroupManagerRequest,
+):
+ transport_class = transports.InstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManagerResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupManagersRestInterceptor(),
+ )
+ client = InstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertInstanceGroupManagerRequest
+):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["instance_group_manager_resource"] = {
+ "auto_healing_policies": [
+ {"health_check": "health_check_value", "initial_delay_sec": 1778}
+ ],
+ "base_instance_name": "base_instance_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "current_actions": {
+ "abandoning": 1041,
+ "creating": 845,
+ "creating_without_retries": 2589,
+ "deleting": 844,
+ "none": 432,
+ "recreating": 1060,
+ "refreshing": 1069,
+ "restarting": 1091,
+ "resuming": 874,
+ "starting": 876,
+ "stopping": 884,
+ "suspending": 1088,
+ "verifying": 979,
+ },
+ "description": "description_value",
+ "distribution_policy": {
+ "target_shape": "target_shape_value",
+ "zones": [{"zone": "zone_value"}],
+ },
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "instance_group": "instance_group_value",
+ "instance_template": "instance_template_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "stateful_policy": {"preserved_state": {"disks": {}}},
+ "status": {
+ "autoscaler": "autoscaler_value",
+ "is_stable": True,
+ "stateful": {
+ "has_stateful_config": True,
+ "per_instance_configs": {"all_effective": True},
+ },
+ "version_target": {"is_reached": True},
+ },
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ "target_size": 1185,
+ "update_policy": {
+ "instance_redistribution_type": "instance_redistribution_type_value",
+ "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
+ "max_unavailable": {},
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ "replacement_method": "replacement_method_value",
+ "type_": "type__value",
+ },
+ "versions": [
+ {
+ "instance_template": "instance_template_value",
+ "name": "name_value",
+ "target_size": {},
+ }
+ ],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertInstanceGroupManagerRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListInstanceGroupManagersRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupManagerList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroupManagerList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(
+ request_type=compute.ListInstanceGroupManagersRequest,
+):
+ transport_class = transports.InstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupManagerList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroupManagerList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupManagersRestInterceptor(),
+ )
+ client = InstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.InstanceGroupManagerList.to_json(
+ compute.InstanceGroupManagerList()
+ )
+
+ request = compute.ListInstanceGroupManagersRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.InstanceGroupManagerList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListInstanceGroupManagersRequest
+):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupManagerList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroupManagerList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListInstanceGroupManagersRequest(),
+ project="project_value",
+ zone="zone_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.InstanceGroupManagerList(
+ items=[
+ compute.InstanceGroupManager(),
+ compute.InstanceGroupManager(),
+ compute.InstanceGroupManager(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.InstanceGroupManagerList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.InstanceGroupManagerList(
+ items=[
+ compute.InstanceGroupManager(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.InstanceGroupManagerList(
+ items=[
+ compute.InstanceGroupManager(),
+ compute.InstanceGroupManager(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.InstanceGroupManagerList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.InstanceGroupManager) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListErrorsInstanceGroupManagersRequest,
+ dict,
+ ],
+)
+def test_list_errors_rest(request_type):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupManagersListErrorsResponse(
+ next_page_token="next_page_token_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroupManagersListErrorsResponse.to_json(
+ return_value
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list_errors(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListErrorsPager)
+ assert response.next_page_token == "next_page_token_value"
+
+
+def test_list_errors_rest_required_fields(
+ request_type=compute.ListErrorsInstanceGroupManagersRequest,
+):
+ transport_class = transports.InstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_errors._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_errors._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupManagersListErrorsResponse()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroupManagersListErrorsResponse.to_json(
+ return_value
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list_errors(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_errors_rest_unset_required_fields():
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list_errors._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "instanceGroupManager",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_errors_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupManagersRestInterceptor(),
+ )
+ client = InstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "post_list_errors"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "pre_list_errors"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = (
+ compute.InstanceGroupManagersListErrorsResponse.to_json(
+ compute.InstanceGroupManagersListErrorsResponse()
+ )
+ )
+
+ request = compute.ListErrorsInstanceGroupManagersRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.InstanceGroupManagersListErrorsResponse
+
+ client.list_errors(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_errors_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListErrorsInstanceGroupManagersRequest
+):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list_errors(request)
+
+
+def test_list_errors_rest_flattened():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupManagersListErrorsResponse()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroupManagersListErrorsResponse.to_json(
+ return_value
+ )
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list_errors(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/listErrors"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_errors_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list_errors(
+ compute.ListErrorsInstanceGroupManagersRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+
+
+def test_list_errors_rest_pager(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.InstanceGroupManagersListErrorsResponse(
+ items=[
+ compute.InstanceManagedByIgmError(),
+ compute.InstanceManagedByIgmError(),
+ compute.InstanceManagedByIgmError(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.InstanceGroupManagersListErrorsResponse(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.InstanceGroupManagersListErrorsResponse(
+ items=[
+ compute.InstanceManagedByIgmError(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.InstanceGroupManagersListErrorsResponse(
+ items=[
+ compute.InstanceManagedByIgmError(),
+ compute.InstanceManagedByIgmError(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.InstanceGroupManagersListErrorsResponse.to_json(x) for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ pager = client.list_errors(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.InstanceManagedByIgmError) for i in results)
+
+ pages = list(client.list_errors(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListManagedInstancesInstanceGroupManagersRequest,
+ dict,
+ ],
+)
+def test_list_managed_instances_rest(request_type):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupManagersListManagedInstancesResponse(
+ next_page_token="next_page_token_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.InstanceGroupManagersListManagedInstancesResponse.to_json(
+ return_value
+ )
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list_managed_instances(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListManagedInstancesPager)
+ assert response.next_page_token == "next_page_token_value"
+
+
+def test_list_managed_instances_rest_required_fields(
+ request_type=compute.ListManagedInstancesInstanceGroupManagersRequest,
+):
+ transport_class = transports.InstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_managed_instances._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_managed_instances._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupManagersListManagedInstancesResponse()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.InstanceGroupManagersListManagedInstancesResponse.to_json(
+ return_value
+ )
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list_managed_instances(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_managed_instances_rest_unset_required_fields():
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list_managed_instances._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "instanceGroupManager",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_managed_instances_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupManagersRestInterceptor(),
+ )
+ client = InstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "post_list_managed_instances"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "pre_list_managed_instances"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = (
+ compute.InstanceGroupManagersListManagedInstancesResponse.to_json(
+ compute.InstanceGroupManagersListManagedInstancesResponse()
+ )
+ )
+
+ request = compute.ListManagedInstancesInstanceGroupManagersRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.InstanceGroupManagersListManagedInstancesResponse
+
+ client.list_managed_instances(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_managed_instances_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.ListManagedInstancesInstanceGroupManagersRequest,
+):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list_managed_instances(request)
+
+
+def test_list_managed_instances_rest_flattened():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupManagersListManagedInstancesResponse()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.InstanceGroupManagersListManagedInstancesResponse.to_json(
+ return_value
+ )
+ )
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list_managed_instances(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/listManagedInstances"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_managed_instances_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list_managed_instances(
+ compute.ListManagedInstancesInstanceGroupManagersRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+
+
+def test_list_managed_instances_rest_pager(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.InstanceGroupManagersListManagedInstancesResponse(
+ managed_instances=[
+ compute.ManagedInstance(),
+ compute.ManagedInstance(),
+ compute.ManagedInstance(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.InstanceGroupManagersListManagedInstancesResponse(
+ managed_instances=[],
+ next_page_token="def",
+ ),
+ compute.InstanceGroupManagersListManagedInstancesResponse(
+ managed_instances=[
+ compute.ManagedInstance(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.InstanceGroupManagersListManagedInstancesResponse(
+ managed_instances=[
+ compute.ManagedInstance(),
+ compute.ManagedInstance(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.InstanceGroupManagersListManagedInstancesResponse.to_json(x)
+ for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ pager = client.list_managed_instances(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.ManagedInstance) for i in results)
+
+ pages = list(client.list_managed_instances(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListPerInstanceConfigsInstanceGroupManagersRequest,
+ dict,
+ ],
+)
+def test_list_per_instance_configs_rest(request_type):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp(
+ next_page_token="next_page_token_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.InstanceGroupManagersListPerInstanceConfigsResp.to_json(
+ return_value
+ )
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list_per_instance_configs(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPerInstanceConfigsPager)
+ assert response.next_page_token == "next_page_token_value"
+
+
+def test_list_per_instance_configs_rest_required_fields(
+ request_type=compute.ListPerInstanceConfigsInstanceGroupManagersRequest,
+):
+ transport_class = transports.InstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_per_instance_configs._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_per_instance_configs._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.InstanceGroupManagersListPerInstanceConfigsResp.to_json(
+ return_value
+ )
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list_per_instance_configs(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_per_instance_configs_rest_unset_required_fields():
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list_per_instance_configs._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "instanceGroupManager",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_per_instance_configs_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupManagersRestInterceptor(),
+ )
+ client = InstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor,
+ "post_list_per_instance_configs",
+ ) as post, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "pre_list_per_instance_configs"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = (
+ compute.InstanceGroupManagersListPerInstanceConfigsResp.to_json(
+ compute.InstanceGroupManagersListPerInstanceConfigsResp()
+ )
+ )
+
+ request = compute.ListPerInstanceConfigsInstanceGroupManagersRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp
+
+ client.list_per_instance_configs(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_per_instance_configs_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.ListPerInstanceConfigsInstanceGroupManagersRequest,
+):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list_per_instance_configs(request)
+
+
+def test_list_per_instance_configs_rest_flattened():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupManagersListPerInstanceConfigsResp()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.InstanceGroupManagersListPerInstanceConfigsResp.to_json(
+ return_value
+ )
+ )
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list_per_instance_configs(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/listPerInstanceConfigs"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_per_instance_configs_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list_per_instance_configs(
+ compute.ListPerInstanceConfigsInstanceGroupManagersRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+
+
+def test_list_per_instance_configs_rest_pager(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.InstanceGroupManagersListPerInstanceConfigsResp(
+ items=[
+ compute.PerInstanceConfig(),
+ compute.PerInstanceConfig(),
+ compute.PerInstanceConfig(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.InstanceGroupManagersListPerInstanceConfigsResp(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.InstanceGroupManagersListPerInstanceConfigsResp(
+ items=[
+ compute.PerInstanceConfig(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.InstanceGroupManagersListPerInstanceConfigsResp(
+ items=[
+ compute.PerInstanceConfig(),
+ compute.PerInstanceConfig(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.InstanceGroupManagersListPerInstanceConfigsResp.to_json(x)
+ for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ pager = client.list_per_instance_configs(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.PerInstanceConfig) for i in results)
+
+ pages = list(client.list_per_instance_configs(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_manager_resource"] = {
+ "auto_healing_policies": [
+ {"health_check": "health_check_value", "initial_delay_sec": 1778}
+ ],
+ "base_instance_name": "base_instance_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "current_actions": {
+ "abandoning": 1041,
+ "creating": 845,
+ "creating_without_retries": 2589,
+ "deleting": 844,
+ "none": 432,
+ "recreating": 1060,
+ "refreshing": 1069,
+ "restarting": 1091,
+ "resuming": 874,
+ "starting": 876,
+ "stopping": 884,
+ "suspending": 1088,
+ "verifying": 979,
+ },
+ "description": "description_value",
+ "distribution_policy": {
+ "target_shape": "target_shape_value",
+ "zones": [{"zone": "zone_value"}],
+ },
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "instance_group": "instance_group_value",
+ "instance_template": "instance_template_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "stateful_policy": {"preserved_state": {"disks": {}}},
+ "status": {
+ "autoscaler": "autoscaler_value",
+ "is_stable": True,
+ "stateful": {
+ "has_stateful_config": True,
+ "per_instance_configs": {"all_effective": True},
+ },
+ "version_target": {"is_reached": True},
+ },
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ "target_size": 1185,
+ "update_policy": {
+ "instance_redistribution_type": "instance_redistribution_type_value",
+ "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
+ "max_unavailable": {},
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ "replacement_method": "replacement_method_value",
+ "type_": "type__value",
+ },
+ "versions": [
+ {
+ "instance_template": "instance_template_value",
+ "name": "name_value",
+ "target_size": {},
+ }
+ ],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(
+ request_type=compute.PatchInstanceGroupManagerRequest,
+):
+ transport_class = transports.InstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManager",
+ "instanceGroupManagerResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupManagersRestInterceptor(),
+ )
+ client = InstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchInstanceGroupManagerRequest
+):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_manager_resource"] = {
+ "auto_healing_policies": [
+ {"health_check": "health_check_value", "initial_delay_sec": 1778}
+ ],
+ "base_instance_name": "base_instance_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "current_actions": {
+ "abandoning": 1041,
+ "creating": 845,
+ "creating_without_retries": 2589,
+ "deleting": 844,
+ "none": 432,
+ "recreating": 1060,
+ "refreshing": 1069,
+ "restarting": 1091,
+ "resuming": 874,
+ "starting": 876,
+ "stopping": 884,
+ "suspending": 1088,
+ "verifying": 979,
+ },
+ "description": "description_value",
+ "distribution_policy": {
+ "target_shape": "target_shape_value",
+ "zones": [{"zone": "zone_value"}],
+ },
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "instance_group": "instance_group_value",
+ "instance_template": "instance_template_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "stateful_policy": {"preserved_state": {"disks": {}}},
+ "status": {
+ "autoscaler": "autoscaler_value",
+ "is_stable": True,
+ "stateful": {
+ "has_stateful_config": True,
+ "per_instance_configs": {"all_effective": True},
+ },
+ "version_target": {"is_reached": True},
+ },
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ "target_size": 1185,
+ "update_policy": {
+ "instance_redistribution_type": "instance_redistribution_type_value",
+ "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
+ "max_unavailable": {},
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ "replacement_method": "replacement_method_value",
+ "type_": "type__value",
+ },
+ "versions": [
+ {
+ "instance_template": "instance_template_value",
+ "name": "name_value",
+ "target_size": {},
+ }
+ ],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchInstanceGroupManagerRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_patch_rest_error():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_manager_resource"] = {
+ "auto_healing_policies": [
+ {"health_check": "health_check_value", "initial_delay_sec": 1778}
+ ],
+ "base_instance_name": "base_instance_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "current_actions": {
+ "abandoning": 1041,
+ "creating": 845,
+ "creating_without_retries": 2589,
+ "deleting": 844,
+ "none": 432,
+ "recreating": 1060,
+ "refreshing": 1069,
+ "restarting": 1091,
+ "resuming": 874,
+ "starting": 876,
+ "stopping": 884,
+ "suspending": 1088,
+ "verifying": 979,
+ },
+ "description": "description_value",
+ "distribution_policy": {
+ "target_shape": "target_shape_value",
+ "zones": [{"zone": "zone_value"}],
+ },
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "instance_group": "instance_group_value",
+ "instance_template": "instance_template_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "stateful_policy": {"preserved_state": {"disks": {}}},
+ "status": {
+ "autoscaler": "autoscaler_value",
+ "is_stable": True,
+ "stateful": {
+ "has_stateful_config": True,
+ "per_instance_configs": {"all_effective": True},
+ },
+ "version_target": {"is_reached": True},
+ },
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ "target_size": 1185,
+ "update_policy": {
+ "instance_redistribution_type": "instance_redistribution_type_value",
+ "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
+ "max_unavailable": {},
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ "replacement_method": "replacement_method_value",
+ "type_": "type__value",
+ },
+ "versions": [
+ {
+ "instance_template": "instance_template_value",
+ "name": "name_value",
+ "target_size": {},
+ }
+ ],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchInstanceGroupManagerRequest,
+):
+ transport_class = transports.InstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_unary_rest_unset_required_fields():
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManager",
+ "instanceGroupManagerResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupManagersRestInterceptor(),
+ )
+ client = InstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchInstanceGroupManagerRequest
+):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_manager_resource"] = {
+ "auto_healing_policies": [
+ {"health_check": "health_check_value", "initial_delay_sec": 1778}
+ ],
+ "base_instance_name": "base_instance_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "current_actions": {
+ "abandoning": 1041,
+ "creating": 845,
+ "creating_without_retries": 2589,
+ "deleting": 844,
+ "none": 432,
+ "recreating": 1060,
+ "refreshing": 1069,
+ "restarting": 1091,
+ "resuming": 874,
+ "starting": 876,
+ "stopping": 884,
+ "suspending": 1088,
+ "verifying": 979,
+ },
+ "description": "description_value",
+ "distribution_policy": {
+ "target_shape": "target_shape_value",
+ "zones": [{"zone": "zone_value"}],
+ },
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "instance_group": "instance_group_value",
+ "instance_template": "instance_template_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "stateful_policy": {"preserved_state": {"disks": {}}},
+ "status": {
+ "autoscaler": "autoscaler_value",
+ "is_stable": True,
+ "stateful": {
+ "has_stateful_config": True,
+ "per_instance_configs": {"all_effective": True},
+ },
+ "version_target": {"is_reached": True},
+ },
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ "target_size": 1185,
+ "update_policy": {
+ "instance_redistribution_type": "instance_redistribution_type_value",
+ "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
+ "max_unavailable": {},
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ "replacement_method": "replacement_method_value",
+ "type_": "type__value",
+ },
+ "versions": [
+ {
+ "instance_template": "instance_template_value",
+ "name": "name_value",
+ "target_size": {},
+ }
+ ],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_unary(request)
+
+
+def test_patch_unary_rest_flattened():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_unary(
+ compute.PatchInstanceGroupManagerRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_patch_unary_rest_error():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchPerInstanceConfigsInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_patch_per_instance_configs_rest(request_type):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_managers_patch_per_instance_configs_req_resource"] = {
+ "per_instance_configs": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_per_instance_configs(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_per_instance_configs_rest_required_fields(
+ request_type=compute.PatchPerInstanceConfigsInstanceGroupManagerRequest,
+):
+ transport_class = transports.InstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_per_instance_configs._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_per_instance_configs._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_per_instance_configs(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_per_instance_configs_rest_unset_required_fields():
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch_per_instance_configs._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManager",
+ "instanceGroupManagersPatchPerInstanceConfigsReqResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_per_instance_configs_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupManagersRestInterceptor(),
+ )
+ client = InstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor,
+ "post_patch_per_instance_configs",
+ ) as post, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor,
+ "pre_patch_per_instance_configs",
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchPerInstanceConfigsInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_per_instance_configs(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_per_instance_configs_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.PatchPerInstanceConfigsInstanceGroupManagerRequest,
+):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_managers_patch_per_instance_configs_req_resource"] = {
+ "per_instance_configs": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_per_instance_configs(request)
+
+
+def test_patch_per_instance_configs_rest_flattened():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_managers_patch_per_instance_configs_req_resource=compute.InstanceGroupManagersPatchPerInstanceConfigsReq(
+ per_instance_configs=[
+ compute.PerInstanceConfig(fingerprint="fingerprint_value")
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_per_instance_configs(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/patchPerInstanceConfigs"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_per_instance_configs_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_per_instance_configs(
+ compute.PatchPerInstanceConfigsInstanceGroupManagerRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_managers_patch_per_instance_configs_req_resource=compute.InstanceGroupManagersPatchPerInstanceConfigsReq(
+ per_instance_configs=[
+ compute.PerInstanceConfig(fingerprint="fingerprint_value")
+ ]
+ ),
+ )
+
+
+def test_patch_per_instance_configs_rest_error():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchPerInstanceConfigsInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_patch_per_instance_configs_unary_rest(request_type):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_managers_patch_per_instance_configs_req_resource"] = {
+ "per_instance_configs": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_per_instance_configs_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_per_instance_configs_unary_rest_required_fields(
+ request_type=compute.PatchPerInstanceConfigsInstanceGroupManagerRequest,
+):
+ transport_class = transports.InstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_per_instance_configs._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_per_instance_configs._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_per_instance_configs_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_per_instance_configs_unary_rest_unset_required_fields():
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch_per_instance_configs._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManager",
+ "instanceGroupManagersPatchPerInstanceConfigsReqResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_per_instance_configs_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupManagersRestInterceptor(),
+ )
+ client = InstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor,
+ "post_patch_per_instance_configs",
+ ) as post, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor,
+ "pre_patch_per_instance_configs",
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchPerInstanceConfigsInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_per_instance_configs_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_per_instance_configs_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.PatchPerInstanceConfigsInstanceGroupManagerRequest,
+):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_managers_patch_per_instance_configs_req_resource"] = {
+ "per_instance_configs": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_per_instance_configs_unary(request)
+
+
+def test_patch_per_instance_configs_unary_rest_flattened():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_managers_patch_per_instance_configs_req_resource=compute.InstanceGroupManagersPatchPerInstanceConfigsReq(
+ per_instance_configs=[
+ compute.PerInstanceConfig(fingerprint="fingerprint_value")
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_per_instance_configs_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/patchPerInstanceConfigs"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_per_instance_configs_unary_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_per_instance_configs_unary(
+ compute.PatchPerInstanceConfigsInstanceGroupManagerRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_managers_patch_per_instance_configs_req_resource=compute.InstanceGroupManagersPatchPerInstanceConfigsReq(
+ per_instance_configs=[
+ compute.PerInstanceConfig(fingerprint="fingerprint_value")
+ ]
+ ),
+ )
+
+
+def test_patch_per_instance_configs_unary_rest_error():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.RecreateInstancesInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_recreate_instances_rest(request_type):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_managers_recreate_instances_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.recreate_instances(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_recreate_instances_rest_required_fields(
+ request_type=compute.RecreateInstancesInstanceGroupManagerRequest,
+):
+ transport_class = transports.InstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).recreate_instances._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).recreate_instances._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.recreate_instances(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_recreate_instances_rest_unset_required_fields():
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.recreate_instances._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManager",
+ "instanceGroupManagersRecreateInstancesRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_recreate_instances_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupManagersRestInterceptor(),
+ )
+ client = InstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "post_recreate_instances"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "pre_recreate_instances"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.RecreateInstancesInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.recreate_instances(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_recreate_instances_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.RecreateInstancesInstanceGroupManagerRequest,
+):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_managers_recreate_instances_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.recreate_instances(request)
+
+
+def test_recreate_instances_rest_flattened():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_managers_recreate_instances_request_resource=compute.InstanceGroupManagersRecreateInstancesRequest(
+ instances=["instances_value"]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.recreate_instances(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/recreateInstances"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_recreate_instances_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.recreate_instances(
+ compute.RecreateInstancesInstanceGroupManagerRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_managers_recreate_instances_request_resource=compute.InstanceGroupManagersRecreateInstancesRequest(
+ instances=["instances_value"]
+ ),
+ )
+
+
+def test_recreate_instances_rest_error():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.RecreateInstancesInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_recreate_instances_unary_rest(request_type):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_managers_recreate_instances_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.recreate_instances_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_recreate_instances_unary_rest_required_fields(
+ request_type=compute.RecreateInstancesInstanceGroupManagerRequest,
+):
+ transport_class = transports.InstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).recreate_instances._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).recreate_instances._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.recreate_instances_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_recreate_instances_unary_rest_unset_required_fields():
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.recreate_instances._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManager",
+ "instanceGroupManagersRecreateInstancesRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_recreate_instances_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupManagersRestInterceptor(),
+ )
+ client = InstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "post_recreate_instances"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "pre_recreate_instances"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.RecreateInstancesInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.recreate_instances_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_recreate_instances_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.RecreateInstancesInstanceGroupManagerRequest,
+):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_managers_recreate_instances_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.recreate_instances_unary(request)
+
+
+def test_recreate_instances_unary_rest_flattened():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_managers_recreate_instances_request_resource=compute.InstanceGroupManagersRecreateInstancesRequest(
+ instances=["instances_value"]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.recreate_instances_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/recreateInstances"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_recreate_instances_unary_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.recreate_instances_unary(
+ compute.RecreateInstancesInstanceGroupManagerRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_managers_recreate_instances_request_resource=compute.InstanceGroupManagersRecreateInstancesRequest(
+ instances=["instances_value"]
+ ),
+ )
+
+
+def test_recreate_instances_unary_rest_error():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ResizeInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_resize_rest(request_type):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.resize(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_resize_rest_required_fields(
+ request_type=compute.ResizeInstanceGroupManagerRequest,
+):
+ transport_class = transports.InstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["size"] = 0
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+ assert "size" not in jsonified_request
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+ assert "size" in jsonified_request
+ assert jsonified_request["size"] == request_init["size"]
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["size"] = 443
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "size",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "size" in jsonified_request
+ assert jsonified_request["size"] == 443
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.resize(request)
+
+ expected_params = [
+ (
+ "size",
+ 0,
+ ),
+ ]
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_resize_rest_unset_required_fields():
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.resize._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "size",
+ )
+ )
+ & set(
+ (
+ "instanceGroupManager",
+ "project",
+ "size",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_resize_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupManagersRestInterceptor(),
+ )
+ client = InstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "post_resize"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "pre_resize"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.ResizeInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.resize(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_resize_rest_bad_request(
+ transport: str = "rest", request_type=compute.ResizeInstanceGroupManagerRequest
+):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.resize(request)
+
+
+def test_resize_rest_flattened():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ size=443,
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.resize(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/resize"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_resize_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.resize(
+ compute.ResizeInstanceGroupManagerRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group_manager="instance_group_manager_value",
+ size=443,
+ )
+
+
+def test_resize_rest_error():
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ResizeInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_resize_unary_rest(request_type):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.resize_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_resize_unary_rest_required_fields(
+ request_type=compute.ResizeInstanceGroupManagerRequest,
+):
+ transport_class = transports.InstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["size"] = 0
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+ assert "size" not in jsonified_request
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+ assert "size" in jsonified_request
+ assert jsonified_request["size"] == request_init["size"]
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["size"] = 443
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "size",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "size" in jsonified_request
+ assert jsonified_request["size"] == 443
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.resize_unary(request)
+
+ expected_params = [
+ (
+ "size",
+ 0,
+ ),
+ ]
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_resize_unary_rest_unset_required_fields():
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.resize._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "size",
+ )
+ )
+ & set(
+ (
+ "instanceGroupManager",
+ "project",
+ "size",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_resize_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupManagersRestInterceptor(),
+ )
+ client = InstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "post_resize"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupManagersRestInterceptor, "pre_resize"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.ResizeInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.resize_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_resize_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.ResizeInstanceGroupManagerRequest
+):
+ client = InstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
# Mock the http request call within the method and fake a BadRequest error.
with mock.patch.object(Session, "request") as req, pytest.raises(
core_exceptions.BadRequest
@@ -5665,10 +10605,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.resize_unary(request)
-def test_patch_unary_rest_flattened():
+def test_resize_unary_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5691,13 +10631,7 @@ def test_patch_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_manager_resource=compute.InstanceGroupManager(
- auto_healing_policies=[
- compute.InstanceGroupManagerAutoHealingPolicy(
- health_check="health_check_value"
- )
- ]
- ),
+ size=443,
)
mock_args.update(sample_request)
@@ -5709,20 +10643,20 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.resize_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/resize"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_resize_unary_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -5731,22 +10665,16 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchInstanceGroupManagerRequest(),
+ client.resize_unary(
+ compute.ResizeInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_manager_resource=compute.InstanceGroupManager(
- auto_healing_policies=[
- compute.InstanceGroupManagerAutoHealingPolicy(
- health_check="health_check_value"
- )
- ]
- ),
+ size=443,
)
-def test_patch_unary_rest_error():
+def test_resize_unary_rest_error():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -5755,11 +10683,11 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchPerInstanceConfigsInstanceGroupManagerRequest,
+ compute.SetInstanceTemplateInstanceGroupManagerRequest,
dict,
],
)
-def test_patch_per_instance_configs_unary_rest(request_type):
+def test_set_instance_template_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5771,15 +10699,8 @@ def test_patch_per_instance_configs_unary_rest(request_type):
"zone": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_managers_patch_per_instance_configs_req_resource"] = {
- "per_instance_configs": [
- {
- "fingerprint": "fingerprint_value",
- "name": "name_value",
- "preserved_state": {"disks": {}, "metadata": {}},
- "status": "status_value",
- }
- ]
+ request_init["instance_group_managers_set_instance_template_request_resource"] = {
+ "instance_template": "instance_template_value"
}
request = request_type(request_init)
@@ -5817,10 +10738,10 @@ def test_patch_per_instance_configs_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_per_instance_configs_unary(request)
+ response = client.set_instance_template(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -5845,8 +10766,8 @@ def test_patch_per_instance_configs_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_per_instance_configs_unary_rest_required_fields(
- request_type=compute.PatchPerInstanceConfigsInstanceGroupManagerRequest,
+def test_set_instance_template_rest_required_fields(
+ request_type=compute.SetInstanceTemplateInstanceGroupManagerRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
@@ -5865,7 +10786,7 @@ def test_patch_per_instance_configs_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch_per_instance_configs._get_unset_required_fields(jsonified_request)
+ ).set_instance_template._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -5876,7 +10797,7 @@ def test_patch_per_instance_configs_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch_per_instance_configs._get_unset_required_fields(jsonified_request)
+ ).set_instance_template._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -5919,25 +10840,25 @@ def test_patch_per_instance_configs_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_per_instance_configs_unary(request)
+ response = client.set_instance_template(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_per_instance_configs_unary_rest_unset_required_fields():
+def test_set_instance_template_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch_per_instance_configs._get_unset_required_fields({})
+ unset_fields = transport.set_instance_template._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instanceGroupManager",
- "instanceGroupManagersPatchPerInstanceConfigsReqResource",
+ "instanceGroupManagersSetInstanceTemplateRequestResource",
"project",
"zone",
)
@@ -5946,7 +10867,7 @@ def test_patch_per_instance_configs_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_per_instance_configs_unary_rest_interceptors(null_interceptor):
+def test_set_instance_template_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -5959,11 +10880,9 @@ def test_patch_per_instance_configs_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor,
- "post_patch_per_instance_configs",
+ transports.InstanceGroupManagersRestInterceptor, "post_set_instance_template"
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor,
- "pre_patch_per_instance_configs",
+ transports.InstanceGroupManagersRestInterceptor, "pre_set_instance_template"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -5980,7 +10899,7 @@ def test_patch_per_instance_configs_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchPerInstanceConfigsInstanceGroupManagerRequest()
+ request = compute.SetInstanceTemplateInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -5988,7 +10907,7 @@ def test_patch_per_instance_configs_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_per_instance_configs_unary(
+ client.set_instance_template(
request,
metadata=[
("key", "val"),
@@ -6000,9 +10919,9 @@ def test_patch_per_instance_configs_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_per_instance_configs_unary_rest_bad_request(
+def test_set_instance_template_rest_bad_request(
transport: str = "rest",
- request_type=compute.PatchPerInstanceConfigsInstanceGroupManagerRequest,
+ request_type=compute.SetInstanceTemplateInstanceGroupManagerRequest,
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -6015,15 +10934,8 @@ def test_patch_per_instance_configs_unary_rest_bad_request(
"zone": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_managers_patch_per_instance_configs_req_resource"] = {
- "per_instance_configs": [
- {
- "fingerprint": "fingerprint_value",
- "name": "name_value",
- "preserved_state": {"disks": {}, "metadata": {}},
- "status": "status_value",
- }
- ]
+ request_init["instance_group_managers_set_instance_template_request_resource"] = {
+ "instance_template": "instance_template_value"
}
request = request_type(request_init)
@@ -6036,10 +10948,10 @@ def test_patch_per_instance_configs_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_per_instance_configs_unary(request)
+ client.set_instance_template(request)
-def test_patch_per_instance_configs_unary_rest_flattened():
+def test_set_instance_template_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6062,10 +10974,8 @@ def test_patch_per_instance_configs_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_managers_patch_per_instance_configs_req_resource=compute.InstanceGroupManagersPatchPerInstanceConfigsReq(
- per_instance_configs=[
- compute.PerInstanceConfig(fingerprint="fingerprint_value")
- ]
+ instance_group_managers_set_instance_template_request_resource=compute.InstanceGroupManagersSetInstanceTemplateRequest(
+ instance_template="instance_template_value"
),
)
mock_args.update(sample_request)
@@ -6078,20 +10988,20 @@ def test_patch_per_instance_configs_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_per_instance_configs_unary(**mock_args)
+ client.set_instance_template(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/patchPerInstanceConfigs"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setInstanceTemplate"
% client.transport._host,
args[1],
)
-def test_patch_per_instance_configs_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_instance_template_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -6100,20 +11010,18 @@ def test_patch_per_instance_configs_unary_rest_flattened_error(transport: str =
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_per_instance_configs_unary(
- compute.PatchPerInstanceConfigsInstanceGroupManagerRequest(),
+ client.set_instance_template(
+ compute.SetInstanceTemplateInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_managers_patch_per_instance_configs_req_resource=compute.InstanceGroupManagersPatchPerInstanceConfigsReq(
- per_instance_configs=[
- compute.PerInstanceConfig(fingerprint="fingerprint_value")
- ]
+ instance_group_managers_set_instance_template_request_resource=compute.InstanceGroupManagersSetInstanceTemplateRequest(
+ instance_template="instance_template_value"
),
)
-def test_patch_per_instance_configs_unary_rest_error():
+def test_set_instance_template_rest_error():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -6122,11 +11030,11 @@ def test_patch_per_instance_configs_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.RecreateInstancesInstanceGroupManagerRequest,
+ compute.SetInstanceTemplateInstanceGroupManagerRequest,
dict,
],
)
-def test_recreate_instances_unary_rest(request_type):
+def test_set_instance_template_unary_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6138,8 +11046,8 @@ def test_recreate_instances_unary_rest(request_type):
"zone": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_managers_recreate_instances_request_resource"] = {
- "instances": ["instances_value_1", "instances_value_2"]
+ request_init["instance_group_managers_set_instance_template_request_resource"] = {
+ "instance_template": "instance_template_value"
}
request = request_type(request_init)
@@ -6177,36 +11085,14 @@ def test_recreate_instances_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.recreate_instances_unary(request)
+ response = client.set_instance_template_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_recreate_instances_unary_rest_required_fields(
- request_type=compute.RecreateInstancesInstanceGroupManagerRequest,
+def test_set_instance_template_unary_rest_required_fields(
+ request_type=compute.SetInstanceTemplateInstanceGroupManagerRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
@@ -6225,7 +11111,7 @@ def test_recreate_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).recreate_instances._get_unset_required_fields(jsonified_request)
+ ).set_instance_template._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -6236,7 +11122,7 @@ def test_recreate_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).recreate_instances._get_unset_required_fields(jsonified_request)
+ ).set_instance_template._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -6279,25 +11165,25 @@ def test_recreate_instances_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.recreate_instances_unary(request)
+ response = client.set_instance_template_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_recreate_instances_unary_rest_unset_required_fields():
+def test_set_instance_template_unary_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.recreate_instances._get_unset_required_fields({})
+ unset_fields = transport.set_instance_template._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instanceGroupManager",
- "instanceGroupManagersRecreateInstancesRequestResource",
+ "instanceGroupManagersSetInstanceTemplateRequestResource",
"project",
"zone",
)
@@ -6306,7 +11192,7 @@ def test_recreate_instances_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_recreate_instances_unary_rest_interceptors(null_interceptor):
+def test_set_instance_template_unary_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -6319,9 +11205,9 @@ def test_recreate_instances_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "post_recreate_instances"
+ transports.InstanceGroupManagersRestInterceptor, "post_set_instance_template"
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "pre_recreate_instances"
+ transports.InstanceGroupManagersRestInterceptor, "pre_set_instance_template"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -6338,7 +11224,7 @@ def test_recreate_instances_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.RecreateInstancesInstanceGroupManagerRequest()
+ request = compute.SetInstanceTemplateInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -6346,7 +11232,7 @@ def test_recreate_instances_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.recreate_instances_unary(
+ client.set_instance_template_unary(
request,
metadata=[
("key", "val"),
@@ -6358,9 +11244,9 @@ def test_recreate_instances_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_recreate_instances_unary_rest_bad_request(
+def test_set_instance_template_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.RecreateInstancesInstanceGroupManagerRequest,
+ request_type=compute.SetInstanceTemplateInstanceGroupManagerRequest,
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -6373,8 +11259,8 @@ def test_recreate_instances_unary_rest_bad_request(
"zone": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_managers_recreate_instances_request_resource"] = {
- "instances": ["instances_value_1", "instances_value_2"]
+ request_init["instance_group_managers_set_instance_template_request_resource"] = {
+ "instance_template": "instance_template_value"
}
request = request_type(request_init)
@@ -6387,10 +11273,10 @@ def test_recreate_instances_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.recreate_instances_unary(request)
+ client.set_instance_template_unary(request)
-def test_recreate_instances_unary_rest_flattened():
+def test_set_instance_template_unary_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6413,8 +11299,8 @@ def test_recreate_instances_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_managers_recreate_instances_request_resource=compute.InstanceGroupManagersRecreateInstancesRequest(
- instances=["instances_value"]
+ instance_group_managers_set_instance_template_request_resource=compute.InstanceGroupManagersSetInstanceTemplateRequest(
+ instance_template="instance_template_value"
),
)
mock_args.update(sample_request)
@@ -6427,20 +11313,20 @@ def test_recreate_instances_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.recreate_instances_unary(**mock_args)
+ client.set_instance_template_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/recreateInstances"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setInstanceTemplate"
% client.transport._host,
args[1],
)
-def test_recreate_instances_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_instance_template_unary_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -6449,18 +11335,18 @@ def test_recreate_instances_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.recreate_instances_unary(
- compute.RecreateInstancesInstanceGroupManagerRequest(),
+ client.set_instance_template_unary(
+ compute.SetInstanceTemplateInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_managers_recreate_instances_request_resource=compute.InstanceGroupManagersRecreateInstancesRequest(
- instances=["instances_value"]
+ instance_group_managers_set_instance_template_request_resource=compute.InstanceGroupManagersSetInstanceTemplateRequest(
+ instance_template="instance_template_value"
),
)
-def test_recreate_instances_unary_rest_error():
+def test_set_instance_template_unary_rest_error():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -6469,11 +11355,11 @@ def test_recreate_instances_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ResizeInstanceGroupManagerRequest,
+ compute.SetTargetPoolsInstanceGroupManagerRequest,
dict,
],
)
-def test_resize_unary_rest(request_type):
+def test_set_target_pools_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6485,6 +11371,10 @@ def test_resize_unary_rest(request_type):
"zone": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["instance_group_managers_set_target_pools_request_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -6521,10 +11411,10 @@ def test_resize_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.resize_unary(request)
+ response = client.set_target_pools(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -6549,15 +11439,14 @@ def test_resize_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_resize_unary_rest_required_fields(
- request_type=compute.ResizeInstanceGroupManagerRequest,
+def test_set_target_pools_rest_required_fields(
+ request_type=compute.SetTargetPoolsInstanceGroupManagerRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
request_init = {}
request_init["instance_group_manager"] = ""
request_init["project"] = ""
- request_init["size"] = 0
request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -6567,32 +11456,23 @@ def test_resize_unary_rest_required_fields(
)
# verify fields with default values are dropped
- assert "size" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).resize._get_unset_required_fields(jsonified_request)
+ ).set_target_pools._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- assert "size" in jsonified_request
- assert jsonified_request["size"] == request_init["size"]
jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
jsonified_request["project"] = "project_value"
- jsonified_request["size"] = 443
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).resize._get_unset_required_fields(jsonified_request)
+ ).set_target_pools._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "request_id",
- "size",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -6600,8 +11480,6 @@ def test_resize_unary_rest_required_fields(
assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "size" in jsonified_request
- assert jsonified_request["size"] == 443
assert "zone" in jsonified_request
assert jsonified_request["zone"] == "zone_value"
@@ -6626,44 +11504,35 @@ def test_resize_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
- response_value._content = json_return_value.encode("UTF-8")
- req.return_value = response_value
-
- response = client.resize_unary(request)
-
- expected_params = [
- (
- "size",
- 0,
- ),
- ]
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_target_pools(request)
+
+ expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_resize_unary_rest_unset_required_fields():
+def test_set_target_pools_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.resize._get_unset_required_fields({})
+ unset_fields = transport.set_target_pools._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "requestId",
- "size",
- )
- )
+ set(("requestId",))
& set(
(
"instanceGroupManager",
+ "instanceGroupManagersSetTargetPoolsRequestResource",
"project",
- "size",
"zone",
)
)
@@ -6671,7 +11540,7 @@ def test_resize_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_resize_unary_rest_interceptors(null_interceptor):
+def test_set_target_pools_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -6684,9 +11553,9 @@ def test_resize_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "post_resize"
+ transports.InstanceGroupManagersRestInterceptor, "post_set_target_pools"
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "pre_resize"
+ transports.InstanceGroupManagersRestInterceptor, "pre_set_target_pools"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -6703,7 +11572,7 @@ def test_resize_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ResizeInstanceGroupManagerRequest()
+ request = compute.SetTargetPoolsInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -6711,7 +11580,7 @@ def test_resize_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.resize_unary(
+ client.set_target_pools(
request,
metadata=[
("key", "val"),
@@ -6723,8 +11592,9 @@ def test_resize_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_resize_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.ResizeInstanceGroupManagerRequest
+def test_set_target_pools_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.SetTargetPoolsInstanceGroupManagerRequest,
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -6737,6 +11607,10 @@ def test_resize_unary_rest_bad_request(
"zone": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["instance_group_managers_set_target_pools_request_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -6748,10 +11622,10 @@ def test_resize_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.resize_unary(request)
+ client.set_target_pools(request)
-def test_resize_unary_rest_flattened():
+def test_set_target_pools_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6774,7 +11648,9 @@ def test_resize_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- size=443,
+ instance_group_managers_set_target_pools_request_resource=compute.InstanceGroupManagersSetTargetPoolsRequest(
+ fingerprint="fingerprint_value"
+ ),
)
mock_args.update(sample_request)
@@ -6786,20 +11662,20 @@ def test_resize_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.resize_unary(**mock_args)
+ client.set_target_pools(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/resize"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setTargetPools"
% client.transport._host,
args[1],
)
-def test_resize_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_target_pools_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -6808,16 +11684,18 @@ def test_resize_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.resize_unary(
- compute.ResizeInstanceGroupManagerRequest(),
+ client.set_target_pools(
+ compute.SetTargetPoolsInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- size=443,
+ instance_group_managers_set_target_pools_request_resource=compute.InstanceGroupManagersSetTargetPoolsRequest(
+ fingerprint="fingerprint_value"
+ ),
)
-def test_resize_unary_rest_error():
+def test_set_target_pools_rest_error():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -6826,11 +11704,11 @@ def test_resize_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetInstanceTemplateInstanceGroupManagerRequest,
+ compute.SetTargetPoolsInstanceGroupManagerRequest,
dict,
],
)
-def test_set_instance_template_unary_rest(request_type):
+def test_set_target_pools_unary_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6842,8 +11720,9 @@ def test_set_instance_template_unary_rest(request_type):
"zone": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_managers_set_instance_template_request_resource"] = {
- "instance_template": "instance_template_value"
+ request_init["instance_group_managers_set_target_pools_request_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
}
request = request_type(request_init)
@@ -6881,36 +11760,14 @@ def test_set_instance_template_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_instance_template_unary(request)
+ response = client.set_target_pools_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_set_instance_template_unary_rest_required_fields(
- request_type=compute.SetInstanceTemplateInstanceGroupManagerRequest,
+def test_set_target_pools_unary_rest_required_fields(
+ request_type=compute.SetTargetPoolsInstanceGroupManagerRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
@@ -6929,7 +11786,7 @@ def test_set_instance_template_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_instance_template._get_unset_required_fields(jsonified_request)
+ ).set_target_pools._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -6940,7 +11797,7 @@ def test_set_instance_template_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_instance_template._get_unset_required_fields(jsonified_request)
+ ).set_target_pools._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -6983,25 +11840,25 @@ def test_set_instance_template_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_instance_template_unary(request)
+ response = client.set_target_pools_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_instance_template_unary_rest_unset_required_fields():
+def test_set_target_pools_unary_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_instance_template._get_unset_required_fields({})
+ unset_fields = transport.set_target_pools._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instanceGroupManager",
- "instanceGroupManagersSetInstanceTemplateRequestResource",
+ "instanceGroupManagersSetTargetPoolsRequestResource",
"project",
"zone",
)
@@ -7010,7 +11867,7 @@ def test_set_instance_template_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_instance_template_unary_rest_interceptors(null_interceptor):
+def test_set_target_pools_unary_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -7023,9 +11880,9 @@ def test_set_instance_template_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "post_set_instance_template"
+ transports.InstanceGroupManagersRestInterceptor, "post_set_target_pools"
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "pre_set_instance_template"
+ transports.InstanceGroupManagersRestInterceptor, "pre_set_target_pools"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -7042,7 +11899,7 @@ def test_set_instance_template_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetInstanceTemplateInstanceGroupManagerRequest()
+ request = compute.SetTargetPoolsInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -7050,7 +11907,7 @@ def test_set_instance_template_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_instance_template_unary(
+ client.set_target_pools_unary(
request,
metadata=[
("key", "val"),
@@ -7062,9 +11919,9 @@ def test_set_instance_template_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_instance_template_unary_rest_bad_request(
+def test_set_target_pools_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.SetInstanceTemplateInstanceGroupManagerRequest,
+ request_type=compute.SetTargetPoolsInstanceGroupManagerRequest,
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -7077,8 +11934,9 @@ def test_set_instance_template_unary_rest_bad_request(
"zone": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_managers_set_instance_template_request_resource"] = {
- "instance_template": "instance_template_value"
+ request_init["instance_group_managers_set_target_pools_request_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
}
request = request_type(request_init)
@@ -7091,10 +11949,10 @@ def test_set_instance_template_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_instance_template_unary(request)
+ client.set_target_pools_unary(request)
-def test_set_instance_template_unary_rest_flattened():
+def test_set_target_pools_unary_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -7117,8 +11975,8 @@ def test_set_instance_template_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_managers_set_instance_template_request_resource=compute.InstanceGroupManagersSetInstanceTemplateRequest(
- instance_template="instance_template_value"
+ instance_group_managers_set_target_pools_request_resource=compute.InstanceGroupManagersSetTargetPoolsRequest(
+ fingerprint="fingerprint_value"
),
)
mock_args.update(sample_request)
@@ -7131,20 +11989,20 @@ def test_set_instance_template_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_instance_template_unary(**mock_args)
+ client.set_target_pools_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setInstanceTemplate"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setTargetPools"
% client.transport._host,
args[1],
)
-def test_set_instance_template_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_target_pools_unary_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -7153,18 +12011,18 @@ def test_set_instance_template_unary_rest_flattened_error(transport: str = "rest
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_instance_template_unary(
- compute.SetInstanceTemplateInstanceGroupManagerRequest(),
+ client.set_target_pools_unary(
+ compute.SetTargetPoolsInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_managers_set_instance_template_request_resource=compute.InstanceGroupManagersSetInstanceTemplateRequest(
- instance_template="instance_template_value"
+ instance_group_managers_set_target_pools_request_resource=compute.InstanceGroupManagersSetTargetPoolsRequest(
+ fingerprint="fingerprint_value"
),
)
-def test_set_instance_template_unary_rest_error():
+def test_set_target_pools_unary_rest_error():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -7173,11 +12031,11 @@ def test_set_instance_template_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetTargetPoolsInstanceGroupManagerRequest,
+ compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest,
dict,
],
)
-def test_set_target_pools_unary_rest(request_type):
+def test_update_per_instance_configs_rest(request_type):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -7189,9 +12047,15 @@ def test_set_target_pools_unary_rest(request_type):
"zone": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_managers_set_target_pools_request_resource"] = {
- "fingerprint": "fingerprint_value",
- "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ request_init["instance_group_managers_update_per_instance_configs_req_resource"] = {
+ "per_instance_configs": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
}
request = request_type(request_init)
@@ -7229,10 +12093,10 @@ def test_set_target_pools_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_target_pools_unary(request)
+ response = client.update_per_instance_configs(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -7257,8 +12121,8 @@ def test_set_target_pools_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_set_target_pools_unary_rest_required_fields(
- request_type=compute.SetTargetPoolsInstanceGroupManagerRequest,
+def test_update_per_instance_configs_rest_required_fields(
+ request_type=compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest,
):
transport_class = transports.InstanceGroupManagersRestTransport
@@ -7277,7 +12141,7 @@ def test_set_target_pools_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_target_pools._get_unset_required_fields(jsonified_request)
+ ).update_per_instance_configs._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -7288,7 +12152,7 @@ def test_set_target_pools_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_target_pools._get_unset_required_fields(jsonified_request)
+ ).update_per_instance_configs._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -7331,25 +12195,25 @@ def test_set_target_pools_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_target_pools_unary(request)
+ response = client.update_per_instance_configs(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_target_pools_unary_rest_unset_required_fields():
+def test_update_per_instance_configs_rest_unset_required_fields():
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_target_pools._get_unset_required_fields({})
+ unset_fields = transport.update_per_instance_configs._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instanceGroupManager",
- "instanceGroupManagersSetTargetPoolsRequestResource",
+ "instanceGroupManagersUpdatePerInstanceConfigsReqResource",
"project",
"zone",
)
@@ -7358,7 +12222,7 @@ def test_set_target_pools_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_target_pools_unary_rest_interceptors(null_interceptor):
+def test_update_per_instance_configs_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -7371,9 +12235,11 @@ def test_set_target_pools_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "post_set_target_pools"
+ transports.InstanceGroupManagersRestInterceptor,
+ "post_update_per_instance_configs",
) as post, mock.patch.object(
- transports.InstanceGroupManagersRestInterceptor, "pre_set_target_pools"
+ transports.InstanceGroupManagersRestInterceptor,
+ "pre_update_per_instance_configs",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -7390,7 +12256,7 @@ def test_set_target_pools_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetTargetPoolsInstanceGroupManagerRequest()
+ request = compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -7398,7 +12264,7 @@ def test_set_target_pools_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_target_pools_unary(
+ client.update_per_instance_configs(
request,
metadata=[
("key", "val"),
@@ -7410,9 +12276,9 @@ def test_set_target_pools_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_target_pools_unary_rest_bad_request(
+def test_update_per_instance_configs_rest_bad_request(
transport: str = "rest",
- request_type=compute.SetTargetPoolsInstanceGroupManagerRequest,
+ request_type=compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest,
):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -7425,9 +12291,15 @@ def test_set_target_pools_unary_rest_bad_request(
"zone": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_managers_set_target_pools_request_resource"] = {
- "fingerprint": "fingerprint_value",
- "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ request_init["instance_group_managers_update_per_instance_configs_req_resource"] = {
+ "per_instance_configs": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
}
request = request_type(request_init)
@@ -7440,10 +12312,10 @@ def test_set_target_pools_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_target_pools_unary(request)
+ client.update_per_instance_configs(request)
-def test_set_target_pools_unary_rest_flattened():
+def test_update_per_instance_configs_rest_flattened():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -7466,8 +12338,10 @@ def test_set_target_pools_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_managers_set_target_pools_request_resource=compute.InstanceGroupManagersSetTargetPoolsRequest(
- fingerprint="fingerprint_value"
+ instance_group_managers_update_per_instance_configs_req_resource=compute.InstanceGroupManagersUpdatePerInstanceConfigsReq(
+ per_instance_configs=[
+ compute.PerInstanceConfig(fingerprint="fingerprint_value")
+ ]
),
)
mock_args.update(sample_request)
@@ -7480,20 +12354,20 @@ def test_set_target_pools_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_target_pools_unary(**mock_args)
+ client.update_per_instance_configs(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/setTargetPools"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroupManagers/{instance_group_manager}/updatePerInstanceConfigs"
% client.transport._host,
args[1],
)
-def test_set_target_pools_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_per_instance_configs_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -7502,18 +12376,20 @@ def test_set_target_pools_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_target_pools_unary(
- compute.SetTargetPoolsInstanceGroupManagerRequest(),
+ client.update_per_instance_configs(
+ compute.UpdatePerInstanceConfigsInstanceGroupManagerRequest(),
project="project_value",
zone="zone_value",
instance_group_manager="instance_group_manager_value",
- instance_group_managers_set_target_pools_request_resource=compute.InstanceGroupManagersSetTargetPoolsRequest(
- fingerprint="fingerprint_value"
+ instance_group_managers_update_per_instance_configs_req_resource=compute.InstanceGroupManagersUpdatePerInstanceConfigsReq(
+ per_instance_configs=[
+ compute.PerInstanceConfig(fingerprint="fingerprint_value")
+ ]
),
)
-def test_set_target_pools_unary_rest_error():
+def test_update_per_instance_configs_rest_error():
client = InstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -7588,28 +12464,6 @@ def test_update_per_instance_configs_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_per_instance_configs_unary_rest_required_fields(
@@ -7963,6 +12817,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = InstanceGroupManagersClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_instance_group_managers_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -8013,6 +12880,14 @@ def test_instance_group_managers_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_instance_group_managers_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_instance_groups.py b/tests/unit/gapic/compute_v1/test_instance_groups.py
index 976100e3f..3b2ea5adb 100644
--- a/tests/unit/gapic/compute_v1/test_instance_groups.py
+++ b/tests/unit/gapic/compute_v1/test_instance_groups.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -525,7 +527,7 @@ def test_instance_groups_client_client_options_credentials_file(
dict,
],
)
-def test_add_instances_unary_rest(request_type):
+def test_add_instances_rest(request_type):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -576,10 +578,10 @@ def test_add_instances_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_instances_unary(request)
+ response = client.add_instances(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -604,7 +606,7 @@ def test_add_instances_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_add_instances_unary_rest_required_fields(
+def test_add_instances_rest_required_fields(
request_type=compute.AddInstancesInstanceGroupRequest,
):
transport_class = transports.InstanceGroupsRestTransport
@@ -678,14 +680,14 @@ def test_add_instances_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_instances_unary(request)
+ response = client.add_instances(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_add_instances_unary_rest_unset_required_fields():
+def test_add_instances_rest_unset_required_fields():
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -705,7 +707,7 @@ def test_add_instances_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_instances_unary_rest_interceptors(null_interceptor):
+def test_add_instances_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -745,7 +747,7 @@ def test_add_instances_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_instances_unary(
+ client.add_instances(
request,
metadata=[
("key", "val"),
@@ -757,7 +759,7 @@ def test_add_instances_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_instances_unary_rest_bad_request(
+def test_add_instances_rest_bad_request(
transport: str = "rest", request_type=compute.AddInstancesInstanceGroupRequest
):
client = InstanceGroupsClient(
@@ -785,10 +787,10 @@ def test_add_instances_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_instances_unary(request)
+ client.add_instances(request)
-def test_add_instances_unary_rest_flattened():
+def test_add_instances_rest_flattened():
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -825,7 +827,7 @@ def test_add_instances_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_instances_unary(**mock_args)
+ client.add_instances(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -838,7 +840,7 @@ def test_add_instances_unary_rest_flattened():
)
-def test_add_instances_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_instances_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -847,7 +849,7 @@ def test_add_instances_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_instances_unary(
+ client.add_instances(
compute.AddInstancesInstanceGroupRequest(),
project="project_value",
zone="zone_value",
@@ -858,7 +860,7 @@ def test_add_instances_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_add_instances_unary_rest_error():
+def test_add_instances_rest_error():
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -867,55 +869,76 @@ def test_add_instances_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.AggregatedListInstanceGroupsRequest,
+ compute.AddInstancesInstanceGroupRequest,
dict,
],
)
-def test_aggregated_list_rest(request_type):
+def test_add_instances_unary_rest(request_type):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
+ }
+ request_init["instance_groups_add_instances_request_resource"] = {
+ "instances": [{"instance": "instance_value"}]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupAggregatedList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- unreachables=["unreachables_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupAggregatedList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.aggregated_list(request)
+ response = client.add_instances_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.AggregatedListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
- assert response.unreachables == ["unreachables_value"]
+ assert isinstance(response, compute.Operation)
-def test_aggregated_list_rest_required_fields(
- request_type=compute.AggregatedListInstanceGroupsRequest,
+def test_add_instances_unary_rest_required_fields(
+ request_type=compute.AddInstancesInstanceGroupRequest,
):
transport_class = transports.InstanceGroupsRestTransport
request_init = {}
+ request_init["instance_group"] = ""
request_init["project"] = ""
+ request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -927,32 +950,29 @@ def test_aggregated_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).aggregated_list._get_unset_required_fields(jsonified_request)
+ ).add_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["instanceGroup"] = "instance_group_value"
jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).aggregated_list._get_unset_required_fields(jsonified_request)
+ ).add_instances._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "include_all_scopes",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "instanceGroup" in jsonified_request
+ assert jsonified_request["instanceGroup"] == "instance_group_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -961,7 +981,7 @@ def test_aggregated_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupAggregatedList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -972,49 +992,46 @@ def test_aggregated_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupAggregatedList.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.aggregated_list(request)
+ response = client.add_instances_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_aggregated_list_rest_unset_required_fields():
+def test_add_instances_unary_rest_unset_required_fields():
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.aggregated_list._get_unset_required_fields({})
+ unset_fields = transport.add_instances._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "includeAllScopes",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "instanceGroup",
+ "instanceGroupsAddInstancesRequestResource",
+ "project",
+ "zone",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_aggregated_list_rest_interceptors(null_interceptor):
+def test_add_instances_unary_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1027,9 +1044,9 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupsRestInterceptor, "post_aggregated_list"
+ transports.InstanceGroupsRestInterceptor, "post_add_instances"
) as post, mock.patch.object(
- transports.InstanceGroupsRestInterceptor, "pre_aggregated_list"
+ transports.InstanceGroupsRestInterceptor, "pre_add_instances"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1044,19 +1061,17 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InstanceGroupAggregatedList.to_json(
- compute.InstanceGroupAggregatedList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.AggregatedListInstanceGroupsRequest()
+ request = compute.AddInstancesInstanceGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstanceGroupAggregatedList
+ post.return_value = compute.Operation
- client.aggregated_list(
+ client.add_instances_unary(
request,
metadata=[
("key", "val"),
@@ -1068,8 +1083,8 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_aggregated_list_rest_bad_request(
- transport: str = "rest", request_type=compute.AggregatedListInstanceGroupsRequest
+def test_add_instances_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddInstancesInstanceGroupRequest
):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1077,7 +1092,14 @@ def test_aggregated_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
+ }
+ request_init["instance_groups_add_instances_request_resource"] = {
+ "instances": [{"instance": "instance_value"}]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1089,10 +1111,10 @@ def test_aggregated_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.aggregated_list(request)
+ client.add_instances_unary(request)
-def test_aggregated_list_rest_flattened():
+def test_add_instances_unary_rest_flattened():
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1101,39 +1123,48 @@ def test_aggregated_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupAggregatedList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ zone="zone_value",
+ instance_group="instance_group_value",
+ instance_groups_add_instances_request_resource=compute.InstanceGroupsAddInstancesRequest(
+ instances=[compute.InstanceReference(instance="instance_value")]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupAggregatedList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.aggregated_list(**mock_args)
+ client.add_instances_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/aggregated/instanceGroups"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instance_group}/addInstances"
% client.transport._host,
args[1],
)
-def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
+def test_add_instances_unary_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1142,179 +1173,75 @@ def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.aggregated_list(
- compute.AggregatedListInstanceGroupsRequest(),
+ client.add_instances_unary(
+ compute.AddInstancesInstanceGroupRequest(),
project="project_value",
+ zone="zone_value",
+ instance_group="instance_group_value",
+ instance_groups_add_instances_request_resource=compute.InstanceGroupsAddInstancesRequest(
+ instances=[compute.InstanceReference(instance="instance_value")]
+ ),
)
-def test_aggregated_list_rest_pager(transport: str = "rest"):
+def test_add_instances_unary_rest_error():
client = InstanceGroupsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.InstanceGroupAggregatedList(
- items={
- "a": compute.InstanceGroupsScopedList(),
- "b": compute.InstanceGroupsScopedList(),
- "c": compute.InstanceGroupsScopedList(),
- },
- next_page_token="abc",
- ),
- compute.InstanceGroupAggregatedList(
- items={},
- next_page_token="def",
- ),
- compute.InstanceGroupAggregatedList(
- items={
- "g": compute.InstanceGroupsScopedList(),
- },
- next_page_token="ghi",
- ),
- compute.InstanceGroupAggregatedList(
- items={
- "h": compute.InstanceGroupsScopedList(),
- "i": compute.InstanceGroupsScopedList(),
- },
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(
- compute.InstanceGroupAggregatedList.to_json(x) for x in response
- )
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.aggregated_list(request=sample_request)
-
- assert isinstance(pager.get("a"), compute.InstanceGroupsScopedList)
- assert pager.get("h") is None
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, tuple) for i in results)
- for result in results:
- assert isinstance(result, tuple)
- assert tuple(type(t) for t in result) == (
- str,
- compute.InstanceGroupsScopedList,
- )
-
- assert pager.get("a") is None
- assert isinstance(pager.get("h"), compute.InstanceGroupsScopedList)
-
- pages = list(client.aggregated_list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteInstanceGroupRequest,
+ compute.AggregatedListInstanceGroupsRequest,
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_aggregated_list_rest(request_type):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "zone": "sample2",
- "instance_group": "sample3",
- }
+ request_init = {"project": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
+ return_value = compute.InstanceGroupAggregatedList(
+ id="id_value",
kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
+ next_page_token="next_page_token_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ unreachables=["unreachables_value"],
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InstanceGroupAggregatedList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.aggregated_list(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert isinstance(response, pagers.AggregatedListPager)
+ assert response.id == "id_value"
assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
+ assert response.next_page_token == "next_page_token_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.unreachables == ["unreachables_value"]
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteInstanceGroupRequest,
+def test_aggregated_list_rest_required_fields(
+ request_type=compute.AggregatedListInstanceGroupsRequest,
):
transport_class = transports.InstanceGroupsRestTransport
request_init = {}
- request_init["instance_group"] = ""
request_init["project"] = ""
- request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1326,29 +1253,32 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).aggregated_list._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["instanceGroup"] = "instance_group_value"
jsonified_request["project"] = "project_value"
- jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).aggregated_list._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "include_all_scopes",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "instanceGroup" in jsonified_request
- assert jsonified_request["instanceGroup"] == "instance_group_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "zone" in jsonified_request
- assert jsonified_request["zone"] == "zone_value"
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1357,7 +1287,7 @@ def test_delete_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.InstanceGroupAggregatedList()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1368,44 +1298,49 @@ def test_delete_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "get",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InstanceGroupAggregatedList.to_json(
+ return_value
+ )
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.aggregated_list(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_aggregated_list_rest_unset_required_fields():
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.aggregated_list._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
- & set(
+ set(
(
- "instanceGroup",
- "project",
- "zone",
+ "filter",
+ "includeAllScopes",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
)
)
+ & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_aggregated_list_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1418,9 +1353,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupsRestInterceptor, "post_delete"
+ transports.InstanceGroupsRestInterceptor, "post_aggregated_list"
) as post, mock.patch.object(
- transports.InstanceGroupsRestInterceptor, "pre_delete"
+ transports.InstanceGroupsRestInterceptor, "pre_aggregated_list"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1435,17 +1370,19 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.InstanceGroupAggregatedList.to_json(
+ compute.InstanceGroupAggregatedList()
+ )
- request = compute.DeleteInstanceGroupRequest()
+ request = compute.AggregatedListInstanceGroupsRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.InstanceGroupAggregatedList
- client.delete_unary(
+ client.aggregated_list(
request,
metadata=[
("key", "val"),
@@ -1457,8 +1394,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteInstanceGroupRequest
+def test_aggregated_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.AggregatedListInstanceGroupsRequest
):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1466,11 +1403,7 @@ def test_delete_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "zone": "sample2",
- "instance_group": "sample3",
- }
+ request_init = {"project": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1482,10 +1415,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.aggregated_list(request)
-def test_delete_unary_rest_flattened():
+def test_aggregated_list_rest_flattened():
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1494,45 +1427,39 @@ def test_delete_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.InstanceGroupAggregatedList()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "zone": "sample2",
- "instance_group": "sample3",
- }
+ sample_request = {"project": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- zone="zone_value",
- instance_group="instance_group_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InstanceGroupAggregatedList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.aggregated_list(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instance_group}"
+ "%s/compute/v1/projects/{project}/aggregated/instanceGroups"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1541,28 +1468,95 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteInstanceGroupRequest(),
+ client.aggregated_list(
+ compute.AggregatedListInstanceGroupsRequest(),
project="project_value",
- zone="zone_value",
- instance_group="instance_group_value",
)
-def test_delete_unary_rest_error():
+def test_aggregated_list_rest_pager(transport: str = "rest"):
client = InstanceGroupsClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
)
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.InstanceGroupAggregatedList(
+ items={
+ "a": compute.InstanceGroupsScopedList(),
+ "b": compute.InstanceGroupsScopedList(),
+ "c": compute.InstanceGroupsScopedList(),
+ },
+ next_page_token="abc",
+ ),
+ compute.InstanceGroupAggregatedList(
+ items={},
+ next_page_token="def",
+ ),
+ compute.InstanceGroupAggregatedList(
+ items={
+ "g": compute.InstanceGroupsScopedList(),
+ },
+ next_page_token="ghi",
+ ),
+ compute.InstanceGroupAggregatedList(
+ items={
+ "h": compute.InstanceGroupsScopedList(),
+ "i": compute.InstanceGroupsScopedList(),
+ },
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.InstanceGroupAggregatedList.to_json(x) for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.aggregated_list(request=sample_request)
+
+ assert isinstance(pager.get("a"), compute.InstanceGroupsScopedList)
+ assert pager.get("h") is None
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, tuple) for i in results)
+ for result in results:
+ assert isinstance(result, tuple)
+ assert tuple(type(t) for t in result) == (
+ str,
+ compute.InstanceGroupsScopedList,
+ )
+
+ assert pager.get("a") is None
+ assert isinstance(pager.get("h"), compute.InstanceGroupsScopedList)
+
+ pages = list(client.aggregated_list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
@pytest.mark.parametrize(
"request_type",
[
- compute.GetInstanceGroupRequest,
+ compute.DeleteInstanceGroupRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_rest(request_type):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1579,46 +1573,66 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroup(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- network="network_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- size=443,
- subnetwork="subnetwork_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroup.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.InstanceGroup)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.network == "network_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.size == 443
- assert response.subnetwork == "subnetwork_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
assert response.zone == "zone_value"
-def test_get_rest_required_fields(request_type=compute.GetInstanceGroupRequest):
+def test_delete_rest_required_fields(request_type=compute.DeleteInstanceGroupRequest):
transport_class = transports.InstanceGroupsRestTransport
request_init = {}
@@ -1636,7 +1650,7 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceGroupRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1647,7 +1661,9 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceGroupRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1665,7 +1681,7 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceGroupRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroup()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1676,32 +1692,32 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceGroupRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroup.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"instanceGroup",
@@ -1713,7 +1729,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1726,9 +1742,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupsRestInterceptor, "post_get"
+ transports.InstanceGroupsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.InstanceGroupsRestInterceptor, "pre_get"
+ transports.InstanceGroupsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1743,19 +1759,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InstanceGroup.to_json(
- compute.InstanceGroup()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetInstanceGroupRequest()
+ request = compute.DeleteInstanceGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstanceGroup
+ post.return_value = compute.Operation
- client.get(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1767,8 +1781,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetInstanceGroupRequest
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteInstanceGroupRequest
):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1792,10 +1806,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete(request)
-def test_get_rest_flattened():
+def test_delete_rest_flattened():
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1804,7 +1818,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroup()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1824,12 +1838,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroup.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1842,7 +1856,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1851,15 +1865,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetInstanceGroupRequest(),
+ client.delete(
+ compute.DeleteInstanceGroupRequest(),
project="project_value",
zone="zone_value",
instance_group="instance_group_value",
)
-def test_get_rest_error():
+def test_delete_rest_error():
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1868,32 +1882,21 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertInstanceGroupRequest,
+ compute.DeleteInstanceGroupRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_delete_unary_rest(request_type):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
- request_init["instance_group_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "named_ports": [{"name": "name_value", "port": 453}],
- "network": "network_value",
- "region": "region_value",
- "self_link": "self_link_value",
- "size": 443,
- "subnetwork": "subnetwork_value",
- "zone": "zone_value",
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
}
request = request_type(request_init)
@@ -1931,40 +1934,19 @@ def test_insert_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertInstanceGroupRequest,
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteInstanceGroupRequest,
):
transport_class = transports.InstanceGroupsRestTransport
request_init = {}
+ request_init["instance_group"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -1978,22 +1960,25 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["instanceGroup"] = "instance_group_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "instanceGroup" in jsonified_request
+ assert jsonified_request["instanceGroup"] == "instance_group_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -2017,10 +2002,9 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "delete",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -2029,24 +2013,24 @@ def test_insert_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
- "instanceGroupResource",
+ "instanceGroup",
"project",
"zone",
)
@@ -2055,7 +2039,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2068,9 +2052,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupsRestInterceptor, "post_insert"
+ transports.InstanceGroupsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.InstanceGroupsRestInterceptor, "pre_insert"
+ transports.InstanceGroupsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2087,7 +2071,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.InsertInstanceGroupRequest()
+ request = compute.DeleteInstanceGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2095,7 +2079,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.insert_unary(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -2107,8 +2091,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertInstanceGroupRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteInstanceGroupRequest
):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2116,21 +2100,10 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
- request_init["instance_group_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "named_ports": [{"name": "name_value", "port": 453}],
- "network": "network_value",
- "region": "region_value",
- "self_link": "self_link_value",
- "size": 443,
- "subnetwork": "subnetwork_value",
- "zone": "zone_value",
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
}
request = request_type(request_init)
@@ -2143,10 +2116,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.delete_unary(request)
-def test_insert_unary_rest_flattened():
+def test_delete_unary_rest_flattened():
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2158,15 +2131,17 @@ def test_insert_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "zone": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- instance_group_resource=compute.InstanceGroup(
- creation_timestamp="creation_timestamp_value"
- ),
+ instance_group="instance_group_value",
)
mock_args.update(sample_request)
@@ -2178,20 +2153,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroups"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instance_group}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2200,17 +2175,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertInstanceGroupRequest(),
+ client.delete_unary(
+ compute.DeleteInstanceGroupRequest(),
project="project_value",
zone="zone_value",
- instance_group_resource=compute.InstanceGroup(
- creation_timestamp="creation_timestamp_value"
- ),
+ instance_group="instance_group_value",
)
-def test_insert_unary_rest_error():
+def test_delete_unary_rest_error():
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2219,50 +2192,1828 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListInstanceGroupsRequest,
+ compute.GetInstanceGroupRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_get_rest(request_type):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroup(
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ fingerprint="fingerprint_value",
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ network="network_value",
+ region="region_value",
+ self_link="self_link_value",
+ size=443,
+ subnetwork="subnetwork_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroup.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.InstanceGroup)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.fingerprint == "fingerprint_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.network == "network_value"
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.size == 443
+ assert response.subnetwork == "subnetwork_value"
+ assert response.zone == "zone_value"
+
+
+def test_get_rest_required_fields(request_type=compute.GetInstanceGroupRequest):
+ transport_class = transports.InstanceGroupsRestTransport
+
+ request_init = {}
+ request_init["instance_group"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroup"] = "instance_group_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroup" in jsonified_request
+ assert jsonified_request["instanceGroup"] == "instance_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroup()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroup.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.InstanceGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "instanceGroup",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupsRestInterceptor(),
+ )
+ client = InstanceGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupsRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupsRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.InstanceGroup.to_json(
+ compute.InstanceGroup()
+ )
+
+ request = compute.GetInstanceGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.InstanceGroup
+
+ client.get(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetInstanceGroupRequest
+):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroup()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group="instance_group_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroup.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instance_group}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetInstanceGroupRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group="instance_group_value",
+ )
+
+
+def test_get_rest_error():
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertInstanceGroupRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["instance_group_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "network": "network_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "subnetwork": "subnetwork_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertInstanceGroupRequest):
+ transport_class = transports.InstanceGroupsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.InstanceGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupsRestInterceptor(),
+ )
+ client = InstanceGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertInstanceGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertInstanceGroupRequest
+):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["instance_group_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "network": "network_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "subnetwork": "subnetwork_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group_resource=compute.InstanceGroup(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroups"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertInstanceGroupRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group_resource=compute.InstanceGroup(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertInstanceGroupRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["instance_group_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "network": "network_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "subnetwork": "subnetwork_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertInstanceGroupRequest,
+):
+ transport_class = transports.InstanceGroupsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.InstanceGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupsRestInterceptor(),
+ )
+ client = InstanceGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertInstanceGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertInstanceGroupRequest
+):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["instance_group_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "network": "network_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "subnetwork": "subnetwork_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group_resource=compute.InstanceGroup(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroups"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertInstanceGroupRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group_resource=compute.InstanceGroup(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListInstanceGroupsRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroupList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListInstanceGroupsRequest):
+ transport_class = transports.InstanceGroupsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroupList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.InstanceGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupsRestInterceptor(),
+ )
+ client = InstanceGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupsRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupsRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.InstanceGroupList.to_json(
+ compute.InstanceGroupList()
+ )
+
+ request = compute.ListInstanceGroupsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.InstanceGroupList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListInstanceGroupsRequest
+):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroupList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroups"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListInstanceGroupsRequest(),
+ project="project_value",
+ zone="zone_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.InstanceGroupList(
+ items=[
+ compute.InstanceGroup(),
+ compute.InstanceGroup(),
+ compute.InstanceGroup(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.InstanceGroupList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.InstanceGroupList(
+ items=[
+ compute.InstanceGroup(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.InstanceGroupList(
+ items=[
+ compute.InstanceGroup(),
+ compute.InstanceGroup(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.InstanceGroupList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.InstanceGroup) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListInstancesInstanceGroupsRequest,
+ dict,
+ ],
+)
+def test_list_instances_rest(request_type):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
+ }
+ request_init["instance_groups_list_instances_request_resource"] = {
+ "instance_state": "instance_state_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupsListInstances(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroupsListInstances.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list_instances(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListInstancesPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_instances_rest_required_fields(
+ request_type=compute.ListInstancesInstanceGroupsRequest,
+):
+ transport_class = transports.InstanceGroupsRestTransport
+
+ request_init = {}
+ request_init["instance_group"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_instances._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroup"] = "instance_group_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_instances._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroup" in jsonified_request
+ assert jsonified_request["instanceGroup"] == "instance_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupsListInstances()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroupsListInstances.to_json(
+ return_value
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list_instances(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_instances_rest_unset_required_fields():
+ transport = transports.InstanceGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list_instances._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "instanceGroup",
+ "instanceGroupsListInstancesRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_instances_rest_interceptors(null_interceptor):
+ transport = transports.InstanceGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceGroupsRestInterceptor(),
+ )
+ client = InstanceGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceGroupsRestInterceptor, "post_list_instances"
+ ) as post, mock.patch.object(
+ transports.InstanceGroupsRestInterceptor, "pre_list_instances"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.InstanceGroupsListInstances.to_json(
+ compute.InstanceGroupsListInstances()
+ )
+
+ request = compute.ListInstancesInstanceGroupsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.InstanceGroupsListInstances
+
+ client.list_instances(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_instances_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListInstancesInstanceGroupsRequest
+):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
+ }
+ request_init["instance_groups_list_instances_request_resource"] = {
+ "instance_state": "instance_state_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list_instances(request)
+
+
+def test_list_instances_rest_flattened():
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupsListInstances()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_group="instance_group_value",
+ instance_groups_list_instances_request_resource=compute.InstanceGroupsListInstancesRequest(
+ instance_state="instance_state_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroupsListInstances.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list_instances(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instance_group}/listInstances"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_instances_rest_flattened_error(transport: str = "rest"):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list_instances(
+ compute.ListInstancesInstanceGroupsRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_group="instance_group_value",
+ instance_groups_list_instances_request_resource=compute.InstanceGroupsListInstancesRequest(
+ instance_state="instance_state_value"
+ ),
+ )
+
+
+def test_list_instances_rest_pager(transport: str = "rest"):
+ client = InstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.InstanceGroupsListInstances(
+ items=[
+ compute.InstanceWithNamedPorts(),
+ compute.InstanceWithNamedPorts(),
+ compute.InstanceWithNamedPorts(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.InstanceGroupsListInstances(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.InstanceGroupsListInstances(
+ items=[
+ compute.InstanceWithNamedPorts(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.InstanceGroupsListInstances(
+ items=[
+ compute.InstanceWithNamedPorts(),
+ compute.InstanceWithNamedPorts(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.InstanceGroupsListInstances.to_json(x) for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
+ }
+ sample_request[
+ "instance_groups_list_instances_request_resource"
+ ] = compute.InstanceGroupsListInstancesRequest(
+ instance_state="instance_state_value"
+ )
+
+ pager = client.list_instances(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.InstanceWithNamedPorts) for i in results)
+
+ pages = list(client.list_instances(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.RemoveInstancesInstanceGroupRequest,
+ dict,
+ ],
+)
+def test_remove_instances_rest(request_type):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
+ }
+ request_init["instance_groups_remove_instances_request_resource"] = {
+ "instances": [{"instance": "instance_value"}]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.remove_instances(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(request_type=compute.ListInstanceGroupsRequest):
+def test_remove_instances_rest_required_fields(
+ request_type=compute.RemoveInstancesInstanceGroupRequest,
+):
transport_class = transports.InstanceGroupsRestTransport
request_init = {}
+ request_init["instance_group"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -2276,30 +4027,25 @@ def test_list_rest_required_fields(request_type=compute.ListInstanceGroupsReques
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).remove_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["instanceGroup"] = "instance_group_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).remove_instances._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "instanceGroup" in jsonified_request
+ assert jsonified_request["instanceGroup"] == "instance_group_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -2312,7 +4058,7 @@ def test_list_rest_required_fields(request_type=compute.ListInstanceGroupsReques
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2323,42 +4069,37 @@ def test_list_rest_required_fields(request_type=compute.ListInstanceGroupsReques
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.remove_instances(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_remove_instances_rest_unset_required_fields():
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.remove_instances._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
+ "instanceGroup",
+ "instanceGroupsRemoveInstancesRequestResource",
"project",
"zone",
)
@@ -2367,7 +4108,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_remove_instances_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2380,9 +4121,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupsRestInterceptor, "post_list"
+ transports.InstanceGroupsRestInterceptor, "post_remove_instances"
) as post, mock.patch.object(
- transports.InstanceGroupsRestInterceptor, "pre_list"
+ transports.InstanceGroupsRestInterceptor, "pre_remove_instances"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2397,19 +4138,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InstanceGroupList.to_json(
- compute.InstanceGroupList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListInstanceGroupsRequest()
+ request = compute.RemoveInstancesInstanceGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstanceGroupList
+ post.return_value = compute.Operation
- client.list(
+ client.remove_instances(
request,
metadata=[
("key", "val"),
@@ -2421,8 +4160,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListInstanceGroupsRequest
+def test_remove_instances_rest_bad_request(
+ transport: str = "rest", request_type=compute.RemoveInstancesInstanceGroupRequest
):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2430,7 +4169,14 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
+ }
+ request_init["instance_groups_remove_instances_request_resource"] = {
+ "instances": [{"instance": "instance_value"}]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2442,10 +4188,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.remove_instances(request)
-def test_list_rest_flattened():
+def test_remove_instances_rest_flattened():
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2454,40 +4200,48 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "zone": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance_group": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
+ instance_group="instance_group_value",
+ instance_groups_remove_instances_request_resource=compute.InstanceGroupsRemoveInstancesRequest(
+ instances=[compute.InstanceReference(instance="instance_value")]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.remove_instances(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroups"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instance_group}/removeInstances"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_remove_instances_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2496,82 +4250,31 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListInstanceGroupsRequest(),
+ client.remove_instances(
+ compute.RemoveInstancesInstanceGroupRequest(),
project="project_value",
zone="zone_value",
+ instance_group="instance_group_value",
+ instance_groups_remove_instances_request_resource=compute.InstanceGroupsRemoveInstancesRequest(
+ instances=[compute.InstanceReference(instance="instance_value")]
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_remove_instances_rest_error():
client = InstanceGroupsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.InstanceGroupList(
- items=[
- compute.InstanceGroup(),
- compute.InstanceGroup(),
- compute.InstanceGroup(),
- ],
- next_page_token="abc",
- ),
- compute.InstanceGroupList(
- items=[],
- next_page_token="def",
- ),
- compute.InstanceGroupList(
- items=[
- compute.InstanceGroup(),
- ],
- next_page_token="ghi",
- ),
- compute.InstanceGroupList(
- items=[
- compute.InstanceGroup(),
- compute.InstanceGroup(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.InstanceGroupList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "zone": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.InstanceGroup) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.ListInstancesInstanceGroupsRequest,
+ compute.RemoveInstancesInstanceGroupRequest,
dict,
],
)
-def test_list_instances_rest(request_type):
+def test_remove_instances_unary_rest(request_type):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2583,39 +4286,53 @@ def test_list_instances_rest(request_type):
"zone": "sample2",
"instance_group": "sample3",
}
- request_init["instance_groups_list_instances_request_resource"] = {
- "instance_state": "instance_state_value"
+ request_init["instance_groups_remove_instances_request_resource"] = {
+ "instances": [{"instance": "instance_value"}]
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupsListInstances(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupsListInstances.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_instances(request)
+ response = client.remove_instances_unary(request)
- # Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListInstancesPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
-def test_list_instances_rest_required_fields(
- request_type=compute.ListInstancesInstanceGroupsRequest,
+def test_remove_instances_unary_rest_required_fields(
+ request_type=compute.RemoveInstancesInstanceGroupRequest,
):
transport_class = transports.InstanceGroupsRestTransport
@@ -2634,7 +4351,7 @@ def test_list_instances_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_instances._get_unset_required_fields(jsonified_request)
+ ).remove_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2645,17 +4362,9 @@ def test_list_instances_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_instances._get_unset_required_fields(jsonified_request)
+ ).remove_instances._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2673,7 +4382,7 @@ def test_list_instances_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupsListInstances()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2692,39 +4401,29 @@ def test_list_instances_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupsListInstances.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_instances(request)
+ response = client.remove_instances_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_instances_rest_unset_required_fields():
+def test_remove_instances_unary_rest_unset_required_fields():
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list_instances._get_unset_required_fields({})
+ unset_fields = transport.remove_instances._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
"instanceGroup",
- "instanceGroupsListInstancesRequestResource",
+ "instanceGroupsRemoveInstancesRequestResource",
"project",
"zone",
)
@@ -2733,7 +4432,7 @@ def test_list_instances_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_instances_rest_interceptors(null_interceptor):
+def test_remove_instances_unary_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2746,9 +4445,9 @@ def test_list_instances_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupsRestInterceptor, "post_list_instances"
+ transports.InstanceGroupsRestInterceptor, "post_remove_instances"
) as post, mock.patch.object(
- transports.InstanceGroupsRestInterceptor, "pre_list_instances"
+ transports.InstanceGroupsRestInterceptor, "pre_remove_instances"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2763,19 +4462,17 @@ def test_list_instances_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InstanceGroupsListInstances.to_json(
- compute.InstanceGroupsListInstances()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListInstancesInstanceGroupsRequest()
+ request = compute.RemoveInstancesInstanceGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstanceGroupsListInstances
+ post.return_value = compute.Operation
- client.list_instances(
+ client.remove_instances_unary(
request,
metadata=[
("key", "val"),
@@ -2787,8 +4484,8 @@ def test_list_instances_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_instances_rest_bad_request(
- transport: str = "rest", request_type=compute.ListInstancesInstanceGroupsRequest
+def test_remove_instances_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.RemoveInstancesInstanceGroupRequest
):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2801,8 +4498,8 @@ def test_list_instances_rest_bad_request(
"zone": "sample2",
"instance_group": "sample3",
}
- request_init["instance_groups_list_instances_request_resource"] = {
- "instance_state": "instance_state_value"
+ request_init["instance_groups_remove_instances_request_resource"] = {
+ "instances": [{"instance": "instance_value"}]
}
request = request_type(request_init)
@@ -2815,10 +4512,10 @@ def test_list_instances_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list_instances(request)
+ client.remove_instances_unary(request)
-def test_list_instances_rest_flattened():
+def test_remove_instances_unary_rest_flattened():
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2827,7 +4524,7 @@ def test_list_instances_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupsListInstances()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -2841,8 +4538,8 @@ def test_list_instances_rest_flattened():
project="project_value",
zone="zone_value",
instance_group="instance_group_value",
- instance_groups_list_instances_request_resource=compute.InstanceGroupsListInstancesRequest(
- instance_state="instance_state_value"
+ instance_groups_remove_instances_request_resource=compute.InstanceGroupsRemoveInstancesRequest(
+ instances=[compute.InstanceReference(instance="instance_value")]
),
)
mock_args.update(sample_request)
@@ -2850,25 +4547,25 @@ def test_list_instances_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupsListInstances.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list_instances(**mock_args)
+ client.remove_instances_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instance_group}/listInstances"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instance_group}/removeInstances"
% client.transport._host,
args[1],
)
-def test_list_instances_rest_flattened_error(transport: str = "rest"):
+def test_remove_instances_unary_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2877,97 +4574,31 @@ def test_list_instances_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list_instances(
- compute.ListInstancesInstanceGroupsRequest(),
+ client.remove_instances_unary(
+ compute.RemoveInstancesInstanceGroupRequest(),
project="project_value",
zone="zone_value",
instance_group="instance_group_value",
- instance_groups_list_instances_request_resource=compute.InstanceGroupsListInstancesRequest(
- instance_state="instance_state_value"
+ instance_groups_remove_instances_request_resource=compute.InstanceGroupsRemoveInstancesRequest(
+ instances=[compute.InstanceReference(instance="instance_value")]
),
)
-def test_list_instances_rest_pager(transport: str = "rest"):
+def test_remove_instances_unary_rest_error():
client = InstanceGroupsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.InstanceGroupsListInstances(
- items=[
- compute.InstanceWithNamedPorts(),
- compute.InstanceWithNamedPorts(),
- compute.InstanceWithNamedPorts(),
- ],
- next_page_token="abc",
- ),
- compute.InstanceGroupsListInstances(
- items=[],
- next_page_token="def",
- ),
- compute.InstanceGroupsListInstances(
- items=[
- compute.InstanceWithNamedPorts(),
- ],
- next_page_token="ghi",
- ),
- compute.InstanceGroupsListInstances(
- items=[
- compute.InstanceWithNamedPorts(),
- compute.InstanceWithNamedPorts(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(
- compute.InstanceGroupsListInstances.to_json(x) for x in response
- )
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {
- "project": "sample1",
- "zone": "sample2",
- "instance_group": "sample3",
- }
- sample_request[
- "instance_groups_list_instances_request_resource"
- ] = compute.InstanceGroupsListInstancesRequest(
- instance_state="instance_state_value"
- )
-
- pager = client.list_instances(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.InstanceWithNamedPorts) for i in results)
-
- pages = list(client.list_instances(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.RemoveInstancesInstanceGroupRequest,
+ compute.SetNamedPortsInstanceGroupRequest,
dict,
],
)
-def test_remove_instances_unary_rest(request_type):
+def test_set_named_ports_rest(request_type):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2979,8 +4610,9 @@ def test_remove_instances_unary_rest(request_type):
"zone": "sample2",
"instance_group": "sample3",
}
- request_init["instance_groups_remove_instances_request_resource"] = {
- "instances": [{"instance": "instance_value"}]
+ request_init["instance_groups_set_named_ports_request_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
}
request = request_type(request_init)
@@ -3018,10 +4650,10 @@ def test_remove_instances_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_instances_unary(request)
+ response = client.set_named_ports(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -3046,8 +4678,8 @@ def test_remove_instances_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_remove_instances_unary_rest_required_fields(
- request_type=compute.RemoveInstancesInstanceGroupRequest,
+def test_set_named_ports_rest_required_fields(
+ request_type=compute.SetNamedPortsInstanceGroupRequest,
):
transport_class = transports.InstanceGroupsRestTransport
@@ -3066,7 +4698,7 @@ def test_remove_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_instances._get_unset_required_fields(jsonified_request)
+ ).set_named_ports._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3077,7 +4709,7 @@ def test_remove_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_instances._get_unset_required_fields(jsonified_request)
+ ).set_named_ports._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -3120,25 +4752,25 @@ def test_remove_instances_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_instances_unary(request)
+ response = client.set_named_ports(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_remove_instances_unary_rest_unset_required_fields():
+def test_set_named_ports_rest_unset_required_fields():
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.remove_instances._get_unset_required_fields({})
+ unset_fields = transport.set_named_ports._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instanceGroup",
- "instanceGroupsRemoveInstancesRequestResource",
+ "instanceGroupsSetNamedPortsRequestResource",
"project",
"zone",
)
@@ -3147,7 +4779,7 @@ def test_remove_instances_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_remove_instances_unary_rest_interceptors(null_interceptor):
+def test_set_named_ports_rest_interceptors(null_interceptor):
transport = transports.InstanceGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3160,9 +4792,9 @@ def test_remove_instances_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceGroupsRestInterceptor, "post_remove_instances"
+ transports.InstanceGroupsRestInterceptor, "post_set_named_ports"
) as post, mock.patch.object(
- transports.InstanceGroupsRestInterceptor, "pre_remove_instances"
+ transports.InstanceGroupsRestInterceptor, "pre_set_named_ports"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3179,7 +4811,7 @@ def test_remove_instances_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.RemoveInstancesInstanceGroupRequest()
+ request = compute.SetNamedPortsInstanceGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3187,7 +4819,7 @@ def test_remove_instances_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.remove_instances_unary(
+ client.set_named_ports(
request,
metadata=[
("key", "val"),
@@ -3199,8 +4831,8 @@ def test_remove_instances_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_remove_instances_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.RemoveInstancesInstanceGroupRequest
+def test_set_named_ports_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetNamedPortsInstanceGroupRequest
):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3213,8 +4845,9 @@ def test_remove_instances_unary_rest_bad_request(
"zone": "sample2",
"instance_group": "sample3",
}
- request_init["instance_groups_remove_instances_request_resource"] = {
- "instances": [{"instance": "instance_value"}]
+ request_init["instance_groups_set_named_ports_request_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
}
request = request_type(request_init)
@@ -3227,10 +4860,10 @@ def test_remove_instances_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.remove_instances_unary(request)
+ client.set_named_ports(request)
-def test_remove_instances_unary_rest_flattened():
+def test_set_named_ports_rest_flattened():
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3253,8 +4886,8 @@ def test_remove_instances_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance_group="instance_group_value",
- instance_groups_remove_instances_request_resource=compute.InstanceGroupsRemoveInstancesRequest(
- instances=[compute.InstanceReference(instance="instance_value")]
+ instance_groups_set_named_ports_request_resource=compute.InstanceGroupsSetNamedPortsRequest(
+ fingerprint="fingerprint_value"
),
)
mock_args.update(sample_request)
@@ -3267,20 +4900,20 @@ def test_remove_instances_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.remove_instances_unary(**mock_args)
+ client.set_named_ports(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instance_group}/removeInstances"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instanceGroups/{instance_group}/setNamedPorts"
% client.transport._host,
args[1],
)
-def test_remove_instances_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_named_ports_rest_flattened_error(transport: str = "rest"):
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3289,18 +4922,18 @@ def test_remove_instances_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.remove_instances_unary(
- compute.RemoveInstancesInstanceGroupRequest(),
+ client.set_named_ports(
+ compute.SetNamedPortsInstanceGroupRequest(),
project="project_value",
zone="zone_value",
instance_group="instance_group_value",
- instance_groups_remove_instances_request_resource=compute.InstanceGroupsRemoveInstancesRequest(
- instances=[compute.InstanceReference(instance="instance_value")]
+ instance_groups_set_named_ports_request_resource=compute.InstanceGroupsSetNamedPortsRequest(
+ fingerprint="fingerprint_value"
),
)
-def test_remove_instances_unary_rest_error():
+def test_set_named_ports_rest_error():
client = InstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3369,28 +5002,6 @@ def test_set_named_ports_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_set_named_ports_unary_rest_required_fields(
@@ -3729,6 +5340,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = InstanceGroupsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_instance_groups_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3768,6 +5392,14 @@ def test_instance_groups_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_instance_groups_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_instance_templates.py b/tests/unit/gapic/compute_v1/test_instance_templates.py
index afac338bb..41bd45b18 100644
--- a/tests/unit/gapic/compute_v1/test_instance_templates.py
+++ b/tests/unit/gapic/compute_v1/test_instance_templates.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -545,7 +547,7 @@ def test_instance_templates_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = InstanceTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -589,10 +591,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -617,7 +619,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteInstanceTemplateRequest,
):
transport_class = transports.InstanceTemplatesRestTransport
@@ -686,14 +688,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.InstanceTemplatesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -711,7 +713,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.InstanceTemplatesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -751,7 +753,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -763,7 +765,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteInstanceTemplateRequest
):
client = InstanceTemplatesClient(
@@ -784,10 +786,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = InstanceTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -816,7 +818,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -829,7 +831,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = InstanceTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -838,14 +840,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteInstanceTemplateRequest(),
project="project_value",
instance_template="instance_template_value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = InstanceTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -854,11 +856,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetInstanceTemplateRequest,
+ compute.DeleteInstanceTemplateRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = InstanceTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -871,36 +873,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceTemplate(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- source_instance="source_instance_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceTemplate.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.InstanceTemplate)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.self_link == "self_link_value"
- assert response.source_instance == "source_instance_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetInstanceTemplateRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteInstanceTemplateRequest,
+):
transport_class = transports.InstanceTemplatesRestTransport
request_init = {}
@@ -917,7 +929,7 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceTemplateReques
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -927,7 +939,9 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceTemplateReques
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -943,7 +957,7 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceTemplateReques
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceTemplate()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -954,32 +968,32 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceTemplateReques
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceTemplate.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.InstanceTemplatesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"instanceTemplate",
@@ -990,7 +1004,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.InstanceTemplatesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1003,9 +1017,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceTemplatesRestInterceptor, "post_get"
+ transports.InstanceTemplatesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.InstanceTemplatesRestInterceptor, "pre_get"
+ transports.InstanceTemplatesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1020,19 +1034,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InstanceTemplate.to_json(
- compute.InstanceTemplate()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetInstanceTemplateRequest()
+ request = compute.DeleteInstanceTemplateRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstanceTemplate
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1044,8 +1056,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetInstanceTemplateRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteInstanceTemplateRequest
):
client = InstanceTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1065,10 +1077,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = InstanceTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1077,7 +1089,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceTemplate()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "instance_template": "sample2"}
@@ -1092,12 +1104,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceTemplate.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1110,7 +1122,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = InstanceTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1119,14 +1131,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetInstanceTemplateRequest(),
+ client.delete_unary(
+ compute.DeleteInstanceTemplateRequest(),
project="project_value",
instance_template="instance_template_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = InstanceTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1135,52 +1147,58 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicyInstanceTemplateRequest,
+ compute.GetInstanceTemplateRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_get_rest(request_type):
client = InstanceTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
+ request_init = {"project": "sample1", "instance_template": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.InstanceTemplate(
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ self_link="self_link_value",
+ source_instance="source_instance_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.InstanceTemplate.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, compute.InstanceTemplate)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.self_link == "self_link_value"
+ assert response.source_instance == "source_instance_value"
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicyInstanceTemplateRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetInstanceTemplateRequest):
transport_class = transports.InstanceTemplatesRestTransport
request_init = {}
+ request_init["instance_template"] = ""
request_init["project"] = ""
- request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1192,26 +1210,24 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["instanceTemplate"] = "instance_template_value"
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "instanceTemplate" in jsonified_request
+ assert jsonified_request["instanceTemplate"] == "instance_template_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
client = InstanceTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1220,7 +1236,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.InstanceTemplate()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1238,36 +1254,793 @@ def test_get_iam_policy_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.InstanceTemplate.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.InstanceTemplatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "instanceTemplate",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.InstanceTemplatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceTemplatesRestInterceptor(),
+ )
+ client = InstanceTemplatesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceTemplatesRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.InstanceTemplatesRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.InstanceTemplate.to_json(
+ compute.InstanceTemplate()
+ )
+
+ request = compute.GetInstanceTemplateRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.InstanceTemplate
+
+ client.get(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetInstanceTemplateRequest
+):
+ client = InstanceTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "instance_template": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = InstanceTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceTemplate()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "instance_template": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ instance_template="instance_template_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceTemplate.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/instanceTemplates/{instance_template}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = InstanceTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetInstanceTemplateRequest(),
+ project="project_value",
+ instance_template="instance_template_value",
+ )
+
+
+def test_get_rest_error():
+ client = InstanceTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetIamPolicyInstanceTemplateRequest,
+ dict,
+ ],
+)
+def test_get_iam_policy_rest(request_type):
+ client = InstanceTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicyInstanceTemplateRequest,
+):
+ transport_class = transports.InstanceTemplatesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["resource"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+
+ client = InstanceTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_iam_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_iam_policy_rest_unset_required_fields():
+ transport = transports.InstanceTemplatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("optionsRequestedPolicyVersion",))
+ & set(
+ (
+ "project",
+ "resource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_iam_policy_rest_interceptors(null_interceptor):
+ transport = transports.InstanceTemplatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InstanceTemplatesRestInterceptor(),
+ )
+ client = InstanceTemplatesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstanceTemplatesRestInterceptor, "post_get_iam_policy"
+ ) as post, mock.patch.object(
+ transports.InstanceTemplatesRestInterceptor, "pre_get_iam_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
+
+ request = compute.GetIamPolicyInstanceTemplateRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Policy
+
+ client.get_iam_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetIamPolicyInstanceTemplateRequest
+):
+ client = InstanceTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_iam_policy(request)
+
+
+def test_get_iam_policy_rest_flattened():
+ client = InstanceTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "resource": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ resource="resource_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_iam_policy(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/instanceTemplates/{resource}/getIamPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+ client = InstanceTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_iam_policy(
+ compute.GetIamPolicyInstanceTemplateRequest(),
+ project="project_value",
+ resource="resource_value",
+ )
+
+
+def test_get_iam_policy_rest_error():
+ client = InstanceTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertInstanceTemplateRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = InstanceTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["instance_template_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "properties": {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "labels": {},
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_manager_tags": {},
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ },
+ "self_link": "self_link_value",
+ "source_instance": "source_instance_value",
+ "source_instance_params": {
+ "disk_configs": [
+ {
+ "auto_delete": True,
+ "custom_image": "custom_image_value",
+ "device_name": "device_name_value",
+ "instantiate_from": "instantiate_from_value",
+ }
+ ]
+ },
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertInstanceTemplateRequest,
+):
+ transport_class = transports.InstanceTemplatesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = InstanceTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.InstanceTemplatesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
+ set(("requestId",))
& set(
(
+ "instanceTemplateResource",
"project",
- "resource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.InstanceTemplatesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1280,9 +2053,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstanceTemplatesRestInterceptor, "post_get_iam_policy"
+ transports.InstanceTemplatesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.InstanceTemplatesRestInterceptor, "pre_get_iam_policy"
+ transports.InstanceTemplatesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1297,17 +2070,17 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetIamPolicyInstanceTemplateRequest()
+ request = compute.InsertInstanceTemplateRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.get_iam_policy(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1319,8 +2092,8 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.GetIamPolicyInstanceTemplateRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertInstanceTemplateRequest
):
client = InstanceTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1328,7 +2101,177 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
+ request_init = {"project": "sample1"}
+ request_init["instance_template_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "properties": {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "labels": {},
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_manager_tags": {},
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ },
+ "self_link": "self_link_value",
+ "source_instance": "source_instance_value",
+ "source_instance_params": {
+ "disk_configs": [
+ {
+ "auto_delete": True,
+ "custom_image": "custom_image_value",
+ "device_name": "device_name_value",
+ "instantiate_from": "instantiate_from_value",
+ }
+ ]
+ },
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1340,10 +2283,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.insert(request)
-def test_get_iam_policy_rest_flattened():
+def test_insert_rest_flattened():
client = InstanceTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1352,40 +2295,42 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "resource": "sample2"}
+ sample_request = {"project": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- resource="resource_value",
+ instance_template_resource=compute.InstanceTemplate(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/instanceTemplates/{resource}/getIamPolicy"
+ "%s/compute/v1/projects/{project}/global/instanceTemplates"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = InstanceTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1394,14 +2339,16 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicyInstanceTemplateRequest(),
+ client.insert(
+ compute.InsertInstanceTemplateRequest(),
project="project_value",
- resource="resource_value",
+ instance_template_resource=compute.InstanceTemplate(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
-def test_get_iam_policy_rest_error():
+def test_insert_rest_error():
client = InstanceTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1632,28 +2579,6 @@ def test_insert_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_insert_unary_rest_required_fields(
@@ -3194,6 +4119,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = InstanceTemplatesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_instance_templates_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3231,6 +4169,14 @@ def test_instance_templates_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_instance_templates_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_instances.py b/tests/unit/gapic/compute_v1/test_instances.py
index f169868bd..c788e9cc0 100644
--- a/tests/unit/gapic/compute_v1/test_instances.py
+++ b/tests/unit/gapic/compute_v1/test_instances.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -512,7 +514,7 @@ def test_instances_client_client_options_credentials_file(
dict,
],
)
-def test_add_access_config_unary_rest(request_type):
+def test_add_access_config_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -567,10 +569,10 @@ def test_add_access_config_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_access_config_unary(request)
+ response = client.add_access_config(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -595,7 +597,7 @@ def test_add_access_config_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_add_access_config_unary_rest_required_fields(
+def test_add_access_config_rest_required_fields(
request_type=compute.AddAccessConfigInstanceRequest,
):
transport_class = transports.InstancesRestTransport
@@ -681,7 +683,7 @@ def test_add_access_config_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_access_config_unary(request)
+ response = client.add_access_config(request)
expected_params = [
(
@@ -693,7 +695,7 @@ def test_add_access_config_unary_rest_required_fields(
assert expected_params == actual_params
-def test_add_access_config_unary_rest_unset_required_fields():
+def test_add_access_config_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -719,7 +721,7 @@ def test_add_access_config_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_access_config_unary_rest_interceptors(null_interceptor):
+def test_add_access_config_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -757,7 +759,7 @@ def test_add_access_config_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_access_config_unary(
+ client.add_access_config(
request,
metadata=[
("key", "val"),
@@ -769,7 +771,7 @@ def test_add_access_config_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_access_config_unary_rest_bad_request(
+def test_add_access_config_rest_bad_request(
transport: str = "rest", request_type=compute.AddAccessConfigInstanceRequest
):
client = InstancesClient(
@@ -801,10 +803,10 @@ def test_add_access_config_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_access_config_unary(request)
+ client.add_access_config(request)
-def test_add_access_config_unary_rest_flattened():
+def test_add_access_config_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -842,7 +844,7 @@ def test_add_access_config_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_access_config_unary(**mock_args)
+ client.add_access_config(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -855,7 +857,7 @@ def test_add_access_config_unary_rest_flattened():
)
-def test_add_access_config_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_access_config_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -864,7 +866,7 @@ def test_add_access_config_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_access_config_unary(
+ client.add_access_config(
compute.AddAccessConfigInstanceRequest(),
project="project_value",
zone="zone_value",
@@ -876,7 +878,7 @@ def test_add_access_config_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_add_access_config_unary_rest_error():
+def test_add_access_config_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -885,11 +887,11 @@ def test_add_access_config_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.AddResourcePoliciesInstanceRequest,
+ compute.AddAccessConfigInstanceRequest,
dict,
],
)
-def test_add_resource_policies_unary_rest(request_type):
+def test_add_access_config_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -897,8 +899,16 @@ def test_add_resource_policies_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_add_resource_policies_request_resource"] = {
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ request_init["access_config_resource"] = {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
}
request = request_type(request_init)
@@ -936,41 +946,20 @@ def test_add_resource_policies_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_resource_policies_unary(request)
+ response = client.add_access_config_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_add_resource_policies_unary_rest_required_fields(
- request_type=compute.AddResourcePoliciesInstanceRequest,
+def test_add_access_config_unary_rest_required_fields(
+ request_type=compute.AddAccessConfigInstanceRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
request_init["instance"] = ""
+ request_init["network_interface"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -981,28 +970,39 @@ def test_add_resource_policies_unary_rest_required_fields(
)
# verify fields with default values are dropped
+ assert "networkInterface" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).add_resource_policies._get_unset_required_fields(jsonified_request)
+ ).add_access_config._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ assert "networkInterface" in jsonified_request
+ assert jsonified_request["networkInterface"] == request_init["network_interface"]
jsonified_request["instance"] = "instance_value"
+ jsonified_request["networkInterface"] = "network_interface_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).add_resource_policies._get_unset_required_fields(jsonified_request)
+ ).add_access_config._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "network_interface",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "instance" in jsonified_request
assert jsonified_request["instance"] == "instance_value"
+ assert "networkInterface" in jsonified_request
+ assert jsonified_request["networkInterface"] == "network_interface_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -1038,25 +1038,36 @@ def test_add_resource_policies_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_resource_policies_unary(request)
+ response = client.add_access_config_unary(request)
- expected_params = []
+ expected_params = [
+ (
+ "networkInterface",
+ "",
+ ),
+ ]
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_add_resource_policies_unary_rest_unset_required_fields():
+def test_add_access_config_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.add_resource_policies._get_unset_required_fields({})
+ unset_fields = transport.add_access_config._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "networkInterface",
+ "requestId",
+ )
+ )
& set(
(
+ "accessConfigResource",
"instance",
- "instancesAddResourcePoliciesRequestResource",
+ "networkInterface",
"project",
"zone",
)
@@ -1065,7 +1076,7 @@ def test_add_resource_policies_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_resource_policies_unary_rest_interceptors(null_interceptor):
+def test_add_access_config_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -1076,9 +1087,9 @@ def test_add_resource_policies_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_add_resource_policies"
+ transports.InstancesRestInterceptor, "post_add_access_config"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_add_resource_policies"
+ transports.InstancesRestInterceptor, "pre_add_access_config"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1095,7 +1106,7 @@ def test_add_resource_policies_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.AddResourcePoliciesInstanceRequest()
+ request = compute.AddAccessConfigInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1103,7 +1114,7 @@ def test_add_resource_policies_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_resource_policies_unary(
+ client.add_access_config_unary(
request,
metadata=[
("key", "val"),
@@ -1115,8 +1126,8 @@ def test_add_resource_policies_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_resource_policies_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.AddResourcePoliciesInstanceRequest
+def test_add_access_config_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddAccessConfigInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1125,8 +1136,16 @@ def test_add_resource_policies_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_add_resource_policies_request_resource"] = {
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ request_init["access_config_resource"] = {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
}
request = request_type(request_init)
@@ -1139,10 +1158,10 @@ def test_add_resource_policies_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_resource_policies_unary(request)
+ client.add_access_config_unary(request)
-def test_add_resource_policies_unary_rest_flattened():
+def test_add_access_config_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1165,8 +1184,9 @@ def test_add_resource_policies_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_add_resource_policies_request_resource=compute.InstancesAddResourcePoliciesRequest(
- resource_policies=["resource_policies_value"]
+ network_interface="network_interface_value",
+ access_config_resource=compute.AccessConfig(
+ external_ipv6="external_ipv6_value"
),
)
mock_args.update(sample_request)
@@ -1179,20 +1199,20 @@ def test_add_resource_policies_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_resource_policies_unary(**mock_args)
+ client.add_access_config_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/addResourcePolicies"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/addAccessConfig"
% client.transport._host,
args[1],
)
-def test_add_resource_policies_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_access_config_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1201,18 +1221,19 @@ def test_add_resource_policies_unary_rest_flattened_error(transport: str = "rest
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_resource_policies_unary(
- compute.AddResourcePoliciesInstanceRequest(),
+ client.add_access_config_unary(
+ compute.AddAccessConfigInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_add_resource_policies_request_resource=compute.InstancesAddResourcePoliciesRequest(
- resource_policies=["resource_policies_value"]
+ network_interface="network_interface_value",
+ access_config_resource=compute.AccessConfig(
+ external_ipv6="external_ipv6_value"
),
)
-def test_add_resource_policies_unary_rest_error():
+def test_add_access_config_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1221,55 +1242,94 @@ def test_add_resource_policies_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.AggregatedListInstancesRequest,
+ compute.AddResourcePoliciesInstanceRequest,
dict,
],
)
-def test_aggregated_list_rest(request_type):
+def test_add_resource_policies_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_add_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceAggregatedList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- unreachables=["unreachables_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceAggregatedList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.aggregated_list(request)
+ response = client.add_resource_policies(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.AggregatedListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.unreachables == ["unreachables_value"]
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_aggregated_list_rest_required_fields(
- request_type=compute.AggregatedListInstancesRequest,
+def test_add_resource_policies_rest_required_fields(
+ request_type=compute.AddResourcePoliciesInstanceRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
+ request_init["instance"] = ""
request_init["project"] = ""
+ request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1281,32 +1341,29 @@ def test_aggregated_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).aggregated_list._get_unset_required_fields(jsonified_request)
+ ).add_resource_policies._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["instance"] = "instance_value"
jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).aggregated_list._get_unset_required_fields(jsonified_request)
+ ).add_resource_policies._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "include_all_scopes",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1315,7 +1372,7 @@ def test_aggregated_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceAggregatedList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1326,47 +1383,46 @@ def test_aggregated_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceAggregatedList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.aggregated_list(request)
+ response = client.add_resource_policies(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_aggregated_list_rest_unset_required_fields():
+def test_add_resource_policies_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.aggregated_list._get_unset_required_fields({})
+ unset_fields = transport.add_resource_policies._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "includeAllScopes",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "instance",
+ "instancesAddResourcePoliciesRequestResource",
+ "project",
+ "zone",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_aggregated_list_rest_interceptors(null_interceptor):
+def test_add_resource_policies_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -1377,9 +1433,9 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_aggregated_list"
+ transports.InstancesRestInterceptor, "post_add_resource_policies"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_aggregated_list"
+ transports.InstancesRestInterceptor, "pre_add_resource_policies"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1394,19 +1450,17 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InstanceAggregatedList.to_json(
- compute.InstanceAggregatedList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.AggregatedListInstancesRequest()
+ request = compute.AddResourcePoliciesInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstanceAggregatedList
+ post.return_value = compute.Operation
- client.aggregated_list(
+ client.add_resource_policies(
request,
metadata=[
("key", "val"),
@@ -1418,8 +1472,8 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_aggregated_list_rest_bad_request(
- transport: str = "rest", request_type=compute.AggregatedListInstancesRequest
+def test_add_resource_policies_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddResourcePoliciesInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1427,7 +1481,10 @@ def test_aggregated_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_add_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1439,10 +1496,10 @@ def test_aggregated_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.aggregated_list(request)
+ client.add_resource_policies(request)
-def test_aggregated_list_rest_flattened():
+def test_add_resource_policies_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1451,39 +1508,48 @@ def test_aggregated_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceAggregatedList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_add_resource_policies_request_resource=compute.InstancesAddResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceAggregatedList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.aggregated_list(**mock_args)
+ client.add_resource_policies(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/aggregated/instances"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/addResourcePolicies"
% client.transport._host,
args[1],
)
-def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
+def test_add_resource_policies_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1492,90 +1558,31 @@ def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.aggregated_list(
- compute.AggregatedListInstancesRequest(),
+ client.add_resource_policies(
+ compute.AddResourcePoliciesInstanceRequest(),
project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_add_resource_policies_request_resource=compute.InstancesAddResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
)
-def test_aggregated_list_rest_pager(transport: str = "rest"):
+def test_add_resource_policies_rest_error():
client = InstancesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.InstanceAggregatedList(
- items={
- "a": compute.InstancesScopedList(),
- "b": compute.InstancesScopedList(),
- "c": compute.InstancesScopedList(),
- },
- next_page_token="abc",
- ),
- compute.InstanceAggregatedList(
- items={},
- next_page_token="def",
- ),
- compute.InstanceAggregatedList(
- items={
- "g": compute.InstancesScopedList(),
- },
- next_page_token="ghi",
- ),
- compute.InstanceAggregatedList(
- items={
- "h": compute.InstancesScopedList(),
- "i": compute.InstancesScopedList(),
- },
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.InstanceAggregatedList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.aggregated_list(request=sample_request)
-
- assert isinstance(pager.get("a"), compute.InstancesScopedList)
- assert pager.get("h") is None
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, tuple) for i in results)
- for result in results:
- assert isinstance(result, tuple)
- assert tuple(type(t) for t in result) == (str, compute.InstancesScopedList)
-
- assert pager.get("a") is None
- assert isinstance(pager.get("h"), compute.InstancesScopedList)
-
- pages = list(client.aggregated_list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.AttachDiskInstanceRequest,
+ compute.AddResourcePoliciesInstanceRequest,
dict,
],
)
-def test_attach_disk_unary_rest(request_type):
+def test_add_resource_policies_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1583,50 +1590,8 @@ def test_attach_disk_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["attached_disk_resource"] = {
- "auto_delete": True,
- "boot": True,
- "device_name": "device_name_value",
- "disk_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "disk_size_gb": 1261,
- "guest_os_features": [{"type_": "type__value"}],
- "index": 536,
- "initialize_params": {
- "description": "description_value",
- "disk_name": "disk_name_value",
- "disk_size_gb": 1261,
- "disk_type": "disk_type_value",
- "labels": {},
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "on_update_action": "on_update_action_value",
- "provisioned_iops": 1740,
- "resource_policies": [
- "resource_policies_value_1",
- "resource_policies_value_2",
- ],
- "source_image": "source_image_value",
- "source_image_encryption_key": {},
- "source_snapshot": "source_snapshot_value",
- "source_snapshot_encryption_key": {},
- },
- "interface": "interface_value",
- "kind": "kind_value",
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "mode": "mode_value",
- "shielded_instance_initial_state": {
- "dbs": [{"content": "content_value", "file_type": "file_type_value"}],
- "dbxs": {},
- "keks": {},
- "pk": {},
- },
- "source": "source_value",
- "type_": "type__value",
+ request_init["instances_add_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
}
request = request_type(request_init)
@@ -1664,36 +1629,14 @@ def test_attach_disk_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.attach_disk_unary(request)
+ response = client.add_resource_policies_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_attach_disk_unary_rest_required_fields(
- request_type=compute.AttachDiskInstanceRequest,
+def test_add_resource_policies_unary_rest_required_fields(
+ request_type=compute.AddResourcePoliciesInstanceRequest,
):
transport_class = transports.InstancesRestTransport
@@ -1712,7 +1655,7 @@ def test_attach_disk_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).attach_disk._get_unset_required_fields(jsonified_request)
+ ).add_resource_policies._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1723,14 +1666,9 @@ def test_attach_disk_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).attach_disk._get_unset_required_fields(jsonified_request)
+ ).add_resource_policies._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "force_attach",
- "request_id",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1771,30 +1709,25 @@ def test_attach_disk_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.attach_disk_unary(request)
+ response = client.add_resource_policies_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_attach_disk_unary_rest_unset_required_fields():
+def test_add_resource_policies_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.attach_disk._get_unset_required_fields({})
+ unset_fields = transport.add_resource_policies._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "forceAttach",
- "requestId",
- )
- )
+ set(("requestId",))
& set(
(
- "attachedDiskResource",
"instance",
+ "instancesAddResourcePoliciesRequestResource",
"project",
"zone",
)
@@ -1803,7 +1736,7 @@ def test_attach_disk_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_attach_disk_unary_rest_interceptors(null_interceptor):
+def test_add_resource_policies_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -1814,9 +1747,9 @@ def test_attach_disk_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_attach_disk"
+ transports.InstancesRestInterceptor, "post_add_resource_policies"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_attach_disk"
+ transports.InstancesRestInterceptor, "pre_add_resource_policies"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1833,7 +1766,7 @@ def test_attach_disk_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.AttachDiskInstanceRequest()
+ request = compute.AddResourcePoliciesInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1841,7 +1774,7 @@ def test_attach_disk_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.attach_disk_unary(
+ client.add_resource_policies_unary(
request,
metadata=[
("key", "val"),
@@ -1853,8 +1786,8 @@ def test_attach_disk_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_attach_disk_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.AttachDiskInstanceRequest
+def test_add_resource_policies_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddResourcePoliciesInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1863,50 +1796,8 @@ def test_attach_disk_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["attached_disk_resource"] = {
- "auto_delete": True,
- "boot": True,
- "device_name": "device_name_value",
- "disk_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "disk_size_gb": 1261,
- "guest_os_features": [{"type_": "type__value"}],
- "index": 536,
- "initialize_params": {
- "description": "description_value",
- "disk_name": "disk_name_value",
- "disk_size_gb": 1261,
- "disk_type": "disk_type_value",
- "labels": {},
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "on_update_action": "on_update_action_value",
- "provisioned_iops": 1740,
- "resource_policies": [
- "resource_policies_value_1",
- "resource_policies_value_2",
- ],
- "source_image": "source_image_value",
- "source_image_encryption_key": {},
- "source_snapshot": "source_snapshot_value",
- "source_snapshot_encryption_key": {},
- },
- "interface": "interface_value",
- "kind": "kind_value",
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "mode": "mode_value",
- "shielded_instance_initial_state": {
- "dbs": [{"content": "content_value", "file_type": "file_type_value"}],
- "dbxs": {},
- "keks": {},
- "pk": {},
- },
- "source": "source_value",
- "type_": "type__value",
+ request_init["instances_add_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
}
request = request_type(request_init)
@@ -1919,10 +1810,10 @@ def test_attach_disk_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.attach_disk_unary(request)
+ client.add_resource_policies_unary(request)
-def test_attach_disk_unary_rest_flattened():
+def test_add_resource_policies_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1945,7 +1836,9 @@ def test_attach_disk_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- attached_disk_resource=compute.AttachedDisk(auto_delete=True),
+ instances_add_resource_policies_request_resource=compute.InstancesAddResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
)
mock_args.update(sample_request)
@@ -1957,20 +1850,20 @@ def test_attach_disk_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.attach_disk_unary(**mock_args)
+ client.add_resource_policies_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/attachDisk"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/addResourcePolicies"
% client.transport._host,
args[1],
)
-def test_attach_disk_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_resource_policies_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1979,16 +1872,18 @@ def test_attach_disk_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.attach_disk_unary(
- compute.AttachDiskInstanceRequest(),
+ client.add_resource_policies_unary(
+ compute.AddResourcePoliciesInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- attached_disk_resource=compute.AttachedDisk(auto_delete=True),
+ instances_add_resource_policies_request_resource=compute.InstancesAddResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
)
-def test_attach_disk_unary_rest_error():
+def test_add_resource_policies_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1997,249 +1892,55 @@ def test_attach_disk_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.BulkInsertInstanceRequest,
+ compute.AggregatedListInstancesRequest,
dict,
],
)
-def test_bulk_insert_unary_rest(request_type):
+def test_aggregated_list_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
- request_init["bulk_insert_instance_resource_resource"] = {
- "count": 553,
- "instance_properties": {
- "advanced_machine_features": {
- "enable_nested_virtualization": True,
- "enable_uefi_networking": True,
- "threads_per_core": 1689,
- },
- "can_ip_forward": True,
- "confidential_instance_config": {"enable_confidential_compute": True},
- "description": "description_value",
- "disks": [
- {
- "auto_delete": True,
- "boot": True,
- "device_name": "device_name_value",
- "disk_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "disk_size_gb": 1261,
- "guest_os_features": [{"type_": "type__value"}],
- "index": 536,
- "initialize_params": {
- "description": "description_value",
- "disk_name": "disk_name_value",
- "disk_size_gb": 1261,
- "disk_type": "disk_type_value",
- "labels": {},
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "on_update_action": "on_update_action_value",
- "provisioned_iops": 1740,
- "resource_policies": [
- "resource_policies_value_1",
- "resource_policies_value_2",
- ],
- "source_image": "source_image_value",
- "source_image_encryption_key": {},
- "source_snapshot": "source_snapshot_value",
- "source_snapshot_encryption_key": {},
- },
- "interface": "interface_value",
- "kind": "kind_value",
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "mode": "mode_value",
- "shielded_instance_initial_state": {
- "dbs": [
- {"content": "content_value", "file_type": "file_type_value"}
- ],
- "dbxs": {},
- "keks": {},
- "pk": {},
- },
- "source": "source_value",
- "type_": "type__value",
- }
- ],
- "guest_accelerators": [
- {
- "accelerator_count": 1805,
- "accelerator_type": "accelerator_type_value",
- }
- ],
- "labels": {},
- "machine_type": "machine_type_value",
- "metadata": {
- "fingerprint": "fingerprint_value",
- "items": [{"key": "key_value", "value": "value_value"}],
- "kind": "kind_value",
- },
- "min_cpu_platform": "min_cpu_platform_value",
- "network_interfaces": [
- {
- "access_configs": [
- {
- "external_ipv6": "external_ipv6_value",
- "external_ipv6_prefix_length": 2837,
- "kind": "kind_value",
- "name": "name_value",
- "nat_i_p": "nat_i_p_value",
- "network_tier": "network_tier_value",
- "public_ptr_domain_name": "public_ptr_domain_name_value",
- "set_public_ptr": True,
- "type_": "type__value",
- }
- ],
- "alias_ip_ranges": [
- {
- "ip_cidr_range": "ip_cidr_range_value",
- "subnetwork_range_name": "subnetwork_range_name_value",
- }
- ],
- "fingerprint": "fingerprint_value",
- "internal_ipv6_prefix_length": 2831,
- "ipv6_access_configs": {},
- "ipv6_access_type": "ipv6_access_type_value",
- "ipv6_address": "ipv6_address_value",
- "kind": "kind_value",
- "name": "name_value",
- "network": "network_value",
- "network_i_p": "network_i_p_value",
- "nic_type": "nic_type_value",
- "queue_count": 1197,
- "stack_type": "stack_type_value",
- "subnetwork": "subnetwork_value",
- }
- ],
- "network_performance_config": {
- "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
- },
- "private_ipv6_google_access": "private_ipv6_google_access_value",
- "reservation_affinity": {
- "consume_reservation_type": "consume_reservation_type_value",
- "key": "key_value",
- "values": ["values_value_1", "values_value_2"],
- },
- "resource_manager_tags": {},
- "resource_policies": [
- "resource_policies_value_1",
- "resource_policies_value_2",
- ],
- "scheduling": {
- "automatic_restart": True,
- "instance_termination_action": "instance_termination_action_value",
- "location_hint": "location_hint_value",
- "min_node_cpus": 1379,
- "node_affinities": [
- {
- "key": "key_value",
- "operator": "operator_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "on_host_maintenance": "on_host_maintenance_value",
- "preemptible": True,
- "provisioning_model": "provisioning_model_value",
- },
- "service_accounts": [
- {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
- ],
- "shielded_instance_config": {
- "enable_integrity_monitoring": True,
- "enable_secure_boot": True,
- "enable_vtpm": True,
- },
- "tags": {
- "fingerprint": "fingerprint_value",
- "items": ["items_value_1", "items_value_2"],
- },
- },
- "location_policy": {"locations": {}},
- "min_count": 972,
- "name_pattern": "name_pattern_value",
- "per_instance_properties": {},
- "source_instance_template": "source_instance_template_value",
- }
+ request_init = {"project": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
+ return_value = compute.InstanceAggregatedList(
+ id="id_value",
kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
+ next_page_token="next_page_token_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ unreachables=["unreachables_value"],
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InstanceAggregatedList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.bulk_insert_unary(request)
+ response = client.aggregated_list(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert isinstance(response, pagers.AggregatedListPager)
+ assert response.id == "id_value"
assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
+ assert response.next_page_token == "next_page_token_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.unreachables == ["unreachables_value"]
-def test_bulk_insert_unary_rest_required_fields(
- request_type=compute.BulkInsertInstanceRequest,
+def test_aggregated_list_rest_required_fields(
+ request_type=compute.AggregatedListInstancesRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
request_init["project"] = ""
- request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2251,26 +1952,32 @@ def test_bulk_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).bulk_insert._get_unset_required_fields(jsonified_request)
+ ).aggregated_list._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
- jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).bulk_insert._get_unset_required_fields(jsonified_request)
+ ).aggregated_list._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "include_all_scopes",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "zone" in jsonified_request
- assert jsonified_request["zone"] == "zone_value"
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2279,7 +1986,7 @@ def test_bulk_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.InstanceAggregatedList()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2290,45 +1997,47 @@ def test_bulk_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InstanceAggregatedList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.bulk_insert_unary(request)
+ response = client.aggregated_list(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_bulk_insert_unary_rest_unset_required_fields():
+def test_aggregated_list_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.bulk_insert._get_unset_required_fields({})
+ unset_fields = transport.aggregated_list._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
- & set(
+ set(
(
- "bulkInsertInstanceResourceResource",
- "project",
- "zone",
+ "filter",
+ "includeAllScopes",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
)
)
+ & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_bulk_insert_unary_rest_interceptors(null_interceptor):
+def test_aggregated_list_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -2339,9 +2048,9 @@ def test_bulk_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_bulk_insert"
+ transports.InstancesRestInterceptor, "post_aggregated_list"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_bulk_insert"
+ transports.InstancesRestInterceptor, "pre_aggregated_list"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2356,17 +2065,19 @@ def test_bulk_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.InstanceAggregatedList.to_json(
+ compute.InstanceAggregatedList()
+ )
- request = compute.BulkInsertInstanceRequest()
+ request = compute.AggregatedListInstancesRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.InstanceAggregatedList
- client.bulk_insert_unary(
+ client.aggregated_list(
request,
metadata=[
("key", "val"),
@@ -2378,8 +2089,8 @@ def test_bulk_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_bulk_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.BulkInsertInstanceRequest
+def test_aggregated_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.AggregatedListInstancesRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2387,166 +2098,7 @@ def test_bulk_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
- request_init["bulk_insert_instance_resource_resource"] = {
- "count": 553,
- "instance_properties": {
- "advanced_machine_features": {
- "enable_nested_virtualization": True,
- "enable_uefi_networking": True,
- "threads_per_core": 1689,
- },
- "can_ip_forward": True,
- "confidential_instance_config": {"enable_confidential_compute": True},
- "description": "description_value",
- "disks": [
- {
- "auto_delete": True,
- "boot": True,
- "device_name": "device_name_value",
- "disk_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "disk_size_gb": 1261,
- "guest_os_features": [{"type_": "type__value"}],
- "index": 536,
- "initialize_params": {
- "description": "description_value",
- "disk_name": "disk_name_value",
- "disk_size_gb": 1261,
- "disk_type": "disk_type_value",
- "labels": {},
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "on_update_action": "on_update_action_value",
- "provisioned_iops": 1740,
- "resource_policies": [
- "resource_policies_value_1",
- "resource_policies_value_2",
- ],
- "source_image": "source_image_value",
- "source_image_encryption_key": {},
- "source_snapshot": "source_snapshot_value",
- "source_snapshot_encryption_key": {},
- },
- "interface": "interface_value",
- "kind": "kind_value",
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "mode": "mode_value",
- "shielded_instance_initial_state": {
- "dbs": [
- {"content": "content_value", "file_type": "file_type_value"}
- ],
- "dbxs": {},
- "keks": {},
- "pk": {},
- },
- "source": "source_value",
- "type_": "type__value",
- }
- ],
- "guest_accelerators": [
- {
- "accelerator_count": 1805,
- "accelerator_type": "accelerator_type_value",
- }
- ],
- "labels": {},
- "machine_type": "machine_type_value",
- "metadata": {
- "fingerprint": "fingerprint_value",
- "items": [{"key": "key_value", "value": "value_value"}],
- "kind": "kind_value",
- },
- "min_cpu_platform": "min_cpu_platform_value",
- "network_interfaces": [
- {
- "access_configs": [
- {
- "external_ipv6": "external_ipv6_value",
- "external_ipv6_prefix_length": 2837,
- "kind": "kind_value",
- "name": "name_value",
- "nat_i_p": "nat_i_p_value",
- "network_tier": "network_tier_value",
- "public_ptr_domain_name": "public_ptr_domain_name_value",
- "set_public_ptr": True,
- "type_": "type__value",
- }
- ],
- "alias_ip_ranges": [
- {
- "ip_cidr_range": "ip_cidr_range_value",
- "subnetwork_range_name": "subnetwork_range_name_value",
- }
- ],
- "fingerprint": "fingerprint_value",
- "internal_ipv6_prefix_length": 2831,
- "ipv6_access_configs": {},
- "ipv6_access_type": "ipv6_access_type_value",
- "ipv6_address": "ipv6_address_value",
- "kind": "kind_value",
- "name": "name_value",
- "network": "network_value",
- "network_i_p": "network_i_p_value",
- "nic_type": "nic_type_value",
- "queue_count": 1197,
- "stack_type": "stack_type_value",
- "subnetwork": "subnetwork_value",
- }
- ],
- "network_performance_config": {
- "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
- },
- "private_ipv6_google_access": "private_ipv6_google_access_value",
- "reservation_affinity": {
- "consume_reservation_type": "consume_reservation_type_value",
- "key": "key_value",
- "values": ["values_value_1", "values_value_2"],
- },
- "resource_manager_tags": {},
- "resource_policies": [
- "resource_policies_value_1",
- "resource_policies_value_2",
- ],
- "scheduling": {
- "automatic_restart": True,
- "instance_termination_action": "instance_termination_action_value",
- "location_hint": "location_hint_value",
- "min_node_cpus": 1379,
- "node_affinities": [
- {
- "key": "key_value",
- "operator": "operator_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "on_host_maintenance": "on_host_maintenance_value",
- "preemptible": True,
- "provisioning_model": "provisioning_model_value",
- },
- "service_accounts": [
- {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
- ],
- "shielded_instance_config": {
- "enable_integrity_monitoring": True,
- "enable_secure_boot": True,
- "enable_vtpm": True,
- },
- "tags": {
- "fingerprint": "fingerprint_value",
- "items": ["items_value_1", "items_value_2"],
- },
- },
- "location_policy": {"locations": {}},
- "min_count": 972,
- "name_pattern": "name_pattern_value",
- "per_instance_properties": {},
- "source_instance_template": "source_instance_template_value",
- }
+ request_init = {"project": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2558,10 +2110,10 @@ def test_bulk_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.bulk_insert_unary(request)
+ client.aggregated_list(request)
-def test_bulk_insert_unary_rest_flattened():
+def test_aggregated_list_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2570,43 +2122,39 @@ def test_bulk_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.InstanceAggregatedList()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "zone": "sample2"}
+ sample_request = {"project": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- zone="zone_value",
- bulk_insert_instance_resource_resource=compute.BulkInsertInstanceResource(
- count=553
- ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InstanceAggregatedList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.bulk_insert_unary(**mock_args)
+ client.aggregated_list(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/bulkInsert"
+ "%s/compute/v1/projects/{project}/aggregated/instances"
% client.transport._host,
args[1],
)
-def test_bulk_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2615,30 +2163,90 @@ def test_bulk_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.bulk_insert_unary(
- compute.BulkInsertInstanceRequest(),
+ client.aggregated_list(
+ compute.AggregatedListInstancesRequest(),
project="project_value",
- zone="zone_value",
- bulk_insert_instance_resource_resource=compute.BulkInsertInstanceResource(
- count=553
- ),
)
-def test_bulk_insert_unary_rest_error():
+def test_aggregated_list_rest_pager(transport: str = "rest"):
client = InstancesClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
)
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.InstanceAggregatedList(
+ items={
+ "a": compute.InstancesScopedList(),
+ "b": compute.InstancesScopedList(),
+ "c": compute.InstancesScopedList(),
+ },
+ next_page_token="abc",
+ ),
+ compute.InstanceAggregatedList(
+ items={},
+ next_page_token="def",
+ ),
+ compute.InstanceAggregatedList(
+ items={
+ "g": compute.InstancesScopedList(),
+ },
+ next_page_token="ghi",
+ ),
+ compute.InstanceAggregatedList(
+ items={
+ "h": compute.InstancesScopedList(),
+ "i": compute.InstancesScopedList(),
+ },
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.InstanceAggregatedList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.aggregated_list(request=sample_request)
+
+ assert isinstance(pager.get("a"), compute.InstancesScopedList)
+ assert pager.get("h") is None
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, tuple) for i in results)
+ for result in results:
+ assert isinstance(result, tuple)
+ assert tuple(type(t) for t in result) == (str, compute.InstancesScopedList)
+
+ assert pager.get("a") is None
+ assert isinstance(pager.get("h"), compute.InstancesScopedList)
+
+ pages = list(client.aggregated_list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteInstanceRequest,
+ compute.AttachDiskInstanceRequest,
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_attach_disk_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2646,6 +2254,51 @@ def test_delete_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["attached_disk_resource"] = {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [{"content": "content_value", "file_type": "file_type_value"}],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -2682,10 +2335,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.attach_disk(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2710,7 +2363,9 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(request_type=compute.DeleteInstanceRequest):
+def test_attach_disk_rest_required_fields(
+ request_type=compute.AttachDiskInstanceRequest,
+):
transport_class = transports.InstancesRestTransport
request_init = {}
@@ -2728,7 +2383,7 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteInstanceRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).attach_disk._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2739,9 +2394,14 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteInstanceRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).attach_disk._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "force_attach",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2770,9 +2430,10 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteInstanceRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -2781,23 +2442,29 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteInstanceRe
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.attach_disk(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_attach_disk_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.attach_disk._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "forceAttach",
+ "requestId",
+ )
+ )
& set(
(
+ "attachedDiskResource",
"instance",
"project",
"zone",
@@ -2807,7 +2474,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_attach_disk_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -2818,9 +2485,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_delete"
+ transports.InstancesRestInterceptor, "post_attach_disk"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_delete"
+ transports.InstancesRestInterceptor, "pre_attach_disk"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2837,7 +2504,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteInstanceRequest()
+ request = compute.AttachDiskInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2845,7 +2512,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.attach_disk(
request,
metadata=[
("key", "val"),
@@ -2857,8 +2524,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteInstanceRequest
+def test_attach_disk_rest_bad_request(
+ transport: str = "rest", request_type=compute.AttachDiskInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2867,6 +2534,51 @@ def test_delete_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["attached_disk_resource"] = {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [{"content": "content_value", "file_type": "file_type_value"}],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2878,10 +2590,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.attach_disk(request)
-def test_delete_unary_rest_flattened():
+def test_attach_disk_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2904,6 +2616,7 @@ def test_delete_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
+ attached_disk_resource=compute.AttachedDisk(auto_delete=True),
)
mock_args.update(sample_request)
@@ -2915,20 +2628,20 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.attach_disk(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/attachDisk"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_attach_disk_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2937,15 +2650,16 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteInstanceRequest(),
+ client.attach_disk(
+ compute.AttachDiskInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
+ attached_disk_resource=compute.AttachedDisk(auto_delete=True),
)
-def test_delete_unary_rest_error():
+def test_attach_disk_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2954,11 +2668,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteAccessConfigInstanceRequest,
+ compute.AttachDiskInstanceRequest,
dict,
],
)
-def test_delete_access_config_unary_rest(request_type):
+def test_attach_disk_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2966,21 +2680,66 @@ def test_delete_access_config_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
- kind="kind_value",
+ request_init["attached_disk_resource"] = {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [{"content": "content_value", "file_type": "file_type_value"}],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
name="name_value",
operation_group_id="operation_group_id_value",
operation_type="operation_type_value",
@@ -3002,43 +2761,19 @@ def test_delete_access_config_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_access_config_unary(request)
+ response = client.attach_disk_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_delete_access_config_unary_rest_required_fields(
- request_type=compute.DeleteAccessConfigInstanceRequest,
+def test_attach_disk_unary_rest_required_fields(
+ request_type=compute.AttachDiskInstanceRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
- request_init["access_config"] = ""
request_init["instance"] = ""
- request_init["network_interface"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -3049,46 +2784,33 @@ def test_delete_access_config_unary_rest_required_fields(
)
# verify fields with default values are dropped
- assert "accessConfig" not in jsonified_request
- assert "networkInterface" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_access_config._get_unset_required_fields(jsonified_request)
+ ).attach_disk._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- assert "accessConfig" in jsonified_request
- assert jsonified_request["accessConfig"] == request_init["access_config"]
- assert "networkInterface" in jsonified_request
- assert jsonified_request["networkInterface"] == request_init["network_interface"]
- jsonified_request["accessConfig"] = "access_config_value"
jsonified_request["instance"] = "instance_value"
- jsonified_request["networkInterface"] = "network_interface_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_access_config._get_unset_required_fields(jsonified_request)
+ ).attach_disk._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "access_config",
- "network_interface",
+ "force_attach",
"request_id",
)
)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "accessConfig" in jsonified_request
- assert jsonified_request["accessConfig"] == "access_config_value"
assert "instance" in jsonified_request
assert jsonified_request["instance"] == "instance_value"
- assert "networkInterface" in jsonified_request
- assert jsonified_request["networkInterface"] == "network_interface_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -3115,6 +2837,7 @@ def test_delete_access_config_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -3123,41 +2846,30 @@ def test_delete_access_config_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_access_config_unary(request)
+ response = client.attach_disk_unary(request)
- expected_params = [
- (
- "accessConfig",
- "",
- ),
- (
- "networkInterface",
- "",
- ),
- ]
+ expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_access_config_unary_rest_unset_required_fields():
+def test_attach_disk_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete_access_config._get_unset_required_fields({})
+ unset_fields = transport.attach_disk._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
- "accessConfig",
- "networkInterface",
+ "forceAttach",
"requestId",
)
)
& set(
(
- "accessConfig",
+ "attachedDiskResource",
"instance",
- "networkInterface",
"project",
"zone",
)
@@ -3166,7 +2878,7 @@ def test_delete_access_config_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_access_config_unary_rest_interceptors(null_interceptor):
+def test_attach_disk_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -3177,9 +2889,9 @@ def test_delete_access_config_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_delete_access_config"
+ transports.InstancesRestInterceptor, "post_attach_disk"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_delete_access_config"
+ transports.InstancesRestInterceptor, "pre_attach_disk"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3196,7 +2908,7 @@ def test_delete_access_config_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteAccessConfigInstanceRequest()
+ request = compute.AttachDiskInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3204,7 +2916,7 @@ def test_delete_access_config_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_access_config_unary(
+ client.attach_disk_unary(
request,
metadata=[
("key", "val"),
@@ -3216,8 +2928,8 @@ def test_delete_access_config_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_access_config_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteAccessConfigInstanceRequest
+def test_attach_disk_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.AttachDiskInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3226,6 +2938,51 @@ def test_delete_access_config_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["attached_disk_resource"] = {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [{"content": "content_value", "file_type": "file_type_value"}],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3237,10 +2994,10 @@ def test_delete_access_config_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_access_config_unary(request)
+ client.attach_disk_unary(request)
-def test_delete_access_config_unary_rest_flattened():
+def test_attach_disk_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3263,8 +3020,7 @@ def test_delete_access_config_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- access_config="access_config_value",
- network_interface="network_interface_value",
+ attached_disk_resource=compute.AttachedDisk(auto_delete=True),
)
mock_args.update(sample_request)
@@ -3276,20 +3032,20 @@ def test_delete_access_config_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_access_config_unary(**mock_args)
+ client.attach_disk_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/deleteAccessConfig"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/attachDisk"
% client.transport._host,
args[1],
)
-def test_delete_access_config_unary_rest_flattened_error(transport: str = "rest"):
+def test_attach_disk_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3298,17 +3054,16 @@ def test_delete_access_config_unary_rest_flattened_error(transport: str = "rest"
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_access_config_unary(
- compute.DeleteAccessConfigInstanceRequest(),
+ client.attach_disk_unary(
+ compute.AttachDiskInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- access_config="access_config_value",
- network_interface="network_interface_value",
+ attached_disk_resource=compute.AttachedDisk(auto_delete=True),
)
-def test_delete_access_config_unary_rest_error():
+def test_attach_disk_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3317,58 +3072,217 @@ def test_delete_access_config_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DetachDiskInstanceRequest,
+ compute.BulkInsertInstanceRequest,
dict,
],
)
-def test_detach_disk_unary_rest(request_type):
+def test_bulk_insert_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
- kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
- self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
- )
-
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
- response_value._content = json_return_value.encode("UTF-8")
- req.return_value = response_value
- response = client.detach_disk_unary(request)
-
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["bulk_insert_instance_resource_resource"] = {
+ "count": 553,
+ "instance_properties": {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "labels": {},
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_manager_tags": {},
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ },
+ "location_policy": {"locations": {}},
+ "min_count": 972,
+ "name_pattern": "name_pattern_value",
+ "per_instance_properties": {},
+ "source_instance_template": "source_instance_template_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.bulk_insert(request)
+
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -3393,14 +3307,12 @@ def test_detach_disk_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_detach_disk_unary_rest_required_fields(
- request_type=compute.DetachDiskInstanceRequest,
+def test_bulk_insert_rest_required_fields(
+ request_type=compute.BulkInsertInstanceRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
- request_init["device_name"] = ""
- request_init["instance"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -3411,39 +3323,25 @@ def test_detach_disk_unary_rest_required_fields(
)
# verify fields with default values are dropped
- assert "deviceName" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).detach_disk._get_unset_required_fields(jsonified_request)
+ ).bulk_insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- assert "deviceName" in jsonified_request
- assert jsonified_request["deviceName"] == request_init["device_name"]
- jsonified_request["deviceName"] = "device_name_value"
- jsonified_request["instance"] = "instance_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).detach_disk._get_unset_required_fields(jsonified_request)
+ ).bulk_insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "device_name",
- "request_id",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "deviceName" in jsonified_request
- assert jsonified_request["deviceName"] == "device_name_value"
- assert "instance" in jsonified_request
- assert jsonified_request["instance"] == "instance_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -3470,6 +3368,7 @@ def test_detach_disk_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -3478,35 +3377,24 @@ def test_detach_disk_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.detach_disk_unary(request)
+ response = client.bulk_insert(request)
- expected_params = [
- (
- "deviceName",
- "",
- ),
- ]
+ expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_detach_disk_unary_rest_unset_required_fields():
+def test_bulk_insert_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.detach_disk._get_unset_required_fields({})
+ unset_fields = transport.bulk_insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "deviceName",
- "requestId",
- )
- )
+ set(("requestId",))
& set(
(
- "deviceName",
- "instance",
+ "bulkInsertInstanceResourceResource",
"project",
"zone",
)
@@ -3515,7 +3403,7 @@ def test_detach_disk_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_detach_disk_unary_rest_interceptors(null_interceptor):
+def test_bulk_insert_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -3526,9 +3414,9 @@ def test_detach_disk_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_detach_disk"
+ transports.InstancesRestInterceptor, "post_bulk_insert"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_detach_disk"
+ transports.InstancesRestInterceptor, "pre_bulk_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3545,7 +3433,7 @@ def test_detach_disk_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DetachDiskInstanceRequest()
+ request = compute.BulkInsertInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3553,7 +3441,7 @@ def test_detach_disk_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.detach_disk_unary(
+ client.bulk_insert(
request,
metadata=[
("key", "val"),
@@ -3565,8 +3453,8 @@ def test_detach_disk_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_detach_disk_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DetachDiskInstanceRequest
+def test_bulk_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.BulkInsertInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3574,7 +3462,166 @@ def test_detach_disk_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["bulk_insert_instance_resource_resource"] = {
+ "count": 553,
+ "instance_properties": {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "labels": {},
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_manager_tags": {},
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ },
+ "location_policy": {"locations": {}},
+ "min_count": 972,
+ "name_pattern": "name_pattern_value",
+ "per_instance_properties": {},
+ "source_instance_template": "source_instance_template_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3586,10 +3633,10 @@ def test_detach_disk_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.detach_disk_unary(request)
+ client.bulk_insert(request)
-def test_detach_disk_unary_rest_flattened():
+def test_bulk_insert_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3601,18 +3648,15 @@ def test_detach_disk_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "zone": "sample2",
- "instance": "sample3",
- }
+ sample_request = {"project": "sample1", "zone": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- instance="instance_value",
- device_name="device_name_value",
+ bulk_insert_instance_resource_resource=compute.BulkInsertInstanceResource(
+ count=553
+ ),
)
mock_args.update(sample_request)
@@ -3624,20 +3668,20 @@ def test_detach_disk_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.detach_disk_unary(**mock_args)
+ client.bulk_insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/detachDisk"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/bulkInsert"
% client.transport._host,
args[1],
)
-def test_detach_disk_unary_rest_flattened_error(transport: str = "rest"):
+def test_bulk_insert_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3646,16 +3690,17 @@ def test_detach_disk_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.detach_disk_unary(
- compute.DetachDiskInstanceRequest(),
+ client.bulk_insert(
+ compute.BulkInsertInstanceRequest(),
project="project_value",
zone="zone_value",
- instance="instance_value",
- device_name="device_name_value",
+ bulk_insert_instance_resource_resource=compute.BulkInsertInstanceResource(
+ count=553
+ ),
)
-def test_detach_disk_unary_rest_error():
+def test_bulk_insert_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3664,93 +3709,225 @@ def test_detach_disk_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetInstanceRequest,
+ compute.BulkInsertInstanceRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_bulk_insert_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.Instance(
- can_ip_forward=True,
- cpu_platform="cpu_platform_value",
- creation_timestamp="creation_timestamp_value",
- deletion_protection=True,
- description="description_value",
- fingerprint="fingerprint_value",
- hostname="hostname_value",
- id=205,
- kind="kind_value",
- label_fingerprint="label_fingerprint_value",
- last_start_timestamp="last_start_timestamp_value",
- last_stop_timestamp="last_stop_timestamp_value",
- last_suspended_timestamp="last_suspended_timestamp_value",
- machine_type="machine_type_value",
- min_cpu_platform="min_cpu_platform_value",
- name="name_value",
- private_ipv6_google_access="private_ipv6_google_access_value",
- resource_policies=["resource_policies_value"],
- satisfies_pzs=True,
- self_link="self_link_value",
- source_machine_image="source_machine_image_value",
- start_restricted=True,
- status="status_value",
- status_message="status_message_value",
- zone="zone_value",
- )
-
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 200
- json_return_value = compute.Instance.to_json(return_value)
- response_value._content = json_return_value.encode("UTF-8")
- req.return_value = response_value
- response = client.get(request)
-
- # Establish that the response is the type that we expect.
- assert isinstance(response, compute.Instance)
- assert response.can_ip_forward is True
- assert response.cpu_platform == "cpu_platform_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.deletion_protection is True
- assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.hostname == "hostname_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.label_fingerprint == "label_fingerprint_value"
- assert response.last_start_timestamp == "last_start_timestamp_value"
- assert response.last_stop_timestamp == "last_stop_timestamp_value"
- assert response.last_suspended_timestamp == "last_suspended_timestamp_value"
- assert response.machine_type == "machine_type_value"
- assert response.min_cpu_platform == "min_cpu_platform_value"
- assert response.name == "name_value"
- assert response.private_ipv6_google_access == "private_ipv6_google_access_value"
- assert response.resource_policies == ["resource_policies_value"]
- assert response.satisfies_pzs is True
- assert response.self_link == "self_link_value"
- assert response.source_machine_image == "source_machine_image_value"
- assert response.start_restricted is True
- assert response.status == "status_value"
- assert response.status_message == "status_message_value"
- assert response.zone == "zone_value"
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["bulk_insert_instance_resource_resource"] = {
+ "count": 553,
+ "instance_properties": {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "labels": {},
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_manager_tags": {},
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ },
+ "location_policy": {"locations": {}},
+ "min_count": 972,
+ "name_pattern": "name_pattern_value",
+ "per_instance_properties": {},
+ "source_instance_template": "source_instance_template_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.bulk_insert_unary(request)
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetInstanceRequest):
+
+def test_bulk_insert_unary_rest_required_fields(
+ request_type=compute.BulkInsertInstanceRequest,
+):
transport_class = transports.InstancesRestTransport
request_init = {}
- request_init["instance"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -3764,23 +3941,22 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).bulk_insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["instance"] = "instance_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).bulk_insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "instance" in jsonified_request
- assert jsonified_request["instance"] == "instance_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -3793,7 +3969,7 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Instance()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3804,35 +3980,36 @@ def test_get_rest_required_fields(request_type=compute.GetInstanceRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Instance.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.bulk_insert_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_bulk_insert_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.bulk_insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
- "instance",
+ "bulkInsertInstanceResourceResource",
"project",
"zone",
)
@@ -3841,7 +4018,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_bulk_insert_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -3852,9 +4029,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_get"
+ transports.InstancesRestInterceptor, "post_bulk_insert"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_get"
+ transports.InstancesRestInterceptor, "pre_bulk_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3869,17 +4046,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Instance.to_json(compute.Instance())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetInstanceRequest()
+ request = compute.BulkInsertInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Instance
+ post.return_value = compute.Operation
- client.get(
+ client.bulk_insert_unary(
request,
metadata=[
("key", "val"),
@@ -3891,8 +4068,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetInstanceRequest
+def test_bulk_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.BulkInsertInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3900,9 +4077,168 @@ def test_get_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request = request_type(request_init)
-
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["bulk_insert_instance_resource_resource"] = {
+ "count": 553,
+ "instance_properties": {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "labels": {},
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_manager_tags": {},
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ },
+ "location_policy": {"locations": {}},
+ "min_count": 972,
+ "name_pattern": "name_pattern_value",
+ "per_instance_properties": {},
+ "source_instance_template": "source_instance_template_value",
+ }
+ request = request_type(request_init)
+
# Mock the http request call within the method and fake a BadRequest error.
with mock.patch.object(Session, "request") as req, pytest.raises(
core_exceptions.BadRequest
@@ -3912,10 +4248,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.bulk_insert_unary(request)
-def test_get_rest_flattened():
+def test_bulk_insert_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3924,45 +4260,43 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Instance()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "zone": "sample2",
- "instance": "sample3",
- }
+ sample_request = {"project": "sample1", "zone": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- instance="instance_value",
+ bulk_insert_instance_resource_resource=compute.BulkInsertInstanceResource(
+ count=553
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Instance.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.bulk_insert_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/bulkInsert"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_bulk_insert_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3971,15 +4305,17 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetInstanceRequest(),
+ client.bulk_insert_unary(
+ compute.BulkInsertInstanceRequest(),
project="project_value",
zone="zone_value",
- instance="instance_value",
+ bulk_insert_instance_resource_resource=compute.BulkInsertInstanceResource(
+ count=553
+ ),
)
-def test_get_rest_error():
+def test_bulk_insert_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3988,11 +4324,11 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetEffectiveFirewallsInstanceRequest,
+ compute.DeleteInstanceRequest,
dict,
],
)
-def test_get_effective_firewalls_rest(request_type):
+def test_delete_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4005,30 +4341,70 @@ def test_get_effective_firewalls_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstancesGetEffectiveFirewallsResponse()
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstancesGetEffectiveFirewallsResponse.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_effective_firewalls(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.InstancesGetEffectiveFirewallsResponse)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_effective_firewalls_rest_required_fields(
- request_type=compute.GetEffectiveFirewallsInstanceRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteInstanceRequest):
transport_class = transports.InstancesRestTransport
request_init = {}
request_init["instance"] = ""
- request_init["network_interface"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -4039,34 +4415,28 @@ def test_get_effective_firewalls_rest_required_fields(
)
# verify fields with default values are dropped
- assert "networkInterface" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_effective_firewalls._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- assert "networkInterface" in jsonified_request
- assert jsonified_request["networkInterface"] == request_init["network_interface"]
jsonified_request["instance"] = "instance_value"
- jsonified_request["networkInterface"] = "network_interface_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_effective_firewalls._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("network_interface",))
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "instance" in jsonified_request
assert jsonified_request["instance"] == "instance_value"
- assert "networkInterface" in jsonified_request
- assert jsonified_request["networkInterface"] == "network_interface_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -4079,7 +4449,7 @@ def test_get_effective_firewalls_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstancesGetEffectiveFirewallsResponse()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -4090,43 +4460,35 @@ def test_get_effective_firewalls_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstancesGetEffectiveFirewallsResponse.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_effective_firewalls(request)
+ response = client.delete(request)
- expected_params = [
- (
- "networkInterface",
- "",
- ),
- ]
+ expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_effective_firewalls_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_effective_firewalls._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("networkInterface",))
+ set(("requestId",))
& set(
(
"instance",
- "networkInterface",
"project",
"zone",
)
@@ -4135,7 +4497,7 @@ def test_get_effective_firewalls_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_effective_firewalls_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -4146,9 +4508,9 @@ def test_get_effective_firewalls_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_get_effective_firewalls"
+ transports.InstancesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_get_effective_firewalls"
+ transports.InstancesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4163,21 +4525,17 @@ def test_get_effective_firewalls_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = (
- compute.InstancesGetEffectiveFirewallsResponse.to_json(
- compute.InstancesGetEffectiveFirewallsResponse()
- )
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetEffectiveFirewallsInstanceRequest()
+ request = compute.DeleteInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstancesGetEffectiveFirewallsResponse
+ post.return_value = compute.Operation
- client.get_effective_firewalls(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -4189,8 +4547,8 @@ def test_get_effective_firewalls_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_effective_firewalls_rest_bad_request(
- transport: str = "rest", request_type=compute.GetEffectiveFirewallsInstanceRequest
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4210,10 +4568,10 @@ def test_get_effective_firewalls_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_effective_firewalls(request)
+ client.delete(request)
-def test_get_effective_firewalls_rest_flattened():
+def test_delete_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4222,7 +4580,7 @@ def test_get_effective_firewalls_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstancesGetEffectiveFirewallsResponse()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -4236,34 +4594,31 @@ def test_get_effective_firewalls_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- network_interface="network_interface_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstancesGetEffectiveFirewallsResponse.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_effective_firewalls(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/getEffectiveFirewalls"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}"
% client.transport._host,
args[1],
)
-def test_get_effective_firewalls_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4272,16 +4627,15 @@ def test_get_effective_firewalls_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_effective_firewalls(
- compute.GetEffectiveFirewallsInstanceRequest(),
+ client.delete(
+ compute.DeleteInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- network_interface="network_interface_value",
)
-def test_get_effective_firewalls_rest_error():
+def test_delete_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4290,11 +4644,11 @@ def test_get_effective_firewalls_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetGuestAttributesInstanceRequest,
+ compute.DeleteInstanceRequest,
dict,
],
)
-def test_get_guest_attributes_rest(request_type):
+def test_delete_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4307,34 +4661,44 @@ def test_get_guest_attributes_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.GuestAttributes(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- query_path="query_path_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- variable_key="variable_key_value",
- variable_value="variable_value_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.GuestAttributes.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_guest_attributes(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.GuestAttributes)
- assert response.kind == "kind_value"
- assert response.query_path == "query_path_value"
- assert response.self_link == "self_link_value"
- assert response.variable_key == "variable_key_value"
- assert response.variable_value == "variable_value_value"
+ assert isinstance(response, compute.Operation)
-def test_get_guest_attributes_rest_required_fields(
- request_type=compute.GetGuestAttributesInstanceRequest,
-):
+def test_delete_unary_rest_required_fields(request_type=compute.DeleteInstanceRequest):
transport_class = transports.InstancesRestTransport
request_init = {}
@@ -4352,7 +4716,7 @@ def test_get_guest_attributes_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_guest_attributes._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4363,14 +4727,9 @@ def test_get_guest_attributes_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_guest_attributes._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "query_path",
- "variable_key",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -4388,7 +4747,7 @@ def test_get_guest_attributes_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.GuestAttributes()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -4399,37 +4758,32 @@ def test_get_guest_attributes_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.GuestAttributes.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_guest_attributes(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_guest_attributes_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_guest_attributes._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "queryPath",
- "variableKey",
- )
- )
+ set(("requestId",))
& set(
(
"instance",
@@ -4441,7 +4795,7 @@ def test_get_guest_attributes_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_guest_attributes_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -4452,9 +4806,9 @@ def test_get_guest_attributes_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_get_guest_attributes"
+ transports.InstancesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_get_guest_attributes"
+ transports.InstancesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4469,19 +4823,17 @@ def test_get_guest_attributes_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.GuestAttributes.to_json(
- compute.GuestAttributes()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetGuestAttributesInstanceRequest()
+ request = compute.DeleteInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.GuestAttributes
+ post.return_value = compute.Operation
- client.get_guest_attributes(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -4493,8 +4845,8 @@ def test_get_guest_attributes_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_guest_attributes_rest_bad_request(
- transport: str = "rest", request_type=compute.GetGuestAttributesInstanceRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4514,10 +4866,10 @@ def test_get_guest_attributes_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_guest_attributes(request)
+ client.delete_unary(request)
-def test_get_guest_attributes_rest_flattened():
+def test_delete_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4526,7 +4878,7 @@ def test_get_guest_attributes_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.GuestAttributes()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -4546,25 +4898,25 @@ def test_get_guest_attributes_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.GuestAttributes.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_guest_attributes(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/getGuestAttributes"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}"
% client.transport._host,
args[1],
)
-def test_get_guest_attributes_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4573,15 +4925,15 @@ def test_get_guest_attributes_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_guest_attributes(
- compute.GetGuestAttributesInstanceRequest(),
+ client.delete_unary(
+ compute.DeleteInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
)
-def test_get_guest_attributes_rest_error():
+def test_delete_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4590,52 +4942,92 @@ def test_get_guest_attributes_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicyInstanceRequest,
+ compute.DeleteAccessConfigInstanceRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_delete_access_config_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.delete_access_config(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicyInstanceRequest,
+def test_delete_access_config_rest_required_fields(
+ request_type=compute.DeleteAccessConfigInstanceRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
+ request_init["access_config"] = ""
+ request_init["instance"] = ""
+ request_init["network_interface"] = ""
request_init["project"] = ""
- request_init["resource"] = ""
request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -4645,30 +5037,48 @@ def test_get_iam_policy_rest_required_fields(
)
# verify fields with default values are dropped
+ assert "accessConfig" not in jsonified_request
+ assert "networkInterface" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).delete_access_config._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ assert "accessConfig" in jsonified_request
+ assert jsonified_request["accessConfig"] == request_init["access_config"]
+ assert "networkInterface" in jsonified_request
+ assert jsonified_request["networkInterface"] == request_init["network_interface"]
+ jsonified_request["accessConfig"] = "access_config_value"
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["networkInterface"] = "network_interface_value"
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).delete_access_config._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ assert not set(unset_fields) - set(
+ (
+ "access_config",
+ "network_interface",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "accessConfig" in jsonified_request
+ assert jsonified_request["accessConfig"] == "access_config_value"
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "networkInterface" in jsonified_request
+ assert jsonified_request["networkInterface"] == "network_interface_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
assert "zone" in jsonified_request
assert jsonified_request["zone"] == "zone_value"
@@ -4679,7 +5089,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -4690,36 +5100,53 @@ def test_get_iam_policy_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.delete_access_config(request)
- expected_params = []
+ expected_params = [
+ (
+ "accessConfig",
+ "",
+ ),
+ (
+ "networkInterface",
+ "",
+ ),
+ ]
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_delete_access_config_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.delete_access_config._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
+ set(
+ (
+ "accessConfig",
+ "networkInterface",
+ "requestId",
+ )
+ )
& set(
(
+ "accessConfig",
+ "instance",
+ "networkInterface",
"project",
- "resource",
"zone",
)
)
@@ -4727,7 +5154,7 @@ def test_get_iam_policy_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_delete_access_config_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -4738,9 +5165,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_get_iam_policy"
+ transports.InstancesRestInterceptor, "post_delete_access_config"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_get_iam_policy"
+ transports.InstancesRestInterceptor, "pre_delete_access_config"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4755,17 +5182,17 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetIamPolicyInstanceRequest()
+ request = compute.DeleteAccessConfigInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.get_iam_policy(
+ client.delete_access_config(
request,
metadata=[
("key", "val"),
@@ -4777,8 +5204,8 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.GetIamPolicyInstanceRequest
+def test_delete_access_config_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteAccessConfigInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4786,7 +5213,7 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -4798,10 +5225,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.delete_access_config(request)
-def test_get_iam_policy_rest_flattened():
+def test_delete_access_config_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4810,45 +5237,47 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
"project": "sample1",
"zone": "sample2",
- "resource": "sample3",
+ "instance": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- resource="resource_value",
+ instance="instance_value",
+ access_config="access_config_value",
+ network_interface="network_interface_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.delete_access_config(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/getIamPolicy"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/deleteAccessConfig"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_delete_access_config_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4857,15 +5286,17 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicyInstanceRequest(),
+ client.delete_access_config(
+ compute.DeleteAccessConfigInstanceRequest(),
project="project_value",
zone="zone_value",
- resource="resource_value",
+ instance="instance_value",
+ access_config="access_config_value",
+ network_interface="network_interface_value",
)
-def test_get_iam_policy_rest_error():
+def test_delete_access_config_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4874,11 +5305,11 @@ def test_get_iam_policy_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetScreenshotInstanceRequest,
+ compute.DeleteAccessConfigInstanceRequest,
dict,
],
)
-def test_get_screenshot_rest(request_type):
+def test_delete_access_config_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4891,32 +5322,52 @@ def test_get_screenshot_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Screenshot(
- contents="contents_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Screenshot.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_screenshot(request)
+ response = client.delete_access_config_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Screenshot)
- assert response.contents == "contents_value"
- assert response.kind == "kind_value"
+ assert isinstance(response, compute.Operation)
-def test_get_screenshot_rest_required_fields(
- request_type=compute.GetScreenshotInstanceRequest,
+def test_delete_access_config_unary_rest_required_fields(
+ request_type=compute.DeleteAccessConfigInstanceRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
+ request_init["access_config"] = ""
request_init["instance"] = ""
+ request_init["network_interface"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -4927,26 +5378,46 @@ def test_get_screenshot_rest_required_fields(
)
# verify fields with default values are dropped
+ assert "accessConfig" not in jsonified_request
+ assert "networkInterface" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_screenshot._get_unset_required_fields(jsonified_request)
+ ).delete_access_config._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ assert "accessConfig" in jsonified_request
+ assert jsonified_request["accessConfig"] == request_init["access_config"]
+ assert "networkInterface" in jsonified_request
+ assert jsonified_request["networkInterface"] == request_init["network_interface"]
+ jsonified_request["accessConfig"] = "access_config_value"
jsonified_request["instance"] = "instance_value"
+ jsonified_request["networkInterface"] = "network_interface_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_screenshot._get_unset_required_fields(jsonified_request)
+ ).delete_access_config._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "access_config",
+ "network_interface",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "accessConfig" in jsonified_request
+ assert jsonified_request["accessConfig"] == "access_config_value"
assert "instance" in jsonified_request
assert jsonified_request["instance"] == "instance_value"
+ assert "networkInterface" in jsonified_request
+ assert jsonified_request["networkInterface"] == "network_interface_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -4959,7 +5430,7 @@ def test_get_screenshot_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Screenshot()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -4970,35 +5441,52 @@ def test_get_screenshot_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Screenshot.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_screenshot(request)
+ response = client.delete_access_config_unary(request)
- expected_params = []
+ expected_params = [
+ (
+ "accessConfig",
+ "",
+ ),
+ (
+ "networkInterface",
+ "",
+ ),
+ ]
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_screenshot_rest_unset_required_fields():
+def test_delete_access_config_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_screenshot._get_unset_required_fields({})
+ unset_fields = transport.delete_access_config._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(
+ (
+ "accessConfig",
+ "networkInterface",
+ "requestId",
+ )
+ )
& set(
(
+ "accessConfig",
"instance",
+ "networkInterface",
"project",
"zone",
)
@@ -5007,7 +5495,7 @@ def test_get_screenshot_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_screenshot_rest_interceptors(null_interceptor):
+def test_delete_access_config_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -5018,9 +5506,9 @@ def test_get_screenshot_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_get_screenshot"
+ transports.InstancesRestInterceptor, "post_delete_access_config"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_get_screenshot"
+ transports.InstancesRestInterceptor, "pre_delete_access_config"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -5035,17 +5523,17 @@ def test_get_screenshot_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Screenshot.to_json(compute.Screenshot())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetScreenshotInstanceRequest()
+ request = compute.DeleteAccessConfigInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Screenshot
+ post.return_value = compute.Operation
- client.get_screenshot(
+ client.delete_access_config_unary(
request,
metadata=[
("key", "val"),
@@ -5057,8 +5545,8 @@ def test_get_screenshot_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_screenshot_rest_bad_request(
- transport: str = "rest", request_type=compute.GetScreenshotInstanceRequest
+def test_delete_access_config_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteAccessConfigInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -5078,10 +5566,10 @@ def test_get_screenshot_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_screenshot(request)
+ client.delete_access_config_unary(request)
-def test_get_screenshot_rest_flattened():
+def test_delete_access_config_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5090,7 +5578,7 @@ def test_get_screenshot_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Screenshot()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -5104,31 +5592,33 @@ def test_get_screenshot_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
+ access_config="access_config_value",
+ network_interface="network_interface_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Screenshot.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_screenshot(**mock_args)
+ client.delete_access_config_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/screenshot"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/deleteAccessConfig"
% client.transport._host,
args[1],
)
-def test_get_screenshot_rest_flattened_error(transport: str = "rest"):
+def test_delete_access_config_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -5137,15 +5627,17 @@ def test_get_screenshot_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_screenshot(
- compute.GetScreenshotInstanceRequest(),
+ client.delete_access_config_unary(
+ compute.DeleteAccessConfigInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
+ access_config="access_config_value",
+ network_interface="network_interface_value",
)
-def test_get_screenshot_rest_error():
+def test_delete_access_config_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -5154,11 +5646,11 @@ def test_get_screenshot_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetSerialPortOutputInstanceRequest,
+ compute.DetachDiskInstanceRequest,
dict,
],
)
-def test_get_serial_port_output_rest(request_type):
+def test_detach_disk_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5171,37 +5663,72 @@ def test_get_serial_port_output_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SerialPortOutput(
- contents="contents_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_=542,
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- start=558,
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SerialPortOutput.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_serial_port_output(request)
+ response = client.detach_disk(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.SerialPortOutput)
- assert response.contents == "contents_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_ == 542
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start == 558
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_serial_port_output_rest_required_fields(
- request_type=compute.GetSerialPortOutputInstanceRequest,
+def test_detach_disk_rest_required_fields(
+ request_type=compute.DetachDiskInstanceRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
+ request_init["device_name"] = ""
request_init["instance"] = ""
request_init["project"] = ""
request_init["zone"] = ""
@@ -5213,31 +5740,37 @@ def test_get_serial_port_output_rest_required_fields(
)
# verify fields with default values are dropped
+ assert "deviceName" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_serial_port_output._get_unset_required_fields(jsonified_request)
+ ).detach_disk._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ assert "deviceName" in jsonified_request
+ assert jsonified_request["deviceName"] == request_init["device_name"]
+ jsonified_request["deviceName"] = "device_name_value"
jsonified_request["instance"] = "instance_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_serial_port_output._get_unset_required_fields(jsonified_request)
+ ).detach_disk._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "port",
- "start",
+ "device_name",
+ "request_id",
)
)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "deviceName" in jsonified_request
+ assert jsonified_request["deviceName"] == "device_name_value"
assert "instance" in jsonified_request
assert jsonified_request["instance"] == "instance_value"
assert "project" in jsonified_request
@@ -5252,7 +5785,7 @@ def test_get_serial_port_output_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SerialPortOutput()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -5263,39 +5796,45 @@ def test_get_serial_port_output_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SerialPortOutput.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_serial_port_output(request)
+ response = client.detach_disk(request)
- expected_params = []
+ expected_params = [
+ (
+ "deviceName",
+ "",
+ ),
+ ]
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_serial_port_output_rest_unset_required_fields():
+def test_detach_disk_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_serial_port_output._get_unset_required_fields({})
+ unset_fields = transport.detach_disk._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
- "port",
- "start",
+ "deviceName",
+ "requestId",
)
)
& set(
(
+ "deviceName",
"instance",
"project",
"zone",
@@ -5305,7 +5844,7 @@ def test_get_serial_port_output_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_serial_port_output_rest_interceptors(null_interceptor):
+def test_detach_disk_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -5316,9 +5855,9 @@ def test_get_serial_port_output_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_get_serial_port_output"
+ transports.InstancesRestInterceptor, "post_detach_disk"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_get_serial_port_output"
+ transports.InstancesRestInterceptor, "pre_detach_disk"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -5333,19 +5872,17 @@ def test_get_serial_port_output_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.SerialPortOutput.to_json(
- compute.SerialPortOutput()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetSerialPortOutputInstanceRequest()
+ request = compute.DetachDiskInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.SerialPortOutput
+ post.return_value = compute.Operation
- client.get_serial_port_output(
+ client.detach_disk(
request,
metadata=[
("key", "val"),
@@ -5357,8 +5894,8 @@ def test_get_serial_port_output_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_serial_port_output_rest_bad_request(
- transport: str = "rest", request_type=compute.GetSerialPortOutputInstanceRequest
+def test_detach_disk_rest_bad_request(
+ transport: str = "rest", request_type=compute.DetachDiskInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -5378,10 +5915,10 @@ def test_get_serial_port_output_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_serial_port_output(request)
+ client.detach_disk(request)
-def test_get_serial_port_output_rest_flattened():
+def test_detach_disk_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5390,7 +5927,7 @@ def test_get_serial_port_output_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SerialPortOutput()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -5404,31 +5941,32 @@ def test_get_serial_port_output_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
+ device_name="device_name_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SerialPortOutput.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_serial_port_output(**mock_args)
+ client.detach_disk(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/serialPort"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/detachDisk"
% client.transport._host,
args[1],
)
-def test_get_serial_port_output_rest_flattened_error(transport: str = "rest"):
+def test_detach_disk_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -5437,15 +5975,16 @@ def test_get_serial_port_output_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_serial_port_output(
- compute.GetSerialPortOutputInstanceRequest(),
+ client.detach_disk(
+ compute.DetachDiskInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
+ device_name="device_name_value",
)
-def test_get_serial_port_output_rest_error():
+def test_detach_disk_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -5454,11 +5993,11 @@ def test_get_serial_port_output_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetShieldedInstanceIdentityInstanceRequest,
+ compute.DetachDiskInstanceRequest,
dict,
],
)
-def test_get_shielded_instance_identity_rest(request_type):
+def test_detach_disk_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5471,29 +6010,50 @@ def test_get_shielded_instance_identity_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ShieldedInstanceIdentity(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ShieldedInstanceIdentity.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_shielded_instance_identity(request)
+ response = client.detach_disk_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.ShieldedInstanceIdentity)
- assert response.kind == "kind_value"
+ assert isinstance(response, compute.Operation)
-def test_get_shielded_instance_identity_rest_required_fields(
- request_type=compute.GetShieldedInstanceIdentityInstanceRequest,
+def test_detach_disk_unary_rest_required_fields(
+ request_type=compute.DetachDiskInstanceRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
+ request_init["device_name"] = ""
request_init["instance"] = ""
request_init["project"] = ""
request_init["zone"] = ""
@@ -5505,24 +6065,37 @@ def test_get_shielded_instance_identity_rest_required_fields(
)
# verify fields with default values are dropped
+ assert "deviceName" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_shielded_instance_identity._get_unset_required_fields(jsonified_request)
+ ).detach_disk._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ assert "deviceName" in jsonified_request
+ assert jsonified_request["deviceName"] == request_init["device_name"]
+ jsonified_request["deviceName"] = "device_name_value"
jsonified_request["instance"] = "instance_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_shielded_instance_identity._get_unset_required_fields(jsonified_request)
+ ).detach_disk._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "device_name",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "deviceName" in jsonified_request
+ assert jsonified_request["deviceName"] == "device_name_value"
assert "instance" in jsonified_request
assert jsonified_request["instance"] == "instance_value"
assert "project" in jsonified_request
@@ -5537,7 +6110,7 @@ def test_get_shielded_instance_identity_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.ShieldedInstanceIdentity()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -5548,36 +6121,45 @@ def test_get_shielded_instance_identity_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ShieldedInstanceIdentity.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_shielded_instance_identity(request)
+ response = client.detach_disk_unary(request)
- expected_params = []
+ expected_params = [
+ (
+ "deviceName",
+ "",
+ ),
+ ]
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_shielded_instance_identity_rest_unset_required_fields():
+def test_detach_disk_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_shielded_instance_identity._get_unset_required_fields(
- {}
- )
+ unset_fields = transport.detach_disk._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(
+ (
+ "deviceName",
+ "requestId",
+ )
+ )
& set(
(
+ "deviceName",
"instance",
"project",
"zone",
@@ -5587,7 +6169,7 @@ def test_get_shielded_instance_identity_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_shielded_instance_identity_rest_interceptors(null_interceptor):
+def test_detach_disk_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -5598,9 +6180,9 @@ def test_get_shielded_instance_identity_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_get_shielded_instance_identity"
+ transports.InstancesRestInterceptor, "post_detach_disk"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_get_shielded_instance_identity"
+ transports.InstancesRestInterceptor, "pre_detach_disk"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -5615,19 +6197,17 @@ def test_get_shielded_instance_identity_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.ShieldedInstanceIdentity.to_json(
- compute.ShieldedInstanceIdentity()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetShieldedInstanceIdentityInstanceRequest()
+ request = compute.DetachDiskInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.ShieldedInstanceIdentity
+ post.return_value = compute.Operation
- client.get_shielded_instance_identity(
+ client.detach_disk_unary(
request,
metadata=[
("key", "val"),
@@ -5639,9 +6219,8 @@ def test_get_shielded_instance_identity_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_shielded_instance_identity_rest_bad_request(
- transport: str = "rest",
- request_type=compute.GetShieldedInstanceIdentityInstanceRequest,
+def test_detach_disk_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DetachDiskInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -5661,10 +6240,10 @@ def test_get_shielded_instance_identity_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_shielded_instance_identity(request)
+ client.detach_disk_unary(request)
-def test_get_shielded_instance_identity_rest_flattened():
+def test_detach_disk_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5673,7 +6252,7 @@ def test_get_shielded_instance_identity_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ShieldedInstanceIdentity()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -5687,31 +6266,32 @@ def test_get_shielded_instance_identity_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
+ device_name="device_name_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ShieldedInstanceIdentity.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_shielded_instance_identity(**mock_args)
+ client.detach_disk_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/getShieldedInstanceIdentity"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/detachDisk"
% client.transport._host,
args[1],
)
-def test_get_shielded_instance_identity_rest_flattened_error(transport: str = "rest"):
+def test_detach_disk_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -5720,15 +6300,16 @@ def test_get_shielded_instance_identity_rest_flattened_error(transport: str = "r
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_shielded_instance_identity(
- compute.GetShieldedInstanceIdentityInstanceRequest(),
+ client.detach_disk_unary(
+ compute.DetachDiskInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
+ device_name="device_name_value",
)
-def test_get_shielded_instance_identity_rest_error():
+def test_detach_disk_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -5737,253 +6318,93 @@ def test_get_shielded_instance_identity_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertInstanceRequest,
+ compute.GetInstanceRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
- request_init["instance_resource"] = {
- "advanced_machine_features": {
- "enable_nested_virtualization": True,
- "enable_uefi_networking": True,
- "threads_per_core": 1689,
- },
- "can_ip_forward": True,
- "confidential_instance_config": {"enable_confidential_compute": True},
- "cpu_platform": "cpu_platform_value",
- "creation_timestamp": "creation_timestamp_value",
- "deletion_protection": True,
- "description": "description_value",
- "disks": [
- {
- "auto_delete": True,
- "boot": True,
- "device_name": "device_name_value",
- "disk_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "disk_size_gb": 1261,
- "guest_os_features": [{"type_": "type__value"}],
- "index": 536,
- "initialize_params": {
- "description": "description_value",
- "disk_name": "disk_name_value",
- "disk_size_gb": 1261,
- "disk_type": "disk_type_value",
- "labels": {},
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "on_update_action": "on_update_action_value",
- "provisioned_iops": 1740,
- "resource_policies": [
- "resource_policies_value_1",
- "resource_policies_value_2",
- ],
- "source_image": "source_image_value",
- "source_image_encryption_key": {},
- "source_snapshot": "source_snapshot_value",
- "source_snapshot_encryption_key": {},
- },
- "interface": "interface_value",
- "kind": "kind_value",
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "mode": "mode_value",
- "shielded_instance_initial_state": {
- "dbs": [
- {"content": "content_value", "file_type": "file_type_value"}
- ],
- "dbxs": {},
- "keks": {},
- "pk": {},
- },
- "source": "source_value",
- "type_": "type__value",
- }
- ],
- "display_device": {"enable_display": True},
- "fingerprint": "fingerprint_value",
- "guest_accelerators": [
- {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
- ],
- "hostname": "hostname_value",
- "id": 205,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "last_start_timestamp": "last_start_timestamp_value",
- "last_stop_timestamp": "last_stop_timestamp_value",
- "last_suspended_timestamp": "last_suspended_timestamp_value",
- "machine_type": "machine_type_value",
- "metadata": {
- "fingerprint": "fingerprint_value",
- "items": [{"key": "key_value", "value": "value_value"}],
- "kind": "kind_value",
- },
- "min_cpu_platform": "min_cpu_platform_value",
- "name": "name_value",
- "network_interfaces": [
- {
- "access_configs": [
- {
- "external_ipv6": "external_ipv6_value",
- "external_ipv6_prefix_length": 2837,
- "kind": "kind_value",
- "name": "name_value",
- "nat_i_p": "nat_i_p_value",
- "network_tier": "network_tier_value",
- "public_ptr_domain_name": "public_ptr_domain_name_value",
- "set_public_ptr": True,
- "type_": "type__value",
- }
- ],
- "alias_ip_ranges": [
- {
- "ip_cidr_range": "ip_cidr_range_value",
- "subnetwork_range_name": "subnetwork_range_name_value",
- }
- ],
- "fingerprint": "fingerprint_value",
- "internal_ipv6_prefix_length": 2831,
- "ipv6_access_configs": {},
- "ipv6_access_type": "ipv6_access_type_value",
- "ipv6_address": "ipv6_address_value",
- "kind": "kind_value",
- "name": "name_value",
- "network": "network_value",
- "network_i_p": "network_i_p_value",
- "nic_type": "nic_type_value",
- "queue_count": 1197,
- "stack_type": "stack_type_value",
- "subnetwork": "subnetwork_value",
- }
- ],
- "network_performance_config": {
- "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
- },
- "params": {"resource_manager_tags": {}},
- "private_ipv6_google_access": "private_ipv6_google_access_value",
- "reservation_affinity": {
- "consume_reservation_type": "consume_reservation_type_value",
- "key": "key_value",
- "values": ["values_value_1", "values_value_2"],
- },
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
- "satisfies_pzs": True,
- "scheduling": {
- "automatic_restart": True,
- "instance_termination_action": "instance_termination_action_value",
- "location_hint": "location_hint_value",
- "min_node_cpus": 1379,
- "node_affinities": [
- {
- "key": "key_value",
- "operator": "operator_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "on_host_maintenance": "on_host_maintenance_value",
- "preemptible": True,
- "provisioning_model": "provisioning_model_value",
- },
- "self_link": "self_link_value",
- "service_accounts": [
- {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
- ],
- "shielded_instance_config": {
- "enable_integrity_monitoring": True,
- "enable_secure_boot": True,
- "enable_vtpm": True,
- },
- "shielded_instance_integrity_policy": {"update_auto_learn_policy": True},
- "source_machine_image": "source_machine_image_value",
- "source_machine_image_encryption_key": {},
- "start_restricted": True,
- "status": "status_value",
- "status_message": "status_message_value",
- "tags": {
- "fingerprint": "fingerprint_value",
- "items": ["items_value_1", "items_value_2"],
- },
- "zone": "zone_value",
- }
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.Instance(
+ can_ip_forward=True,
+ cpu_platform="cpu_platform_value",
creation_timestamp="creation_timestamp_value",
+ deletion_protection=True,
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
+ hostname="hostname_value",
id=205,
- insert_time="insert_time_value",
kind="kind_value",
+ label_fingerprint="label_fingerprint_value",
+ last_start_timestamp="last_start_timestamp_value",
+ last_stop_timestamp="last_stop_timestamp_value",
+ last_suspended_timestamp="last_suspended_timestamp_value",
+ machine_type="machine_type_value",
+ min_cpu_platform="min_cpu_platform_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
+ private_ipv6_google_access="private_ipv6_google_access_value",
+ resource_policies=["resource_policies_value"],
+ satisfies_pzs=True,
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
+ source_machine_image="source_machine_image_value",
+ start_restricted=True,
+ status="status_value",
status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Instance.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.Instance)
+ assert response.can_ip_forward is True
+ assert response.cpu_platform == "cpu_platform_value"
assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.deletion_protection is True
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
+ assert response.hostname == "hostname_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
+ assert response.label_fingerprint == "label_fingerprint_value"
+ assert response.last_start_timestamp == "last_start_timestamp_value"
+ assert response.last_stop_timestamp == "last_stop_timestamp_value"
+ assert response.last_suspended_timestamp == "last_suspended_timestamp_value"
+ assert response.machine_type == "machine_type_value"
+ assert response.min_cpu_platform == "min_cpu_platform_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
+ assert response.private_ipv6_google_access == "private_ipv6_google_access_value"
+ assert response.resource_policies == ["resource_policies_value"]
+ assert response.satisfies_pzs is True
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
+ assert response.source_machine_image == "source_machine_image_value"
+ assert response.start_restricted is True
+ assert response.status == "status_value"
assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(request_type=compute.InsertInstanceRequest):
+def test_get_rest_required_fields(request_type=compute.GetInstanceRequest):
transport_class = transports.InstancesRestTransport
request_init = {}
+ request_init["instance"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -5997,28 +6418,23 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertInstanceRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["instance"] = "instance_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "request_id",
- "source_instance_template",
- "source_machine_image",
- )
- )
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -6031,7 +6447,7 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertInstanceRe
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Instance()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -6042,42 +6458,35 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertInstanceRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Instance.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "requestId",
- "sourceInstanceTemplate",
- "sourceMachineImage",
- )
- )
+ set(())
& set(
(
- "instanceResource",
+ "instance",
"project",
"zone",
)
@@ -6086,7 +6495,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -6097,9 +6506,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_insert"
+ transports.InstancesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_insert"
+ transports.InstancesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -6114,17 +6523,17 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.Instance.to_json(compute.Instance())
- request = compute.InsertInstanceRequest()
+ request = compute.GetInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.Instance
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -6136,8 +6545,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertInstanceRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -6145,173 +6554,10989 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
- request_init["instance_resource"] = {
- "advanced_machine_features": {
- "enable_nested_virtualization": True,
- "enable_uefi_networking": True,
- "threads_per_core": 1689,
- },
- "can_ip_forward": True,
- "confidential_instance_config": {"enable_confidential_compute": True},
- "cpu_platform": "cpu_platform_value",
- "creation_timestamp": "creation_timestamp_value",
- "deletion_protection": True,
- "description": "description_value",
- "disks": [
- {
- "auto_delete": True,
- "boot": True,
- "device_name": "device_name_value",
- "disk_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "disk_size_gb": 1261,
- "guest_os_features": [{"type_": "type__value"}],
- "index": 536,
- "initialize_params": {
- "description": "description_value",
- "disk_name": "disk_name_value",
- "disk_size_gb": 1261,
- "disk_type": "disk_type_value",
- "labels": {},
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "on_update_action": "on_update_action_value",
- "provisioned_iops": 1740,
- "resource_policies": [
- "resource_policies_value_1",
- "resource_policies_value_2",
- ],
- "source_image": "source_image_value",
- "source_image_encryption_key": {},
- "source_snapshot": "source_snapshot_value",
- "source_snapshot_encryption_key": {},
- },
- "interface": "interface_value",
- "kind": "kind_value",
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "mode": "mode_value",
- "shielded_instance_initial_state": {
- "dbs": [
- {"content": "content_value", "file_type": "file_type_value"}
- ],
- "dbxs": {},
- "keks": {},
- "pk": {},
- },
- "source": "source_value",
- "type_": "type__value",
- }
- ],
- "display_device": {"enable_display": True},
- "fingerprint": "fingerprint_value",
- "guest_accelerators": [
- {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
- ],
- "hostname": "hostname_value",
- "id": 205,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "last_start_timestamp": "last_start_timestamp_value",
- "last_stop_timestamp": "last_stop_timestamp_value",
- "last_suspended_timestamp": "last_suspended_timestamp_value",
- "machine_type": "machine_type_value",
- "metadata": {
- "fingerprint": "fingerprint_value",
- "items": [{"key": "key_value", "value": "value_value"}],
- "kind": "kind_value",
- },
- "min_cpu_platform": "min_cpu_platform_value",
- "name": "name_value",
- "network_interfaces": [
- {
- "access_configs": [
- {
- "external_ipv6": "external_ipv6_value",
- "external_ipv6_prefix_length": 2837,
- "kind": "kind_value",
- "name": "name_value",
- "nat_i_p": "nat_i_p_value",
- "network_tier": "network_tier_value",
- "public_ptr_domain_name": "public_ptr_domain_name_value",
- "set_public_ptr": True,
- "type_": "type__value",
- }
- ],
- "alias_ip_ranges": [
- {
- "ip_cidr_range": "ip_cidr_range_value",
- "subnetwork_range_name": "subnetwork_range_name_value",
- }
- ],
- "fingerprint": "fingerprint_value",
- "internal_ipv6_prefix_length": 2831,
- "ipv6_access_configs": {},
- "ipv6_access_type": "ipv6_access_type_value",
- "ipv6_address": "ipv6_address_value",
- "kind": "kind_value",
- "name": "name_value",
- "network": "network_value",
- "network_i_p": "network_i_p_value",
- "nic_type": "nic_type_value",
- "queue_count": 1197,
- "stack_type": "stack_type_value",
- "subnetwork": "subnetwork_value",
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Instance()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Instance.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+
+
+def test_get_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetEffectiveFirewallsInstanceRequest,
+ dict,
+ ],
+)
+def test_get_effective_firewalls_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstancesGetEffectiveFirewallsResponse()
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstancesGetEffectiveFirewallsResponse.to_json(
+ return_value
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_effective_firewalls(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.InstancesGetEffectiveFirewallsResponse)
+
+
+def test_get_effective_firewalls_rest_required_fields(
+ request_type=compute.GetEffectiveFirewallsInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["network_interface"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+ assert "networkInterface" not in jsonified_request
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_effective_firewalls._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+ assert "networkInterface" in jsonified_request
+ assert jsonified_request["networkInterface"] == request_init["network_interface"]
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["networkInterface"] = "network_interface_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_effective_firewalls._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("network_interface",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "networkInterface" in jsonified_request
+ assert jsonified_request["networkInterface"] == "network_interface_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstancesGetEffectiveFirewallsResponse()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstancesGetEffectiveFirewallsResponse.to_json(
+ return_value
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_effective_firewalls(request)
+
+ expected_params = [
+ (
+ "networkInterface",
+ "",
+ ),
+ ]
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_effective_firewalls_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_effective_firewalls._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("networkInterface",))
+ & set(
+ (
+ "instance",
+ "networkInterface",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_effective_firewalls_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_get_effective_firewalls"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_get_effective_firewalls"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = (
+ compute.InstancesGetEffectiveFirewallsResponse.to_json(
+ compute.InstancesGetEffectiveFirewallsResponse()
+ )
+ )
+
+ request = compute.GetEffectiveFirewallsInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.InstancesGetEffectiveFirewallsResponse
+
+ client.get_effective_firewalls(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_effective_firewalls_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetEffectiveFirewallsInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_effective_firewalls(request)
+
+
+def test_get_effective_firewalls_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstancesGetEffectiveFirewallsResponse()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ network_interface="network_interface_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstancesGetEffectiveFirewallsResponse.to_json(
+ return_value
+ )
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_effective_firewalls(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/getEffectiveFirewalls"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_effective_firewalls_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_effective_firewalls(
+ compute.GetEffectiveFirewallsInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ network_interface="network_interface_value",
+ )
+
+
+def test_get_effective_firewalls_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetGuestAttributesInstanceRequest,
+ dict,
+ ],
+)
+def test_get_guest_attributes_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.GuestAttributes(
+ kind="kind_value",
+ query_path="query_path_value",
+ self_link="self_link_value",
+ variable_key="variable_key_value",
+ variable_value="variable_value_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.GuestAttributes.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_guest_attributes(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.GuestAttributes)
+ assert response.kind == "kind_value"
+ assert response.query_path == "query_path_value"
+ assert response.self_link == "self_link_value"
+ assert response.variable_key == "variable_key_value"
+ assert response.variable_value == "variable_value_value"
+
+
+def test_get_guest_attributes_rest_required_fields(
+ request_type=compute.GetGuestAttributesInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_guest_attributes._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_guest_attributes._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "query_path",
+ "variable_key",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.GuestAttributes()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.GuestAttributes.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_guest_attributes(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_guest_attributes_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_guest_attributes._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "queryPath",
+ "variableKey",
+ )
+ )
+ & set(
+ (
+ "instance",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_guest_attributes_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_get_guest_attributes"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_get_guest_attributes"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.GuestAttributes.to_json(
+ compute.GuestAttributes()
+ )
+
+ request = compute.GetGuestAttributesInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.GuestAttributes
+
+ client.get_guest_attributes(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_guest_attributes_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetGuestAttributesInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_guest_attributes(request)
+
+
+def test_get_guest_attributes_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.GuestAttributes()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.GuestAttributes.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_guest_attributes(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/getGuestAttributes"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_guest_attributes_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_guest_attributes(
+ compute.GetGuestAttributesInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+
+
+def test_get_guest_attributes_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetIamPolicyInstanceRequest,
+ dict,
+ ],
+)
+def test_get_iam_policy_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicyInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["resource"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_iam_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_iam_policy_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("optionsRequestedPolicyVersion",))
+ & set(
+ (
+ "project",
+ "resource",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_iam_policy_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_get_iam_policy"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_get_iam_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
+
+ request = compute.GetIamPolicyInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Policy
+
+ client.get_iam_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetIamPolicyInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_iam_policy(request)
+
+
+def test_get_iam_policy_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "resource": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ resource="resource_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_iam_policy(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/getIamPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_iam_policy(
+ compute.GetIamPolicyInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ resource="resource_value",
+ )
+
+
+def test_get_iam_policy_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetScreenshotInstanceRequest,
+ dict,
+ ],
+)
+def test_get_screenshot_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Screenshot(
+ contents="contents_value",
+ kind="kind_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Screenshot.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_screenshot(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Screenshot)
+ assert response.contents == "contents_value"
+ assert response.kind == "kind_value"
+
+
+def test_get_screenshot_rest_required_fields(
+ request_type=compute.GetScreenshotInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_screenshot._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_screenshot._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Screenshot()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Screenshot.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_screenshot(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_screenshot_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_screenshot._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "instance",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_screenshot_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_get_screenshot"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_get_screenshot"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Screenshot.to_json(compute.Screenshot())
+
+ request = compute.GetScreenshotInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Screenshot
+
+ client.get_screenshot(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_screenshot_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetScreenshotInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_screenshot(request)
+
+
+def test_get_screenshot_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Screenshot()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Screenshot.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_screenshot(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/screenshot"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_screenshot_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_screenshot(
+ compute.GetScreenshotInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+
+
+def test_get_screenshot_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetSerialPortOutputInstanceRequest,
+ dict,
+ ],
+)
+def test_get_serial_port_output_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SerialPortOutput(
+ contents="contents_value",
+ kind="kind_value",
+ next_=542,
+ self_link="self_link_value",
+ start=558,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SerialPortOutput.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_serial_port_output(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.SerialPortOutput)
+ assert response.contents == "contents_value"
+ assert response.kind == "kind_value"
+ assert response.next_ == 542
+ assert response.self_link == "self_link_value"
+ assert response.start == 558
+
+
+def test_get_serial_port_output_rest_required_fields(
+ request_type=compute.GetSerialPortOutputInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_serial_port_output._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_serial_port_output._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "port",
+ "start",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SerialPortOutput()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SerialPortOutput.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_serial_port_output(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_serial_port_output_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_serial_port_output._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "port",
+ "start",
+ )
+ )
+ & set(
+ (
+ "instance",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_serial_port_output_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_get_serial_port_output"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_get_serial_port_output"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.SerialPortOutput.to_json(
+ compute.SerialPortOutput()
+ )
+
+ request = compute.GetSerialPortOutputInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.SerialPortOutput
+
+ client.get_serial_port_output(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_serial_port_output_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetSerialPortOutputInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_serial_port_output(request)
+
+
+def test_get_serial_port_output_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SerialPortOutput()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SerialPortOutput.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_serial_port_output(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/serialPort"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_serial_port_output_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_serial_port_output(
+ compute.GetSerialPortOutputInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+
+
+def test_get_serial_port_output_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetShieldedInstanceIdentityInstanceRequest,
+ dict,
+ ],
+)
+def test_get_shielded_instance_identity_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ShieldedInstanceIdentity(
+ kind="kind_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ShieldedInstanceIdentity.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_shielded_instance_identity(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.ShieldedInstanceIdentity)
+ assert response.kind == "kind_value"
+
+
+def test_get_shielded_instance_identity_rest_required_fields(
+ request_type=compute.GetShieldedInstanceIdentityInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_shielded_instance_identity._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_shielded_instance_identity._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ShieldedInstanceIdentity()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ShieldedInstanceIdentity.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_shielded_instance_identity(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_shielded_instance_identity_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_shielded_instance_identity._get_unset_required_fields(
+ {}
+ )
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "instance",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_shielded_instance_identity_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_get_shielded_instance_identity"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_get_shielded_instance_identity"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.ShieldedInstanceIdentity.to_json(
+ compute.ShieldedInstanceIdentity()
+ )
+
+ request = compute.GetShieldedInstanceIdentityInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.ShieldedInstanceIdentity
+
+ client.get_shielded_instance_identity(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_shielded_instance_identity_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.GetShieldedInstanceIdentityInstanceRequest,
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_shielded_instance_identity(request)
+
+
+def test_get_shielded_instance_identity_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ShieldedInstanceIdentity()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ShieldedInstanceIdentity.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_shielded_instance_identity(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/getShieldedInstanceIdentity"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_shielded_instance_identity_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_shielded_instance_identity(
+ compute.GetShieldedInstanceIdentityInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+
+
+def test_get_shielded_instance_identity_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertInstanceRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["instance_resource"] = {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "cpu_platform": "cpu_platform_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "deletion_protection": True,
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "display_device": {"enable_display": True},
+ "fingerprint": "fingerprint_value",
+ "guest_accelerators": [
+ {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
+ ],
+ "hostname": "hostname_value",
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_start_timestamp": "last_start_timestamp_value",
+ "last_stop_timestamp": "last_stop_timestamp_value",
+ "last_suspended_timestamp": "last_suspended_timestamp_value",
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "name": "name_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "params": {"resource_manager_tags": {}},
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "self_link": "self_link_value",
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "shielded_instance_integrity_policy": {"update_auto_learn_policy": True},
+ "source_machine_image": "source_machine_image_value",
+ "source_machine_image_encryption_key": {},
+ "start_restricted": True,
+ "status": "status_value",
+ "status_message": "status_message_value",
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertInstanceRequest):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "source_instance_template",
+ "source_machine_image",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "sourceInstanceTemplate",
+ "sourceMachineImage",
+ )
+ )
+ & set(
+ (
+ "instanceResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["instance_resource"] = {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "cpu_platform": "cpu_platform_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "deletion_protection": True,
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "display_device": {"enable_display": True},
+ "fingerprint": "fingerprint_value",
+ "guest_accelerators": [
+ {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
+ ],
+ "hostname": "hostname_value",
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_start_timestamp": "last_start_timestamp_value",
+ "last_stop_timestamp": "last_stop_timestamp_value",
+ "last_suspended_timestamp": "last_suspended_timestamp_value",
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "name": "name_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "params": {"resource_manager_tags": {}},
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "self_link": "self_link_value",
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "shielded_instance_integrity_policy": {"update_auto_learn_policy": True},
+ "source_machine_image": "source_machine_image_value",
+ "source_machine_image_encryption_key": {},
+ "start_restricted": True,
+ "status": "status_value",
+ "status_message": "status_message_value",
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_resource=compute.Instance(
+ advanced_machine_features=compute.AdvancedMachineFeatures(
+ enable_nested_virtualization=True
+ )
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_resource=compute.Instance(
+ advanced_machine_features=compute.AdvancedMachineFeatures(
+ enable_nested_virtualization=True
+ )
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertInstanceRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["instance_resource"] = {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "cpu_platform": "cpu_platform_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "deletion_protection": True,
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "display_device": {"enable_display": True},
+ "fingerprint": "fingerprint_value",
+ "guest_accelerators": [
+ {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
+ ],
+ "hostname": "hostname_value",
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_start_timestamp": "last_start_timestamp_value",
+ "last_stop_timestamp": "last_stop_timestamp_value",
+ "last_suspended_timestamp": "last_suspended_timestamp_value",
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "name": "name_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "params": {"resource_manager_tags": {}},
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "self_link": "self_link_value",
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "shielded_instance_integrity_policy": {"update_auto_learn_policy": True},
+ "source_machine_image": "source_machine_image_value",
+ "source_machine_image_encryption_key": {},
+ "start_restricted": True,
+ "status": "status_value",
+ "status_message": "status_message_value",
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(request_type=compute.InsertInstanceRequest):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "source_instance_template",
+ "source_machine_image",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "sourceInstanceTemplate",
+ "sourceMachineImage",
+ )
+ )
+ & set(
+ (
+ "instanceResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["instance_resource"] = {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "cpu_platform": "cpu_platform_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "deletion_protection": True,
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "display_device": {"enable_display": True},
+ "fingerprint": "fingerprint_value",
+ "guest_accelerators": [
+ {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
+ ],
+ "hostname": "hostname_value",
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_start_timestamp": "last_start_timestamp_value",
+ "last_stop_timestamp": "last_stop_timestamp_value",
+ "last_suspended_timestamp": "last_suspended_timestamp_value",
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "name": "name_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "params": {"resource_manager_tags": {}},
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "self_link": "self_link_value",
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "shielded_instance_integrity_policy": {"update_auto_learn_policy": True},
+ "source_machine_image": "source_machine_image_value",
+ "source_machine_image_encryption_key": {},
+ "start_restricted": True,
+ "status": "status_value",
+ "status_message": "status_message_value",
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance_resource=compute.Instance(
+ advanced_machine_features=compute.AdvancedMachineFeatures(
+ enable_nested_virtualization=True
+ )
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance_resource=compute.Instance(
+ advanced_machine_features=compute.AdvancedMachineFeatures(
+ enable_nested_virtualization=True
+ )
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListInstancesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListInstancesRequest):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.InstanceList.to_json(compute.InstanceList())
+
+ request = compute.ListInstancesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.InstanceList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListInstancesRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListInstancesRequest(),
+ project="project_value",
+ zone="zone_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.InstanceList(
+ items=[
+ compute.Instance(),
+ compute.Instance(),
+ compute.Instance(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.InstanceList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.InstanceList(
+ items=[
+ compute.Instance(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.InstanceList(
+ items=[
+ compute.Instance(),
+ compute.Instance(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.InstanceList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Instance) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListReferrersInstancesRequest,
+ dict,
+ ],
+)
+def test_list_referrers_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceListReferrers(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceListReferrers.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list_referrers(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListReferrersPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_referrers_rest_required_fields(
+ request_type=compute.ListReferrersInstancesRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_referrers._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_referrers._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceListReferrers()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceListReferrers.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list_referrers(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_referrers_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list_referrers._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "instance",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_referrers_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_list_referrers"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_list_referrers"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.InstanceListReferrers.to_json(
+ compute.InstanceListReferrers()
+ )
+
+ request = compute.ListReferrersInstancesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.InstanceListReferrers
+
+ client.list_referrers(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_referrers_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListReferrersInstancesRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list_referrers(request)
+
+
+def test_list_referrers_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceListReferrers()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceListReferrers.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list_referrers(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/referrers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_referrers_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list_referrers(
+ compute.ListReferrersInstancesRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+
+
+def test_list_referrers_rest_pager(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.InstanceListReferrers(
+ items=[
+ compute.Reference(),
+ compute.Reference(),
+ compute.Reference(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.InstanceListReferrers(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.InstanceListReferrers(
+ items=[
+ compute.Reference(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.InstanceListReferrers(
+ items=[
+ compute.Reference(),
+ compute.Reference(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.InstanceListReferrers.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ pager = client.list_referrers(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Reference) for i in results)
+
+ pages = list(client.list_referrers(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.RemoveResourcePoliciesInstanceRequest,
+ dict,
+ ],
+)
+def test_remove_resource_policies_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_remove_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.remove_resource_policies(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_remove_resource_policies_rest_required_fields(
+ request_type=compute.RemoveResourcePoliciesInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.remove_resource_policies(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_remove_resource_policies_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.remove_resource_policies._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "instancesRemoveResourcePoliciesRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_remove_resource_policies_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_remove_resource_policies"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_remove_resource_policies"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.RemoveResourcePoliciesInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.remove_resource_policies(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_remove_resource_policies_rest_bad_request(
+ transport: str = "rest", request_type=compute.RemoveResourcePoliciesInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_remove_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.remove_resource_policies(request)
+
+
+def test_remove_resource_policies_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_remove_resource_policies_request_resource=compute.InstancesRemoveResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.remove_resource_policies(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/removeResourcePolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_remove_resource_policies_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.remove_resource_policies(
+ compute.RemoveResourcePoliciesInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_remove_resource_policies_request_resource=compute.InstancesRemoveResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
+ )
+
+
+def test_remove_resource_policies_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.RemoveResourcePoliciesInstanceRequest,
+ dict,
+ ],
+)
+def test_remove_resource_policies_unary_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_remove_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.remove_resource_policies_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_remove_resource_policies_unary_rest_required_fields(
+ request_type=compute.RemoveResourcePoliciesInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.remove_resource_policies_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_remove_resource_policies_unary_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.remove_resource_policies._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "instancesRemoveResourcePoliciesRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_remove_resource_policies"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_remove_resource_policies"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.RemoveResourcePoliciesInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.remove_resource_policies_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_remove_resource_policies_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.RemoveResourcePoliciesInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_remove_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.remove_resource_policies_unary(request)
+
+
+def test_remove_resource_policies_unary_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_remove_resource_policies_request_resource=compute.InstancesRemoveResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.remove_resource_policies_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/removeResourcePolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_remove_resource_policies_unary_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.remove_resource_policies_unary(
+ compute.RemoveResourcePoliciesInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_remove_resource_policies_request_resource=compute.InstancesRemoveResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
+ )
+
+
+def test_remove_resource_policies_unary_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ResetInstanceRequest,
+ dict,
+ ],
+)
+def test_reset_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.reset(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_reset_rest_required_fields(request_type=compute.ResetInstanceRequest):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).reset._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).reset._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.reset(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_reset_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.reset._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_reset_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_reset"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_reset"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.ResetInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.reset(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_reset_rest_bad_request(
+ transport: str = "rest", request_type=compute.ResetInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.reset(request)
+
+
+def test_reset_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.reset(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/reset"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_reset_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.reset(
+ compute.ResetInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+
+
+def test_reset_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ResetInstanceRequest,
+ dict,
+ ],
+)
+def test_reset_unary_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.reset_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_reset_unary_rest_required_fields(request_type=compute.ResetInstanceRequest):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).reset._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).reset._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.reset_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_reset_unary_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.reset._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_reset_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_reset"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_reset"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.ResetInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.reset_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_reset_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.ResetInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.reset_unary(request)
+
+
+def test_reset_unary_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.reset_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/reset"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_reset_unary_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.reset_unary(
+ compute.ResetInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+
+
+def test_reset_unary_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ResumeInstanceRequest,
+ dict,
+ ],
+)
+def test_resume_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.resume(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_resume_rest_required_fields(request_type=compute.ResumeInstanceRequest):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resume._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resume._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.resume(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_resume_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.resume._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_resume_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_resume"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_resume"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.ResumeInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.resume(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_resume_rest_bad_request(
+ transport: str = "rest", request_type=compute.ResumeInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.resume(request)
+
+
+def test_resume_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.resume(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/resume"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_resume_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.resume(
+ compute.ResumeInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+
+
+def test_resume_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ResumeInstanceRequest,
+ dict,
+ ],
+)
+def test_resume_unary_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.resume_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_resume_unary_rest_required_fields(request_type=compute.ResumeInstanceRequest):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resume._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resume._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.resume_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_resume_unary_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.resume._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_resume_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_resume"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_resume"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.ResumeInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.resume_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_resume_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.ResumeInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.resume_unary(request)
+
+
+def test_resume_unary_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.resume_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/resume"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_resume_unary_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.resume_unary(
+ compute.ResumeInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+
+
+def test_resume_unary_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SendDiagnosticInterruptInstanceRequest,
+ dict,
+ ],
+)
+def test_send_diagnostic_interrupt_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SendDiagnosticInterruptInstanceResponse()
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SendDiagnosticInterruptInstanceResponse.to_json(
+ return_value
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.send_diagnostic_interrupt(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.SendDiagnosticInterruptInstanceResponse)
+
+
+def test_send_diagnostic_interrupt_rest_required_fields(
+ request_type=compute.SendDiagnosticInterruptInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).send_diagnostic_interrupt._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).send_diagnostic_interrupt._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SendDiagnosticInterruptInstanceResponse()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SendDiagnosticInterruptInstanceResponse.to_json(
+ return_value
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.send_diagnostic_interrupt(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_send_diagnostic_interrupt_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.send_diagnostic_interrupt._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "instance",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_send_diagnostic_interrupt_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_send_diagnostic_interrupt"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_send_diagnostic_interrupt"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = (
+ compute.SendDiagnosticInterruptInstanceResponse.to_json(
+ compute.SendDiagnosticInterruptInstanceResponse()
+ )
+ )
+
+ request = compute.SendDiagnosticInterruptInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.SendDiagnosticInterruptInstanceResponse
+
+ client.send_diagnostic_interrupt(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_send_diagnostic_interrupt_rest_bad_request(
+ transport: str = "rest", request_type=compute.SendDiagnosticInterruptInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.send_diagnostic_interrupt(request)
+
+
+def test_send_diagnostic_interrupt_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SendDiagnosticInterruptInstanceResponse()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SendDiagnosticInterruptInstanceResponse.to_json(
+ return_value
+ )
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.send_diagnostic_interrupt(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/sendDiagnosticInterrupt"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_send_diagnostic_interrupt_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.send_diagnostic_interrupt(
+ compute.SendDiagnosticInterruptInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ )
+
+
+def test_send_diagnostic_interrupt_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetDeletionProtectionInstanceRequest,
+ dict,
+ ],
+)
+def test_set_deletion_protection_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_deletion_protection(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_set_deletion_protection_rest_required_fields(
+ request_type=compute.SetDeletionProtectionInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["resource"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_deletion_protection._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_deletion_protection._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "deletion_protection",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_deletion_protection(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_deletion_protection_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_deletion_protection._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "deletionProtection",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "project",
+ "resource",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_deletion_protection_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_set_deletion_protection"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_set_deletion_protection"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetDeletionProtectionInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_deletion_protection(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_deletion_protection_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetDeletionProtectionInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_deletion_protection(request)
+
+
+def test_set_deletion_protection_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "resource": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ resource="resource_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_deletion_protection(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/setDeletionProtection"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_deletion_protection_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_deletion_protection(
+ compute.SetDeletionProtectionInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ resource="resource_value",
+ )
+
+
+def test_set_deletion_protection_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetDeletionProtectionInstanceRequest,
+ dict,
+ ],
+)
+def test_set_deletion_protection_unary_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_deletion_protection_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_set_deletion_protection_unary_rest_required_fields(
+ request_type=compute.SetDeletionProtectionInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["resource"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_deletion_protection._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_deletion_protection._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "deletion_protection",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_deletion_protection_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_deletion_protection_unary_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_deletion_protection._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "deletionProtection",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "project",
+ "resource",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_deletion_protection_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_set_deletion_protection"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_set_deletion_protection"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetDeletionProtectionInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_deletion_protection_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_deletion_protection_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetDeletionProtectionInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_deletion_protection_unary(request)
+
+
+def test_set_deletion_protection_unary_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "resource": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ resource="resource_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_deletion_protection_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/setDeletionProtection"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_deletion_protection_unary_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_deletion_protection_unary(
+ compute.SetDeletionProtectionInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ resource="resource_value",
+ )
+
+
+def test_set_deletion_protection_unary_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetDiskAutoDeleteInstanceRequest,
+ dict,
+ ],
+)
+def test_set_disk_auto_delete_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_disk_auto_delete(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_set_disk_auto_delete_rest_required_fields(
+ request_type=compute.SetDiskAutoDeleteInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["auto_delete"] = False
+ request_init["device_name"] = ""
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+ assert "autoDelete" not in jsonified_request
+ assert "deviceName" not in jsonified_request
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_disk_auto_delete._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+ assert "autoDelete" in jsonified_request
+ assert jsonified_request["autoDelete"] == request_init["auto_delete"]
+ assert "deviceName" in jsonified_request
+ assert jsonified_request["deviceName"] == request_init["device_name"]
+
+ jsonified_request["autoDelete"] = True
+ jsonified_request["deviceName"] = "device_name_value"
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_disk_auto_delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "auto_delete",
+ "device_name",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "autoDelete" in jsonified_request
+ assert jsonified_request["autoDelete"] == True
+ assert "deviceName" in jsonified_request
+ assert jsonified_request["deviceName"] == "device_name_value"
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_disk_auto_delete(request)
+
+ expected_params = [
+ (
+ "autoDelete",
+ False,
+ ),
+ (
+ "deviceName",
+ "",
+ ),
+ ]
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_disk_auto_delete_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_disk_auto_delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "autoDelete",
+ "deviceName",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "autoDelete",
+ "deviceName",
+ "instance",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_disk_auto_delete_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_set_disk_auto_delete"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_set_disk_auto_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetDiskAutoDeleteInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_disk_auto_delete(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_disk_auto_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetDiskAutoDeleteInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_disk_auto_delete(request)
+
+
+def test_set_disk_auto_delete_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ auto_delete=True,
+ device_name="device_name_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_disk_auto_delete(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setDiskAutoDelete"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_disk_auto_delete_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_disk_auto_delete(
+ compute.SetDiskAutoDeleteInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ auto_delete=True,
+ device_name="device_name_value",
+ )
+
+
+def test_set_disk_auto_delete_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetDiskAutoDeleteInstanceRequest,
+ dict,
+ ],
+)
+def test_set_disk_auto_delete_unary_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_disk_auto_delete_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_set_disk_auto_delete_unary_rest_required_fields(
+ request_type=compute.SetDiskAutoDeleteInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["auto_delete"] = False
+ request_init["device_name"] = ""
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+ assert "autoDelete" not in jsonified_request
+ assert "deviceName" not in jsonified_request
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_disk_auto_delete._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+ assert "autoDelete" in jsonified_request
+ assert jsonified_request["autoDelete"] == request_init["auto_delete"]
+ assert "deviceName" in jsonified_request
+ assert jsonified_request["deviceName"] == request_init["device_name"]
+
+ jsonified_request["autoDelete"] = True
+ jsonified_request["deviceName"] = "device_name_value"
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_disk_auto_delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "auto_delete",
+ "device_name",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "autoDelete" in jsonified_request
+ assert jsonified_request["autoDelete"] == True
+ assert "deviceName" in jsonified_request
+ assert jsonified_request["deviceName"] == "device_name_value"
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_disk_auto_delete_unary(request)
+
+ expected_params = [
+ (
+ "autoDelete",
+ False,
+ ),
+ (
+ "deviceName",
+ "",
+ ),
+ ]
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_disk_auto_delete_unary_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_disk_auto_delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "autoDelete",
+ "deviceName",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "autoDelete",
+ "deviceName",
+ "instance",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_disk_auto_delete_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_set_disk_auto_delete"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_set_disk_auto_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetDiskAutoDeleteInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_disk_auto_delete_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_disk_auto_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetDiskAutoDeleteInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_disk_auto_delete_unary(request)
+
+
+def test_set_disk_auto_delete_unary_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ auto_delete=True,
+ device_name="device_name_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_disk_auto_delete_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setDiskAutoDelete"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_disk_auto_delete_unary_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_disk_auto_delete_unary(
+ compute.SetDiskAutoDeleteInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ auto_delete=True,
+ device_name="device_name_value",
+ )
+
+
+def test_set_disk_auto_delete_unary_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetIamPolicyInstanceRequest,
+ dict,
+ ],
+)
+def test_set_iam_policy_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init["zone_set_policy_request_resource"] = {
+ "bindings": [
+ {
+ "binding_id": "binding_id_value",
+ "condition": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "members": ["members_value_1", "members_value_2"],
+ "role": "role_value",
+ }
+ ],
+ "etag": "etag_value",
+ "policy": {
+ "audit_configs": [
+ {
+ "audit_log_configs": [
+ {
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "ignore_child_exemptions": True,
+ "log_type": "log_type_value",
+ }
+ ],
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "service": "service_value",
+ }
+ ],
+ "bindings": {},
+ "etag": "etag_value",
+ "iam_owned": True,
+ "rules": [
+ {
+ "action": "action_value",
+ "conditions": [
+ {
+ "iam": "iam_value",
+ "op": "op_value",
+ "svc": "svc_value",
+ "sys": "sys_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "ins": ["ins_value_1", "ins_value_2"],
+ "log_configs": [
+ {
+ "cloud_audit": {
+ "authorization_logging_options": {
+ "permission_type": "permission_type_value"
+ },
+ "log_name": "log_name_value",
+ },
+ "counter": {
+ "custom_fields": [
+ {"name": "name_value", "value": "value_value"}
+ ],
+ "field": "field_value",
+ "metric": "metric_value",
+ },
+ "data_access": {"log_mode": "log_mode_value"},
+ }
+ ],
+ "not_ins": ["not_ins_value_1", "not_ins_value_2"],
+ "permissions": ["permissions_value_1", "permissions_value_2"],
+ }
+ ],
+ "version": 774,
+ },
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_set_iam_policy_rest_required_fields(
+ request_type=compute.SetIamPolicyInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["resource"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_iam_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_iam_policy_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "project",
+ "resource",
+ "zone",
+ "zoneSetPolicyRequestResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_iam_policy_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_set_iam_policy"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_set_iam_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
+
+ request = compute.SetIamPolicyInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Policy
+
+ client.set_iam_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetIamPolicyInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init["zone_set_policy_request_resource"] = {
+ "bindings": [
+ {
+ "binding_id": "binding_id_value",
+ "condition": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "members": ["members_value_1", "members_value_2"],
+ "role": "role_value",
+ }
+ ],
+ "etag": "etag_value",
+ "policy": {
+ "audit_configs": [
+ {
+ "audit_log_configs": [
+ {
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "ignore_child_exemptions": True,
+ "log_type": "log_type_value",
+ }
+ ],
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "service": "service_value",
+ }
+ ],
+ "bindings": {},
+ "etag": "etag_value",
+ "iam_owned": True,
+ "rules": [
+ {
+ "action": "action_value",
+ "conditions": [
+ {
+ "iam": "iam_value",
+ "op": "op_value",
+ "svc": "svc_value",
+ "sys": "sys_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "ins": ["ins_value_1", "ins_value_2"],
+ "log_configs": [
+ {
+ "cloud_audit": {
+ "authorization_logging_options": {
+ "permission_type": "permission_type_value"
+ },
+ "log_name": "log_name_value",
+ },
+ "counter": {
+ "custom_fields": [
+ {"name": "name_value", "value": "value_value"}
+ ],
+ "field": "field_value",
+ "metric": "metric_value",
+ },
+ "data_access": {"log_mode": "log_mode_value"},
+ }
+ ],
+ "not_ins": ["not_ins_value_1", "not_ins_value_2"],
+ "permissions": ["permissions_value_1", "permissions_value_2"],
+ }
+ ],
+ "version": 774,
+ },
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_iam_policy(request)
+
+
+def test_set_iam_policy_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "resource": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ resource="resource_value",
+ zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_iam_policy(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/setIamPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_iam_policy(
+ compute.SetIamPolicyInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ resource="resource_value",
+ zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
+ ),
+ )
+
+
+def test_set_iam_policy_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetLabelsInstanceRequest,
+ dict,
+ ],
+)
+def test_set_labels_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_labels(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_set_labels_rest_required_fields(request_type=compute.SetLabelsInstanceRequest):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_labels._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_labels._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_labels(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_labels_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_labels._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "instancesSetLabelsRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_labels_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_set_labels"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_set_labels"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetLabelsInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_labels(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_labels_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetLabelsInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_labels(request)
+
+
+def test_set_labels_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_set_labels_request_resource=compute.InstancesSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_labels(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setLabels"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_labels_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_labels(
+ compute.SetLabelsInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_set_labels_request_resource=compute.InstancesSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
+ ),
+ )
+
+
+def test_set_labels_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetLabelsInstanceRequest,
+ dict,
+ ],
+)
+def test_set_labels_unary_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_labels_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_set_labels_unary_rest_required_fields(
+ request_type=compute.SetLabelsInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_labels._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_labels._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_labels_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_labels_unary_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_labels._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "instancesSetLabelsRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_labels_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_set_labels"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_set_labels"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetLabelsInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_labels_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_labels_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetLabelsInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_labels_unary(request)
+
+
+def test_set_labels_unary_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_set_labels_request_resource=compute.InstancesSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_labels_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setLabels"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_labels_unary_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_labels_unary(
+ compute.SetLabelsInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_set_labels_request_resource=compute.InstancesSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
+ ),
+ )
+
+
+def test_set_labels_unary_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetMachineResourcesInstanceRequest,
+ dict,
+ ],
+)
+def test_set_machine_resources_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_machine_resources_request_resource"] = {
+ "guest_accelerators": [
+ {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_machine_resources(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_set_machine_resources_rest_required_fields(
+ request_type=compute.SetMachineResourcesInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_machine_resources._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_machine_resources._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_machine_resources(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_machine_resources_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_machine_resources._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "instancesSetMachineResourcesRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_machine_resources_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_set_machine_resources"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_set_machine_resources"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetMachineResourcesInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_machine_resources(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_machine_resources_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetMachineResourcesInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_machine_resources_request_resource"] = {
+ "guest_accelerators": [
+ {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_machine_resources(request)
+
+
+def test_set_machine_resources_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_set_machine_resources_request_resource=compute.InstancesSetMachineResourcesRequest(
+ guest_accelerators=[compute.AcceleratorConfig(accelerator_count=1805)]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_machine_resources(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMachineResources"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_machine_resources_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_machine_resources(
+ compute.SetMachineResourcesInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_set_machine_resources_request_resource=compute.InstancesSetMachineResourcesRequest(
+ guest_accelerators=[compute.AcceleratorConfig(accelerator_count=1805)]
+ ),
+ )
+
+
+def test_set_machine_resources_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetMachineResourcesInstanceRequest,
+ dict,
+ ],
+)
+def test_set_machine_resources_unary_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_machine_resources_request_resource"] = {
+ "guest_accelerators": [
+ {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_machine_resources_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_set_machine_resources_unary_rest_required_fields(
+ request_type=compute.SetMachineResourcesInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_machine_resources._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_machine_resources._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_machine_resources_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_machine_resources_unary_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_machine_resources._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "instancesSetMachineResourcesRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_machine_resources_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_set_machine_resources"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_set_machine_resources"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetMachineResourcesInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_machine_resources_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_machine_resources_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetMachineResourcesInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_machine_resources_request_resource"] = {
+ "guest_accelerators": [
+ {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_machine_resources_unary(request)
+
+
+def test_set_machine_resources_unary_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_set_machine_resources_request_resource=compute.InstancesSetMachineResourcesRequest(
+ guest_accelerators=[compute.AcceleratorConfig(accelerator_count=1805)]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_machine_resources_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMachineResources"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_machine_resources_unary_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_machine_resources_unary(
+ compute.SetMachineResourcesInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_set_machine_resources_request_resource=compute.InstancesSetMachineResourcesRequest(
+ guest_accelerators=[compute.AcceleratorConfig(accelerator_count=1805)]
+ ),
+ )
+
+
+def test_set_machine_resources_unary_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetMachineTypeInstanceRequest,
+ dict,
+ ],
+)
+def test_set_machine_type_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_machine_type_request_resource"] = {
+ "machine_type": "machine_type_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_machine_type(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_set_machine_type_rest_required_fields(
+ request_type=compute.SetMachineTypeInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_machine_type._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_machine_type._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_machine_type(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_machine_type_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_machine_type._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "instancesSetMachineTypeRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_machine_type_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_set_machine_type"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_set_machine_type"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetMachineTypeInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_machine_type(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_machine_type_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetMachineTypeInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_machine_type_request_resource"] = {
+ "machine_type": "machine_type_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_machine_type(request)
+
+
+def test_set_machine_type_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_set_machine_type_request_resource=compute.InstancesSetMachineTypeRequest(
+ machine_type="machine_type_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_machine_type(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMachineType"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_machine_type_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_machine_type(
+ compute.SetMachineTypeInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_set_machine_type_request_resource=compute.InstancesSetMachineTypeRequest(
+ machine_type="machine_type_value"
+ ),
+ )
+
+
+def test_set_machine_type_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetMachineTypeInstanceRequest,
+ dict,
+ ],
+)
+def test_set_machine_type_unary_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_machine_type_request_resource"] = {
+ "machine_type": "machine_type_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_machine_type_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_set_machine_type_unary_rest_required_fields(
+ request_type=compute.SetMachineTypeInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_machine_type._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_machine_type._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_machine_type_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_machine_type_unary_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_machine_type._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "instancesSetMachineTypeRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_machine_type_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_set_machine_type"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_set_machine_type"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetMachineTypeInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_machine_type_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_machine_type_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetMachineTypeInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_machine_type_request_resource"] = {
+ "machine_type": "machine_type_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_machine_type_unary(request)
+
+
+def test_set_machine_type_unary_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_set_machine_type_request_resource=compute.InstancesSetMachineTypeRequest(
+ machine_type="machine_type_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_machine_type_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMachineType"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_machine_type_unary_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_machine_type_unary(
+ compute.SetMachineTypeInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_set_machine_type_request_resource=compute.InstancesSetMachineTypeRequest(
+ machine_type="machine_type_value"
+ ),
+ )
+
+
+def test_set_machine_type_unary_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetMetadataInstanceRequest,
+ dict,
+ ],
+)
+def test_set_metadata_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["metadata_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_metadata(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_set_metadata_rest_required_fields(
+ request_type=compute.SetMetadataInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_metadata._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_metadata._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_metadata(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_metadata_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_metadata._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "metadataResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_metadata_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_set_metadata"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_set_metadata"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetMetadataInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_metadata(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_metadata_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetMetadataInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["metadata_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_metadata(request)
+
+
+def test_set_metadata_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ metadata_resource=compute.Metadata(fingerprint="fingerprint_value"),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_metadata(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMetadata"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_metadata_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_metadata(
+ compute.SetMetadataInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ metadata_resource=compute.Metadata(fingerprint="fingerprint_value"),
+ )
+
+
+def test_set_metadata_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetMetadataInstanceRequest,
+ dict,
+ ],
+)
+def test_set_metadata_unary_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["metadata_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_metadata_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_set_metadata_unary_rest_required_fields(
+ request_type=compute.SetMetadataInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_metadata._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_metadata._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_metadata_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_metadata_unary_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_metadata._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "metadataResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_metadata_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_set_metadata"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_set_metadata"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetMetadataInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_metadata_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_metadata_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetMetadataInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["metadata_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_metadata_unary(request)
+
+
+def test_set_metadata_unary_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ metadata_resource=compute.Metadata(fingerprint="fingerprint_value"),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_metadata_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMetadata"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_metadata_unary_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_metadata_unary(
+ compute.SetMetadataInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ metadata_resource=compute.Metadata(fingerprint="fingerprint_value"),
+ )
+
+
+def test_set_metadata_unary_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetMinCpuPlatformInstanceRequest,
+ dict,
+ ],
+)
+def test_set_min_cpu_platform_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_min_cpu_platform_request_resource"] = {
+ "min_cpu_platform": "min_cpu_platform_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_min_cpu_platform(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_set_min_cpu_platform_rest_required_fields(
+ request_type=compute.SetMinCpuPlatformInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_min_cpu_platform._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_min_cpu_platform._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_min_cpu_platform(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_min_cpu_platform_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_min_cpu_platform._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "instancesSetMinCpuPlatformRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_min_cpu_platform_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_set_min_cpu_platform"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_set_min_cpu_platform"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetMinCpuPlatformInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_min_cpu_platform(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_min_cpu_platform_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetMinCpuPlatformInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_min_cpu_platform_request_resource"] = {
+ "min_cpu_platform": "min_cpu_platform_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_min_cpu_platform(request)
+
+
+def test_set_min_cpu_platform_rest_flattened():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_set_min_cpu_platform_request_resource=compute.InstancesSetMinCpuPlatformRequest(
+ min_cpu_platform="min_cpu_platform_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_min_cpu_platform(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMinCpuPlatform"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_min_cpu_platform_rest_flattened_error(transport: str = "rest"):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_min_cpu_platform(
+ compute.SetMinCpuPlatformInstanceRequest(),
+ project="project_value",
+ zone="zone_value",
+ instance="instance_value",
+ instances_set_min_cpu_platform_request_resource=compute.InstancesSetMinCpuPlatformRequest(
+ min_cpu_platform="min_cpu_platform_value"
+ ),
+ )
+
+
+def test_set_min_cpu_platform_rest_error():
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetMinCpuPlatformInstanceRequest,
+ dict,
+ ],
+)
+def test_set_min_cpu_platform_unary_rest(request_type):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_min_cpu_platform_request_resource"] = {
+ "min_cpu_platform": "min_cpu_platform_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_min_cpu_platform_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_set_min_cpu_platform_unary_rest_required_fields(
+ request_type=compute.SetMinCpuPlatformInstanceRequest,
+):
+ transport_class = transports.InstancesRestTransport
+
+ request_init = {}
+ request_init["instance"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_min_cpu_platform._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instance"] = "instance_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_min_cpu_platform._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
}
- ],
- "network_performance_config": {
- "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
- },
- "params": {"resource_manager_tags": {}},
- "private_ipv6_google_access": "private_ipv6_google_access_value",
- "reservation_affinity": {
- "consume_reservation_type": "consume_reservation_type_value",
- "key": "key_value",
- "values": ["values_value_1", "values_value_2"],
- },
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
- "satisfies_pzs": True,
- "scheduling": {
- "automatic_restart": True,
- "instance_termination_action": "instance_termination_action_value",
- "location_hint": "location_hint_value",
- "min_node_cpus": 1379,
- "node_affinities": [
- {
- "key": "key_value",
- "operator": "operator_value",
- "values": ["values_value_1", "values_value_2"],
- }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_min_cpu_platform_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_min_cpu_platform_unary_rest_unset_required_fields():
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_min_cpu_platform._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instance",
+ "instancesSetMinCpuPlatformRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_min_cpu_platform_unary_rest_interceptors(null_interceptor):
+ transport = transports.InstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
+ )
+ client = InstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InstancesRestInterceptor, "post_set_min_cpu_platform"
+ ) as post, mock.patch.object(
+ transports.InstancesRestInterceptor, "pre_set_min_cpu_platform"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetMinCpuPlatformInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_min_cpu_platform_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
],
- "on_host_maintenance": "on_host_maintenance_value",
- "preemptible": True,
- "provisioning_model": "provisioning_model_value",
- },
- "self_link": "self_link_value",
- "service_accounts": [
- {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
- ],
- "shielded_instance_config": {
- "enable_integrity_monitoring": True,
- "enable_secure_boot": True,
- "enable_vtpm": True,
- },
- "shielded_instance_integrity_policy": {"update_auto_learn_policy": True},
- "source_machine_image": "source_machine_image_value",
- "source_machine_image_encryption_key": {},
- "start_restricted": True,
- "status": "status_value",
- "status_message": "status_message_value",
- "tags": {
- "fingerprint": "fingerprint_value",
- "items": ["items_value_1", "items_value_2"],
- },
- "zone": "zone_value",
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_min_cpu_platform_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetMinCpuPlatformInstanceRequest
+):
+ client = InstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_min_cpu_platform_request_resource"] = {
+ "min_cpu_platform": "min_cpu_platform_value"
}
request = request_type(request_init)
@@ -6324,10 +17549,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.set_min_cpu_platform_unary(request)
-def test_insert_unary_rest_flattened():
+def test_set_min_cpu_platform_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6339,16 +17564,19 @@ def test_insert_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "zone": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- instance_resource=compute.Instance(
- advanced_machine_features=compute.AdvancedMachineFeatures(
- enable_nested_virtualization=True
- )
+ instance="instance_value",
+ instances_set_min_cpu_platform_request_resource=compute.InstancesSetMinCpuPlatformRequest(
+ min_cpu_platform="min_cpu_platform_value"
),
)
mock_args.update(sample_request)
@@ -6361,20 +17589,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.set_min_cpu_platform_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMinCpuPlatform"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_min_cpu_platform_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -6383,19 +17611,18 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertInstanceRequest(),
+ client.set_min_cpu_platform_unary(
+ compute.SetMinCpuPlatformInstanceRequest(),
project="project_value",
zone="zone_value",
- instance_resource=compute.Instance(
- advanced_machine_features=compute.AdvancedMachineFeatures(
- enable_nested_virtualization=True
- )
+ instance="instance_value",
+ instances_set_min_cpu_platform_request_resource=compute.InstancesSetMinCpuPlatformRequest(
+ min_cpu_platform="min_cpu_platform_value"
),
)
-def test_insert_unary_rest_error():
+def test_set_min_cpu_platform_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -6404,50 +17631,105 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListInstancesRequest,
+ compute.SetSchedulingInstanceRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_set_scheduling_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["scheduling_resource"] = {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.set_scheduling(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(request_type=compute.ListInstancesRequest):
+def test_set_scheduling_rest_required_fields(
+ request_type=compute.SetSchedulingInstanceRequest,
+):
transport_class = transports.InstancesRestTransport
request_init = {}
+ request_init["instance"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -6461,30 +17743,25 @@ def test_list_rest_required_fields(request_type=compute.ListInstancesRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).set_scheduling._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["instance"] = "instance_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).set_scheduling._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -6497,7 +17774,7 @@ def test_list_rest_required_fields(request_type=compute.ListInstancesRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -6508,43 +17785,38 @@ def test_list_rest_required_fields(request_type=compute.ListInstancesRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.set_scheduling(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_set_scheduling_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.set_scheduling._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
+ "instance",
"project",
+ "schedulingResource",
"zone",
)
)
@@ -6552,7 +17824,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_set_scheduling_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -6563,9 +17835,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_list"
+ transports.InstancesRestInterceptor, "post_set_scheduling"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_list"
+ transports.InstancesRestInterceptor, "pre_set_scheduling"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -6580,17 +17852,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InstanceList.to_json(compute.InstanceList())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListInstancesRequest()
+ request = compute.SetSchedulingInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstanceList
+ post.return_value = compute.Operation
- client.list(
+ client.set_scheduling(
request,
metadata=[
("key", "val"),
@@ -6602,8 +17874,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListInstancesRequest
+def test_set_scheduling_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetSchedulingInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -6611,7 +17883,23 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["scheduling_resource"] = {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -6623,10 +17911,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.set_scheduling(request)
-def test_list_rest_flattened():
+def test_set_scheduling_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6635,40 +17923,46 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "zone": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "instance": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
+ instance="instance_value",
+ scheduling_resource=compute.Scheduling(automatic_restart=True),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.set_scheduling(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setScheduling"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_set_scheduling_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -6677,82 +17971,29 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListInstancesRequest(),
+ client.set_scheduling(
+ compute.SetSchedulingInstanceRequest(),
project="project_value",
zone="zone_value",
+ instance="instance_value",
+ scheduling_resource=compute.Scheduling(automatic_restart=True),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_set_scheduling_rest_error():
client = InstancesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.InstanceList(
- items=[
- compute.Instance(),
- compute.Instance(),
- compute.Instance(),
- ],
- next_page_token="abc",
- ),
- compute.InstanceList(
- items=[],
- next_page_token="def",
- ),
- compute.InstanceList(
- items=[
- compute.Instance(),
- ],
- next_page_token="ghi",
- ),
- compute.InstanceList(
- items=[
- compute.Instance(),
- compute.Instance(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.InstanceList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "zone": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Instance) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.ListReferrersInstancesRequest,
+ compute.SetSchedulingInstanceRequest,
dict,
],
)
-def test_list_referrers_rest(request_type):
+def test_set_scheduling_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6760,36 +18001,66 @@ def test_list_referrers_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["scheduling_resource"] = {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceListReferrers(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceListReferrers.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_referrers(request)
+ response = client.set_scheduling_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListReferrersPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_list_referrers_rest_required_fields(
- request_type=compute.ListReferrersInstancesRequest,
+def test_set_scheduling_unary_rest_required_fields(
+ request_type=compute.SetSchedulingInstanceRequest,
):
transport_class = transports.InstancesRestTransport
@@ -6808,7 +18079,7 @@ def test_list_referrers_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_referrers._get_unset_required_fields(jsonified_request)
+ ).set_scheduling._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -6819,17 +18090,9 @@ def test_list_referrers_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_referrers._get_unset_required_fields(jsonified_request)
+ ).set_scheduling._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -6847,7 +18110,7 @@ def test_list_referrers_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceListReferrers()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -6858,44 +18121,38 @@ def test_list_referrers_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceListReferrers.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_referrers(request)
+ response = client.set_scheduling_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_referrers_rest_unset_required_fields():
+def test_set_scheduling_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
- )
-
- unset_fields = transport.list_referrers._get_unset_required_fields({})
- assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ )
+
+ unset_fields = transport.set_scheduling._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
& set(
(
"instance",
"project",
+ "schedulingResource",
"zone",
)
)
@@ -6903,7 +18160,7 @@ def test_list_referrers_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_referrers_rest_interceptors(null_interceptor):
+def test_set_scheduling_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -6914,9 +18171,9 @@ def test_list_referrers_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_list_referrers"
+ transports.InstancesRestInterceptor, "post_set_scheduling"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_list_referrers"
+ transports.InstancesRestInterceptor, "pre_set_scheduling"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -6931,19 +18188,17 @@ def test_list_referrers_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InstanceListReferrers.to_json(
- compute.InstanceListReferrers()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListReferrersInstancesRequest()
+ request = compute.SetSchedulingInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstanceListReferrers
+ post.return_value = compute.Operation
- client.list_referrers(
+ client.set_scheduling_unary(
request,
metadata=[
("key", "val"),
@@ -6955,8 +18210,8 @@ def test_list_referrers_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_referrers_rest_bad_request(
- transport: str = "rest", request_type=compute.ListReferrersInstancesRequest
+def test_set_scheduling_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetSchedulingInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -6965,6 +18220,22 @@ def test_list_referrers_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["scheduling_resource"] = {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -6976,10 +18247,10 @@ def test_list_referrers_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list_referrers(request)
+ client.set_scheduling_unary(request)
-def test_list_referrers_rest_flattened():
+def test_set_scheduling_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6988,7 +18259,7 @@ def test_list_referrers_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceListReferrers()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -7002,31 +18273,32 @@ def test_list_referrers_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
+ scheduling_resource=compute.Scheduling(automatic_restart=True),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceListReferrers.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list_referrers(**mock_args)
+ client.set_scheduling_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/referrers"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setScheduling"
% client.transport._host,
args[1],
)
-def test_list_referrers_rest_flattened_error(transport: str = "rest"):
+def test_set_scheduling_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -7035,87 +18307,29 @@ def test_list_referrers_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list_referrers(
- compute.ListReferrersInstancesRequest(),
+ client.set_scheduling_unary(
+ compute.SetSchedulingInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
+ scheduling_resource=compute.Scheduling(automatic_restart=True),
)
-def test_list_referrers_rest_pager(transport: str = "rest"):
+def test_set_scheduling_unary_rest_error():
client = InstancesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.InstanceListReferrers(
- items=[
- compute.Reference(),
- compute.Reference(),
- compute.Reference(),
- ],
- next_page_token="abc",
- ),
- compute.InstanceListReferrers(
- items=[],
- next_page_token="def",
- ),
- compute.InstanceListReferrers(
- items=[
- compute.Reference(),
- ],
- next_page_token="ghi",
- ),
- compute.InstanceListReferrers(
- items=[
- compute.Reference(),
- compute.Reference(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.InstanceListReferrers.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {
- "project": "sample1",
- "zone": "sample2",
- "instance": "sample3",
- }
-
- pager = client.list_referrers(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Reference) for i in results)
-
- pages = list(client.list_referrers(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.RemoveResourcePoliciesInstanceRequest,
+ compute.SetServiceAccountInstanceRequest,
dict,
],
)
-def test_remove_resource_policies_unary_rest(request_type):
+def test_set_service_account_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -7123,8 +18337,9 @@ def test_remove_resource_policies_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_remove_resource_policies_request_resource"] = {
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ request_init["instances_set_service_account_request_resource"] = {
+ "email": "email_value",
+ "scopes": ["scopes_value_1", "scopes_value_2"],
}
request = request_type(request_init)
@@ -7162,10 +18377,10 @@ def test_remove_resource_policies_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_resource_policies_unary(request)
+ response = client.set_service_account(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -7190,8 +18405,8 @@ def test_remove_resource_policies_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_remove_resource_policies_unary_rest_required_fields(
- request_type=compute.RemoveResourcePoliciesInstanceRequest,
+def test_set_service_account_rest_required_fields(
+ request_type=compute.SetServiceAccountInstanceRequest,
):
transport_class = transports.InstancesRestTransport
@@ -7210,7 +18425,7 @@ def test_remove_resource_policies_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ ).set_service_account._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -7221,7 +18436,7 @@ def test_remove_resource_policies_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ ).set_service_account._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -7264,25 +18479,25 @@ def test_remove_resource_policies_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_resource_policies_unary(request)
+ response = client.set_service_account(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_remove_resource_policies_unary_rest_unset_required_fields():
+def test_set_service_account_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.remove_resource_policies._get_unset_required_fields({})
+ unset_fields = transport.set_service_account._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instance",
- "instancesRemoveResourcePoliciesRequestResource",
+ "instancesSetServiceAccountRequestResource",
"project",
"zone",
)
@@ -7291,7 +18506,7 @@ def test_remove_resource_policies_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
+def test_set_service_account_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -7302,9 +18517,9 @@ def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_remove_resource_policies"
+ transports.InstancesRestInterceptor, "post_set_service_account"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_remove_resource_policies"
+ transports.InstancesRestInterceptor, "pre_set_service_account"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -7321,7 +18536,7 @@ def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.RemoveResourcePoliciesInstanceRequest()
+ request = compute.SetServiceAccountInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -7329,7 +18544,7 @@ def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.remove_resource_policies_unary(
+ client.set_service_account(
request,
metadata=[
("key", "val"),
@@ -7341,8 +18556,8 @@ def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_remove_resource_policies_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.RemoveResourcePoliciesInstanceRequest
+def test_set_service_account_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetServiceAccountInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -7351,8 +18566,9 @@ def test_remove_resource_policies_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_remove_resource_policies_request_resource"] = {
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ request_init["instances_set_service_account_request_resource"] = {
+ "email": "email_value",
+ "scopes": ["scopes_value_1", "scopes_value_2"],
}
request = request_type(request_init)
@@ -7365,10 +18581,10 @@ def test_remove_resource_policies_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.remove_resource_policies_unary(request)
+ client.set_service_account(request)
-def test_remove_resource_policies_unary_rest_flattened():
+def test_set_service_account_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -7391,8 +18607,8 @@ def test_remove_resource_policies_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_remove_resource_policies_request_resource=compute.InstancesRemoveResourcePoliciesRequest(
- resource_policies=["resource_policies_value"]
+ instances_set_service_account_request_resource=compute.InstancesSetServiceAccountRequest(
+ email="email_value"
),
)
mock_args.update(sample_request)
@@ -7405,20 +18621,20 @@ def test_remove_resource_policies_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.remove_resource_policies_unary(**mock_args)
+ client.set_service_account(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/removeResourcePolicies"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setServiceAccount"
% client.transport._host,
args[1],
)
-def test_remove_resource_policies_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_service_account_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -7427,18 +18643,18 @@ def test_remove_resource_policies_unary_rest_flattened_error(transport: str = "r
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.remove_resource_policies_unary(
- compute.RemoveResourcePoliciesInstanceRequest(),
+ client.set_service_account(
+ compute.SetServiceAccountInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_remove_resource_policies_request_resource=compute.InstancesRemoveResourcePoliciesRequest(
- resource_policies=["resource_policies_value"]
+ instances_set_service_account_request_resource=compute.InstancesSetServiceAccountRequest(
+ email="email_value"
),
)
-def test_remove_resource_policies_unary_rest_error():
+def test_set_service_account_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -7447,11 +18663,11 @@ def test_remove_resource_policies_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ResetInstanceRequest,
+ compute.SetServiceAccountInstanceRequest,
dict,
],
)
-def test_reset_unary_rest(request_type):
+def test_set_service_account_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -7459,6 +18675,10 @@ def test_reset_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_service_account_request_resource"] = {
+ "email": "email_value",
+ "scopes": ["scopes_value_1", "scopes_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -7495,35 +18715,15 @@ def test_reset_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.reset_unary(request)
+ response = client.set_service_account_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_reset_unary_rest_required_fields(request_type=compute.ResetInstanceRequest):
+def test_set_service_account_unary_rest_required_fields(
+ request_type=compute.SetServiceAccountInstanceRequest,
+):
transport_class = transports.InstancesRestTransport
request_init = {}
@@ -7541,7 +18741,7 @@ def test_reset_unary_rest_required_fields(request_type=compute.ResetInstanceRequ
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).reset._get_unset_required_fields(jsonified_request)
+ ).set_service_account._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -7552,7 +18752,7 @@ def test_reset_unary_rest_required_fields(request_type=compute.ResetInstanceRequ
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).reset._get_unset_required_fields(jsonified_request)
+ ).set_service_account._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -7586,6 +18786,7 @@ def test_reset_unary_rest_required_fields(request_type=compute.ResetInstanceRequ
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -7594,24 +18795,25 @@ def test_reset_unary_rest_required_fields(request_type=compute.ResetInstanceRequ
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.reset_unary(request)
+ response = client.set_service_account_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_reset_unary_rest_unset_required_fields():
+def test_set_service_account_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.reset._get_unset_required_fields({})
+ unset_fields = transport.set_service_account._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instance",
+ "instancesSetServiceAccountRequestResource",
"project",
"zone",
)
@@ -7620,7 +18822,7 @@ def test_reset_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_reset_unary_rest_interceptors(null_interceptor):
+def test_set_service_account_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -7631,9 +18833,9 @@ def test_reset_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_reset"
+ transports.InstancesRestInterceptor, "post_set_service_account"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_reset"
+ transports.InstancesRestInterceptor, "pre_set_service_account"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -7650,7 +18852,7 @@ def test_reset_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ResetInstanceRequest()
+ request = compute.SetServiceAccountInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -7658,7 +18860,7 @@ def test_reset_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.reset_unary(
+ client.set_service_account_unary(
request,
metadata=[
("key", "val"),
@@ -7670,8 +18872,8 @@ def test_reset_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_reset_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.ResetInstanceRequest
+def test_set_service_account_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetServiceAccountInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -7680,6 +18882,10 @@ def test_reset_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instances_set_service_account_request_resource"] = {
+ "email": "email_value",
+ "scopes": ["scopes_value_1", "scopes_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -7691,10 +18897,10 @@ def test_reset_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.reset_unary(request)
+ client.set_service_account_unary(request)
-def test_reset_unary_rest_flattened():
+def test_set_service_account_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -7717,6 +18923,9 @@ def test_reset_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
+ instances_set_service_account_request_resource=compute.InstancesSetServiceAccountRequest(
+ email="email_value"
+ ),
)
mock_args.update(sample_request)
@@ -7728,20 +18937,20 @@ def test_reset_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.reset_unary(**mock_args)
+ client.set_service_account_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/reset"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setServiceAccount"
% client.transport._host,
args[1],
)
-def test_reset_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_service_account_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -7750,15 +18959,18 @@ def test_reset_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.reset_unary(
- compute.ResetInstanceRequest(),
+ client.set_service_account_unary(
+ compute.SetServiceAccountInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
+ instances_set_service_account_request_resource=compute.InstancesSetServiceAccountRequest(
+ email="email_value"
+ ),
)
-def test_reset_unary_rest_error():
+def test_set_service_account_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -7767,11 +18979,11 @@ def test_reset_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ResumeInstanceRequest,
+ compute.SetShieldedInstanceIntegrityPolicyInstanceRequest,
dict,
],
)
-def test_resume_unary_rest(request_type):
+def test_set_shielded_instance_integrity_policy_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -7779,6 +18991,9 @@ def test_resume_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["shielded_instance_integrity_policy_resource"] = {
+ "update_auto_learn_policy": True
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -7815,10 +19030,10 @@ def test_resume_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.resume_unary(request)
+ response = client.set_shielded_instance_integrity_policy(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -7843,7 +19058,9 @@ def test_resume_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_resume_unary_rest_required_fields(request_type=compute.ResumeInstanceRequest):
+def test_set_shielded_instance_integrity_policy_rest_required_fields(
+ request_type=compute.SetShieldedInstanceIntegrityPolicyInstanceRequest,
+):
transport_class = transports.InstancesRestTransport
request_init = {}
@@ -7861,7 +19078,9 @@ def test_resume_unary_rest_required_fields(request_type=compute.ResumeInstanceRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).resume._get_unset_required_fields(jsonified_request)
+ ).set_shielded_instance_integrity_policy._get_unset_required_fields(
+ jsonified_request
+ )
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -7872,7 +19091,9 @@ def test_resume_unary_rest_required_fields(request_type=compute.ResumeInstanceRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).resume._get_unset_required_fields(jsonified_request)
+ ).set_shielded_instance_integrity_policy._get_unset_required_fields(
+ jsonified_request
+ )
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -7903,9 +19124,10 @@ def test_resume_unary_rest_required_fields(request_type=compute.ResumeInstanceRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -7914,25 +19136,28 @@ def test_resume_unary_rest_required_fields(request_type=compute.ResumeInstanceRe
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.resume_unary(request)
+ response = client.set_shielded_instance_integrity_policy(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_resume_unary_rest_unset_required_fields():
+def test_set_shielded_instance_integrity_policy_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.resume._get_unset_required_fields({})
+ unset_fields = (
+ transport.set_shielded_instance_integrity_policy._get_unset_required_fields({})
+ )
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instance",
"project",
+ "shieldedInstanceIntegrityPolicyResource",
"zone",
)
)
@@ -7940,7 +19165,7 @@ def test_resume_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_resume_unary_rest_interceptors(null_interceptor):
+def test_set_shielded_instance_integrity_policy_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -7951,9 +19176,11 @@ def test_resume_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_resume"
+ transports.InstancesRestInterceptor,
+ "post_set_shielded_instance_integrity_policy",
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_resume"
+ transports.InstancesRestInterceptor,
+ "pre_set_shielded_instance_integrity_policy",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -7970,7 +19197,7 @@ def test_resume_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ResumeInstanceRequest()
+ request = compute.SetShieldedInstanceIntegrityPolicyInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -7978,7 +19205,7 @@ def test_resume_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.resume_unary(
+ client.set_shielded_instance_integrity_policy(
request,
metadata=[
("key", "val"),
@@ -7990,8 +19217,9 @@ def test_resume_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_resume_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.ResumeInstanceRequest
+def test_set_shielded_instance_integrity_policy_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.SetShieldedInstanceIntegrityPolicyInstanceRequest,
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -8000,6 +19228,9 @@ def test_resume_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["shielded_instance_integrity_policy_resource"] = {
+ "update_auto_learn_policy": True
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -8011,10 +19242,10 @@ def test_resume_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.resume_unary(request)
+ client.set_shielded_instance_integrity_policy(request)
-def test_resume_unary_rest_flattened():
+def test_set_shielded_instance_integrity_policy_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -8037,6 +19268,9 @@ def test_resume_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
+ shielded_instance_integrity_policy_resource=compute.ShieldedInstanceIntegrityPolicy(
+ update_auto_learn_policy=True
+ ),
)
mock_args.update(sample_request)
@@ -8048,20 +19282,22 @@ def test_resume_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.resume_unary(**mock_args)
+ client.set_shielded_instance_integrity_policy(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/resume"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setShieldedInstanceIntegrityPolicy"
% client.transport._host,
args[1],
)
-def test_resume_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_shielded_instance_integrity_policy_rest_flattened_error(
+ transport: str = "rest",
+):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -8070,15 +19306,18 @@ def test_resume_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.resume_unary(
- compute.ResumeInstanceRequest(),
+ client.set_shielded_instance_integrity_policy(
+ compute.SetShieldedInstanceIntegrityPolicyInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
+ shielded_instance_integrity_policy_resource=compute.ShieldedInstanceIntegrityPolicy(
+ update_auto_learn_policy=True
+ ),
)
-def test_resume_unary_rest_error():
+def test_set_shielded_instance_integrity_policy_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -8087,11 +19326,11 @@ def test_resume_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SendDiagnosticInterruptInstanceRequest,
+ compute.SetShieldedInstanceIntegrityPolicyInstanceRequest,
dict,
],
)
-def test_send_diagnostic_interrupt_rest(request_type):
+def test_set_shielded_instance_integrity_policy_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -8099,29 +19338,53 @@ def test_send_diagnostic_interrupt_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["shielded_instance_integrity_policy_resource"] = {
+ "update_auto_learn_policy": True
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SendDiagnosticInterruptInstanceResponse()
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SendDiagnosticInterruptInstanceResponse.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.send_diagnostic_interrupt(request)
+ response = client.set_shielded_instance_integrity_policy_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.SendDiagnosticInterruptInstanceResponse)
+ assert isinstance(response, compute.Operation)
-def test_send_diagnostic_interrupt_rest_required_fields(
- request_type=compute.SendDiagnosticInterruptInstanceRequest,
+def test_set_shielded_instance_integrity_policy_unary_rest_required_fields(
+ request_type=compute.SetShieldedInstanceIntegrityPolicyInstanceRequest,
):
transport_class = transports.InstancesRestTransport
@@ -8140,7 +19403,9 @@ def test_send_diagnostic_interrupt_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).send_diagnostic_interrupt._get_unset_required_fields(jsonified_request)
+ ).set_shielded_instance_integrity_policy._get_unset_required_fields(
+ jsonified_request
+ )
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -8151,7 +19416,11 @@ def test_send_diagnostic_interrupt_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).send_diagnostic_interrupt._get_unset_required_fields(jsonified_request)
+ ).set_shielded_instance_integrity_policy._get_unset_required_fields(
+ jsonified_request
+ )
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -8169,7 +19438,7 @@ def test_send_diagnostic_interrupt_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SendDiagnosticInterruptInstanceResponse()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -8180,38 +19449,40 @@ def test_send_diagnostic_interrupt_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SendDiagnosticInterruptInstanceResponse.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.send_diagnostic_interrupt(request)
+ response = client.set_shielded_instance_integrity_policy_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_send_diagnostic_interrupt_rest_unset_required_fields():
+def test_set_shielded_instance_integrity_policy_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.send_diagnostic_interrupt._get_unset_required_fields({})
+ unset_fields = (
+ transport.set_shielded_instance_integrity_policy._get_unset_required_fields({})
+ )
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"instance",
"project",
+ "shieldedInstanceIntegrityPolicyResource",
"zone",
)
)
@@ -8219,7 +19490,9 @@ def test_send_diagnostic_interrupt_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_send_diagnostic_interrupt_rest_interceptors(null_interceptor):
+def test_set_shielded_instance_integrity_policy_unary_rest_interceptors(
+ null_interceptor,
+):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -8230,9 +19503,11 @@ def test_send_diagnostic_interrupt_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_send_diagnostic_interrupt"
+ transports.InstancesRestInterceptor,
+ "post_set_shielded_instance_integrity_policy",
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_send_diagnostic_interrupt"
+ transports.InstancesRestInterceptor,
+ "pre_set_shielded_instance_integrity_policy",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -8247,21 +19522,17 @@ def test_send_diagnostic_interrupt_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = (
- compute.SendDiagnosticInterruptInstanceResponse.to_json(
- compute.SendDiagnosticInterruptInstanceResponse()
- )
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SendDiagnosticInterruptInstanceRequest()
+ request = compute.SetShieldedInstanceIntegrityPolicyInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.SendDiagnosticInterruptInstanceResponse
+ post.return_value = compute.Operation
- client.send_diagnostic_interrupt(
+ client.set_shielded_instance_integrity_policy_unary(
request,
metadata=[
("key", "val"),
@@ -8273,8 +19544,9 @@ def test_send_diagnostic_interrupt_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_send_diagnostic_interrupt_rest_bad_request(
- transport: str = "rest", request_type=compute.SendDiagnosticInterruptInstanceRequest
+def test_set_shielded_instance_integrity_policy_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.SetShieldedInstanceIntegrityPolicyInstanceRequest,
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -8283,6 +19555,9 @@ def test_send_diagnostic_interrupt_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["shielded_instance_integrity_policy_resource"] = {
+ "update_auto_learn_policy": True
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -8294,10 +19569,10 @@ def test_send_diagnostic_interrupt_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.send_diagnostic_interrupt(request)
+ client.set_shielded_instance_integrity_policy_unary(request)
-def test_send_diagnostic_interrupt_rest_flattened():
+def test_set_shielded_instance_integrity_policy_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -8306,7 +19581,7 @@ def test_send_diagnostic_interrupt_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SendDiagnosticInterruptInstanceResponse()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -8320,33 +19595,36 @@ def test_send_diagnostic_interrupt_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
+ shielded_instance_integrity_policy_resource=compute.ShieldedInstanceIntegrityPolicy(
+ update_auto_learn_policy=True
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SendDiagnosticInterruptInstanceResponse.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.send_diagnostic_interrupt(**mock_args)
+ client.set_shielded_instance_integrity_policy_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/sendDiagnosticInterrupt"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setShieldedInstanceIntegrityPolicy"
% client.transport._host,
args[1],
)
-def test_send_diagnostic_interrupt_rest_flattened_error(transport: str = "rest"):
+def test_set_shielded_instance_integrity_policy_unary_rest_flattened_error(
+ transport: str = "rest",
+):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -8355,15 +19633,18 @@ def test_send_diagnostic_interrupt_rest_flattened_error(transport: str = "rest")
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.send_diagnostic_interrupt(
- compute.SendDiagnosticInterruptInstanceRequest(),
+ client.set_shielded_instance_integrity_policy_unary(
+ compute.SetShieldedInstanceIntegrityPolicyInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
+ shielded_instance_integrity_policy_resource=compute.ShieldedInstanceIntegrityPolicy(
+ update_auto_learn_policy=True
+ ),
)
-def test_send_diagnostic_interrupt_rest_error():
+def test_set_shielded_instance_integrity_policy_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -8372,18 +19653,22 @@ def test_send_diagnostic_interrupt_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetDeletionProtectionInstanceRequest,
+ compute.SetTagsInstanceRequest,
dict,
],
)
-def test_set_deletion_protection_unary_rest(request_type):
+def test_set_tags_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["tags_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -8420,10 +19705,10 @@ def test_set_deletion_protection_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_deletion_protection_unary(request)
+ response = client.set_tags(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -8448,14 +19733,12 @@ def test_set_deletion_protection_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_set_deletion_protection_unary_rest_required_fields(
- request_type=compute.SetDeletionProtectionInstanceRequest,
-):
+def test_set_tags_rest_required_fields(request_type=compute.SetTagsInstanceRequest):
transport_class = transports.InstancesRestTransport
request_init = {}
+ request_init["instance"] = ""
request_init["project"] = ""
- request_init["resource"] = ""
request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -8468,32 +19751,27 @@ def test_set_deletion_protection_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_deletion_protection._get_unset_required_fields(jsonified_request)
+ ).set_tags._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["instance"] = "instance_value"
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_deletion_protection._get_unset_required_fields(jsonified_request)
+ ).set_tags._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "deletion_protection",
- "request_id",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
assert "zone" in jsonified_request
assert jsonified_request["zone"] == "zone_value"
@@ -8518,6 +19796,7 @@ def test_set_deletion_protection_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -8526,30 +19805,26 @@ def test_set_deletion_protection_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_deletion_protection_unary(request)
+ response = client.set_tags(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_deletion_protection_unary_rest_unset_required_fields():
+def test_set_tags_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_deletion_protection._get_unset_required_fields({})
+ unset_fields = transport.set_tags._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "deletionProtection",
- "requestId",
- )
- )
+ set(("requestId",))
& set(
(
+ "instance",
"project",
- "resource",
+ "tagsResource",
"zone",
)
)
@@ -8557,7 +19832,7 @@ def test_set_deletion_protection_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_deletion_protection_unary_rest_interceptors(null_interceptor):
+def test_set_tags_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -8568,9 +19843,9 @@ def test_set_deletion_protection_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_set_deletion_protection"
+ transports.InstancesRestInterceptor, "post_set_tags"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_set_deletion_protection"
+ transports.InstancesRestInterceptor, "pre_set_tags"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -8587,7 +19862,7 @@ def test_set_deletion_protection_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetDeletionProtectionInstanceRequest()
+ request = compute.SetTagsInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -8595,7 +19870,7 @@ def test_set_deletion_protection_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_deletion_protection_unary(
+ client.set_tags(
request,
metadata=[
("key", "val"),
@@ -8607,8 +19882,8 @@ def test_set_deletion_protection_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_deletion_protection_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SetDeletionProtectionInstanceRequest
+def test_set_tags_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetTagsInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -8616,7 +19891,11 @@ def test_set_deletion_protection_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["tags_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -8628,10 +19907,10 @@ def test_set_deletion_protection_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_deletion_protection_unary(request)
+ client.set_tags(request)
-def test_set_deletion_protection_unary_rest_flattened():
+def test_set_tags_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -8646,14 +19925,15 @@ def test_set_deletion_protection_unary_rest_flattened():
sample_request = {
"project": "sample1",
"zone": "sample2",
- "resource": "sample3",
+ "instance": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- resource="resource_value",
+ instance="instance_value",
+ tags_resource=compute.Tags(fingerprint="fingerprint_value"),
)
mock_args.update(sample_request)
@@ -8665,20 +19945,20 @@ def test_set_deletion_protection_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_deletion_protection_unary(**mock_args)
+ client.set_tags(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/setDeletionProtection"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setTags"
% client.transport._host,
args[1],
)
-def test_set_deletion_protection_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_tags_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -8687,15 +19967,16 @@ def test_set_deletion_protection_unary_rest_flattened_error(transport: str = "re
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_deletion_protection_unary(
- compute.SetDeletionProtectionInstanceRequest(),
+ client.set_tags(
+ compute.SetTagsInstanceRequest(),
project="project_value",
zone="zone_value",
- resource="resource_value",
+ instance="instance_value",
+ tags_resource=compute.Tags(fingerprint="fingerprint_value"),
)
-def test_set_deletion_protection_unary_rest_error():
+def test_set_tags_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -8704,11 +19985,11 @@ def test_set_deletion_protection_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetDiskAutoDeleteInstanceRequest,
+ compute.SetTagsInstanceRequest,
dict,
],
)
-def test_set_disk_auto_delete_unary_rest(request_type):
+def test_set_tags_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -8716,6 +19997,10 @@ def test_set_disk_auto_delete_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["tags_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -8752,42 +20037,18 @@ def test_set_disk_auto_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_disk_auto_delete_unary(request)
+ response = client.set_tags_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_set_disk_auto_delete_unary_rest_required_fields(
- request_type=compute.SetDiskAutoDeleteInstanceRequest,
+def test_set_tags_unary_rest_required_fields(
+ request_type=compute.SetTagsInstanceRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
- request_init["auto_delete"] = False
- request_init["device_name"] = ""
request_init["instance"] = ""
request_init["project"] = ""
request_init["zone"] = ""
@@ -8799,44 +20060,26 @@ def test_set_disk_auto_delete_unary_rest_required_fields(
)
# verify fields with default values are dropped
- assert "autoDelete" not in jsonified_request
- assert "deviceName" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_disk_auto_delete._get_unset_required_fields(jsonified_request)
+ ).set_tags._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- assert "autoDelete" in jsonified_request
- assert jsonified_request["autoDelete"] == request_init["auto_delete"]
- assert "deviceName" in jsonified_request
- assert jsonified_request["deviceName"] == request_init["device_name"]
- jsonified_request["autoDelete"] = True
- jsonified_request["deviceName"] = "device_name_value"
jsonified_request["instance"] = "instance_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_disk_auto_delete._get_unset_required_fields(jsonified_request)
+ ).set_tags._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "auto_delete",
- "device_name",
- "request_id",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "autoDelete" in jsonified_request
- assert jsonified_request["autoDelete"] == True
- assert "deviceName" in jsonified_request
- assert jsonified_request["deviceName"] == "device_name_value"
assert "instance" in jsonified_request
assert jsonified_request["instance"] == "instance_value"
assert "project" in jsonified_request
@@ -8865,6 +20108,7 @@ def test_set_disk_auto_delete_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -8873,42 +20117,26 @@ def test_set_disk_auto_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_disk_auto_delete_unary(request)
+ response = client.set_tags_unary(request)
- expected_params = [
- (
- "autoDelete",
- False,
- ),
- (
- "deviceName",
- "",
- ),
- ]
+ expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_disk_auto_delete_unary_rest_unset_required_fields():
+def test_set_tags_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_disk_auto_delete._get_unset_required_fields({})
+ unset_fields = transport.set_tags._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "autoDelete",
- "deviceName",
- "requestId",
- )
- )
+ set(("requestId",))
& set(
(
- "autoDelete",
- "deviceName",
"instance",
"project",
+ "tagsResource",
"zone",
)
)
@@ -8916,7 +20144,7 @@ def test_set_disk_auto_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_disk_auto_delete_unary_rest_interceptors(null_interceptor):
+def test_set_tags_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -8927,9 +20155,9 @@ def test_set_disk_auto_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_set_disk_auto_delete"
+ transports.InstancesRestInterceptor, "post_set_tags"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_set_disk_auto_delete"
+ transports.InstancesRestInterceptor, "pre_set_tags"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -8946,7 +20174,7 @@ def test_set_disk_auto_delete_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetDiskAutoDeleteInstanceRequest()
+ request = compute.SetTagsInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -8954,7 +20182,7 @@ def test_set_disk_auto_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_disk_auto_delete_unary(
+ client.set_tags_unary(
request,
metadata=[
("key", "val"),
@@ -8966,8 +20194,8 @@ def test_set_disk_auto_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_disk_auto_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SetDiskAutoDeleteInstanceRequest
+def test_set_tags_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetTagsInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -8976,6 +20204,10 @@ def test_set_disk_auto_delete_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["tags_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -8987,10 +20219,10 @@ def test_set_disk_auto_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_disk_auto_delete_unary(request)
+ client.set_tags_unary(request)
-def test_set_disk_auto_delete_unary_rest_flattened():
+def test_set_tags_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -9013,8 +20245,7 @@ def test_set_disk_auto_delete_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- auto_delete=True,
- device_name="device_name_value",
+ tags_resource=compute.Tags(fingerprint="fingerprint_value"),
)
mock_args.update(sample_request)
@@ -9026,20 +20257,20 @@ def test_set_disk_auto_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_disk_auto_delete_unary(**mock_args)
+ client.set_tags_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setDiskAutoDelete"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setTags"
% client.transport._host,
args[1],
)
-def test_set_disk_auto_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_tags_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -9048,17 +20279,16 @@ def test_set_disk_auto_delete_unary_rest_flattened_error(transport: str = "rest"
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_disk_auto_delete_unary(
- compute.SetDiskAutoDeleteInstanceRequest(),
+ client.set_tags_unary(
+ compute.SetTagsInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- auto_delete=True,
- device_name="device_name_value",
+ tags_resource=compute.Tags(fingerprint="fingerprint_value"),
)
-def test_set_disk_auto_delete_unary_rest_error():
+def test_set_tags_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -9067,129 +20297,90 @@ def test_set_disk_auto_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetIamPolicyInstanceRequest,
+ compute.SimulateMaintenanceEventInstanceRequest,
dict,
],
)
-def test_set_iam_policy_rest(request_type):
+def test_simulate_maintenance_event_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
- request_init["zone_set_policy_request_resource"] = {
- "bindings": [
- {
- "binding_id": "binding_id_value",
- "condition": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "members": ["members_value_1", "members_value_2"],
- "role": "role_value",
- }
- ],
- "etag": "etag_value",
- "policy": {
- "audit_configs": [
- {
- "audit_log_configs": [
- {
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "ignore_child_exemptions": True,
- "log_type": "log_type_value",
- }
- ],
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "service": "service_value",
- }
- ],
- "bindings": {},
- "etag": "etag_value",
- "iam_owned": True,
- "rules": [
- {
- "action": "action_value",
- "conditions": [
- {
- "iam": "iam_value",
- "op": "op_value",
- "svc": "svc_value",
- "sys": "sys_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "description": "description_value",
- "ins": ["ins_value_1", "ins_value_2"],
- "log_configs": [
- {
- "cloud_audit": {
- "authorization_logging_options": {
- "permission_type": "permission_type_value"
- },
- "log_name": "log_name_value",
- },
- "counter": {
- "custom_fields": [
- {"name": "name_value", "value": "value_value"}
- ],
- "field": "field_value",
- "metric": "metric_value",
- },
- "data_access": {"log_mode": "log_mode_value"},
- }
- ],
- "not_ins": ["not_ins_value_1", "not_ins_value_2"],
- "permissions": ["permissions_value_1", "permissions_value_2"],
- }
- ],
- "version": 774,
- },
- }
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.simulate_maintenance_event(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_set_iam_policy_rest_required_fields(
- request_type=compute.SetIamPolicyInstanceRequest,
+def test_simulate_maintenance_event_rest_required_fields(
+ request_type=compute.SimulateMaintenanceEventInstanceRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
+ request_init["instance"] = ""
request_init["project"] = ""
- request_init["resource"] = ""
request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -9202,25 +20393,25 @@ def test_set_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).simulate_maintenance_event._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["instance"] = "instance_value"
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).simulate_maintenance_event._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
assert "zone" in jsonified_request
assert jsonified_request["zone"] == "zone_value"
@@ -9231,7 +20422,7 @@ def test_set_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -9245,43 +20436,41 @@ def test_set_iam_policy_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.simulate_maintenance_event(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_iam_policy_rest_unset_required_fields():
+def test_simulate_maintenance_event_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.simulate_maintenance_event._get_unset_required_fields({})
assert set(unset_fields) == (
set(())
& set(
(
+ "instance",
"project",
- "resource",
"zone",
- "zoneSetPolicyRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_iam_policy_rest_interceptors(null_interceptor):
+def test_simulate_maintenance_event_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -9292,9 +20481,9 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_set_iam_policy"
+ transports.InstancesRestInterceptor, "post_simulate_maintenance_event"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_set_iam_policy"
+ transports.InstancesRestInterceptor, "pre_simulate_maintenance_event"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -9309,17 +20498,17 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetIamPolicyInstanceRequest()
+ request = compute.SimulateMaintenanceEventInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.set_iam_policy(
+ client.simulate_maintenance_event(
request,
metadata=[
("key", "val"),
@@ -9331,8 +20520,9 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.SetIamPolicyInstanceRequest
+def test_simulate_maintenance_event_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.SimulateMaintenanceEventInstanceRequest,
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -9340,84 +20530,7 @@ def test_set_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
- request_init["zone_set_policy_request_resource"] = {
- "bindings": [
- {
- "binding_id": "binding_id_value",
- "condition": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "members": ["members_value_1", "members_value_2"],
- "role": "role_value",
- }
- ],
- "etag": "etag_value",
- "policy": {
- "audit_configs": [
- {
- "audit_log_configs": [
- {
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "ignore_child_exemptions": True,
- "log_type": "log_type_value",
- }
- ],
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "service": "service_value",
- }
- ],
- "bindings": {},
- "etag": "etag_value",
- "iam_owned": True,
- "rules": [
- {
- "action": "action_value",
- "conditions": [
- {
- "iam": "iam_value",
- "op": "op_value",
- "svc": "svc_value",
- "sys": "sys_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "description": "description_value",
- "ins": ["ins_value_1", "ins_value_2"],
- "log_configs": [
- {
- "cloud_audit": {
- "authorization_logging_options": {
- "permission_type": "permission_type_value"
- },
- "log_name": "log_name_value",
- },
- "counter": {
- "custom_fields": [
- {"name": "name_value", "value": "value_value"}
- ],
- "field": "field_value",
- "metric": "metric_value",
- },
- "data_access": {"log_mode": "log_mode_value"},
- }
- ],
- "not_ins": ["not_ins_value_1", "not_ins_value_2"],
- "permissions": ["permissions_value_1", "permissions_value_2"],
- }
- ],
- "version": 774,
- },
- }
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -9429,10 +20542,10 @@ def test_set_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_iam_policy(request)
+ client.simulate_maintenance_event(request)
-def test_set_iam_policy_rest_flattened():
+def test_simulate_maintenance_event_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -9441,48 +20554,45 @@ def test_set_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
"project": "sample1",
"zone": "sample2",
- "resource": "sample3",
+ "instance": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- resource="resource_value",
- zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
- ),
+ instance="instance_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_iam_policy(**mock_args)
+ client.simulate_maintenance_event(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/setIamPolicy"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/simulateMaintenanceEvent"
% client.transport._host,
args[1],
)
-def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_simulate_maintenance_event_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -9491,18 +20601,15 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_iam_policy(
- compute.SetIamPolicyInstanceRequest(),
+ client.simulate_maintenance_event(
+ compute.SimulateMaintenanceEventInstanceRequest(),
project="project_value",
zone="zone_value",
- resource="resource_value",
- zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
- ),
+ instance="instance_value",
)
-def test_set_iam_policy_rest_error():
+def test_simulate_maintenance_event_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -9511,11 +20618,11 @@ def test_set_iam_policy_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetLabelsInstanceRequest,
+ compute.SimulateMaintenanceEventInstanceRequest,
dict,
],
)
-def test_set_labels_unary_rest(request_type):
+def test_simulate_maintenance_event_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -9523,10 +20630,6 @@ def test_set_labels_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_set_labels_request_resource"] = {
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -9563,36 +20666,14 @@ def test_set_labels_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_labels_unary(request)
+ response = client.simulate_maintenance_event_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_set_labels_unary_rest_required_fields(
- request_type=compute.SetLabelsInstanceRequest,
+def test_simulate_maintenance_event_unary_rest_required_fields(
+ request_type=compute.SimulateMaintenanceEventInstanceRequest,
):
transport_class = transports.InstancesRestTransport
@@ -9611,7 +20692,7 @@ def test_set_labels_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_labels._get_unset_required_fields(jsonified_request)
+ ).simulate_maintenance_event._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -9622,9 +20703,7 @@ def test_set_labels_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_labels._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).simulate_maintenance_event._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -9656,7 +20735,6 @@ def test_set_labels_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -9665,25 +20743,24 @@ def test_set_labels_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_labels_unary(request)
+ response = client.simulate_maintenance_event_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_labels_unary_rest_unset_required_fields():
+def test_simulate_maintenance_event_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_labels._get_unset_required_fields({})
+ unset_fields = transport.simulate_maintenance_event._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"instance",
- "instancesSetLabelsRequestResource",
"project",
"zone",
)
@@ -9692,7 +20769,7 @@ def test_set_labels_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_labels_unary_rest_interceptors(null_interceptor):
+def test_simulate_maintenance_event_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -9703,9 +20780,9 @@ def test_set_labels_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_set_labels"
+ transports.InstancesRestInterceptor, "post_simulate_maintenance_event"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_set_labels"
+ transports.InstancesRestInterceptor, "pre_simulate_maintenance_event"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -9722,7 +20799,7 @@ def test_set_labels_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetLabelsInstanceRequest()
+ request = compute.SimulateMaintenanceEventInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -9730,7 +20807,7 @@ def test_set_labels_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_labels_unary(
+ client.simulate_maintenance_event_unary(
request,
metadata=[
("key", "val"),
@@ -9742,8 +20819,9 @@ def test_set_labels_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_labels_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SetLabelsInstanceRequest
+def test_simulate_maintenance_event_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.SimulateMaintenanceEventInstanceRequest,
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -9752,10 +20830,6 @@ def test_set_labels_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_set_labels_request_resource"] = {
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -9767,10 +20841,10 @@ def test_set_labels_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_labels_unary(request)
+ client.simulate_maintenance_event_unary(request)
-def test_set_labels_unary_rest_flattened():
+def test_simulate_maintenance_event_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -9793,9 +20867,6 @@ def test_set_labels_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_set_labels_request_resource=compute.InstancesSetLabelsRequest(
- label_fingerprint="label_fingerprint_value"
- ),
)
mock_args.update(sample_request)
@@ -9807,20 +20878,20 @@ def test_set_labels_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_labels_unary(**mock_args)
+ client.simulate_maintenance_event_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setLabels"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/simulateMaintenanceEvent"
% client.transport._host,
args[1],
)
-def test_set_labels_unary_rest_flattened_error(transport: str = "rest"):
+def test_simulate_maintenance_event_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -9829,18 +20900,15 @@ def test_set_labels_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_labels_unary(
- compute.SetLabelsInstanceRequest(),
+ client.simulate_maintenance_event_unary(
+ compute.SimulateMaintenanceEventInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_set_labels_request_resource=compute.InstancesSetLabelsRequest(
- label_fingerprint="label_fingerprint_value"
- ),
)
-def test_set_labels_unary_rest_error():
+def test_simulate_maintenance_event_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -9849,11 +20917,11 @@ def test_set_labels_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetMachineResourcesInstanceRequest,
+ compute.StartInstanceRequest,
dict,
],
)
-def test_set_machine_resources_unary_rest(request_type):
+def test_start_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -9861,11 +20929,6 @@ def test_set_machine_resources_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_set_machine_resources_request_resource"] = {
- "guest_accelerators": [
- {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
- ]
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -9902,10 +20965,10 @@ def test_set_machine_resources_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_machine_resources_unary(request)
+ response = client.start(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -9930,9 +20993,7 @@ def test_set_machine_resources_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_set_machine_resources_unary_rest_required_fields(
- request_type=compute.SetMachineResourcesInstanceRequest,
-):
+def test_start_rest_required_fields(request_type=compute.StartInstanceRequest):
transport_class = transports.InstancesRestTransport
request_init = {}
@@ -9950,7 +21011,7 @@ def test_set_machine_resources_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_machine_resources._get_unset_required_fields(jsonified_request)
+ ).start._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -9961,7 +21022,7 @@ def test_set_machine_resources_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_machine_resources._get_unset_required_fields(jsonified_request)
+ ).start._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -9995,7 +21056,6 @@ def test_set_machine_resources_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -10004,25 +21064,24 @@ def test_set_machine_resources_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_machine_resources_unary(request)
+ response = client.start(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_machine_resources_unary_rest_unset_required_fields():
+def test_start_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_machine_resources._get_unset_required_fields({})
+ unset_fields = transport.start._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instance",
- "instancesSetMachineResourcesRequestResource",
"project",
"zone",
)
@@ -10031,7 +21090,7 @@ def test_set_machine_resources_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_machine_resources_unary_rest_interceptors(null_interceptor):
+def test_start_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -10042,9 +21101,9 @@ def test_set_machine_resources_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_set_machine_resources"
+ transports.InstancesRestInterceptor, "post_start"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_set_machine_resources"
+ transports.InstancesRestInterceptor, "pre_start"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -10061,7 +21120,7 @@ def test_set_machine_resources_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetMachineResourcesInstanceRequest()
+ request = compute.StartInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -10069,7 +21128,7 @@ def test_set_machine_resources_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_machine_resources_unary(
+ client.start(
request,
metadata=[
("key", "val"),
@@ -10081,8 +21140,8 @@ def test_set_machine_resources_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_machine_resources_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SetMachineResourcesInstanceRequest
+def test_start_rest_bad_request(
+ transport: str = "rest", request_type=compute.StartInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -10091,11 +21150,6 @@ def test_set_machine_resources_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_set_machine_resources_request_resource"] = {
- "guest_accelerators": [
- {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
- ]
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -10107,10 +21161,10 @@ def test_set_machine_resources_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_machine_resources_unary(request)
+ client.start(request)
-def test_set_machine_resources_unary_rest_flattened():
+def test_start_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -10133,9 +21187,6 @@ def test_set_machine_resources_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_set_machine_resources_request_resource=compute.InstancesSetMachineResourcesRequest(
- guest_accelerators=[compute.AcceleratorConfig(accelerator_count=1805)]
- ),
)
mock_args.update(sample_request)
@@ -10147,20 +21198,20 @@ def test_set_machine_resources_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_machine_resources_unary(**mock_args)
+ client.start(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMachineResources"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/start"
% client.transport._host,
args[1],
)
-def test_set_machine_resources_unary_rest_flattened_error(transport: str = "rest"):
+def test_start_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -10169,18 +21220,15 @@ def test_set_machine_resources_unary_rest_flattened_error(transport: str = "rest
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_machine_resources_unary(
- compute.SetMachineResourcesInstanceRequest(),
+ client.start(
+ compute.StartInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_set_machine_resources_request_resource=compute.InstancesSetMachineResourcesRequest(
- guest_accelerators=[compute.AcceleratorConfig(accelerator_count=1805)]
- ),
)
-def test_set_machine_resources_unary_rest_error():
+def test_start_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -10189,11 +21237,11 @@ def test_set_machine_resources_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetMachineTypeInstanceRequest,
+ compute.StartInstanceRequest,
dict,
],
)
-def test_set_machine_type_unary_rest(request_type):
+def test_start_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -10201,9 +21249,6 @@ def test_set_machine_type_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_set_machine_type_request_resource"] = {
- "machine_type": "machine_type_value"
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -10240,37 +21285,13 @@ def test_set_machine_type_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_machine_type_unary(request)
+ response = client.start_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_set_machine_type_unary_rest_required_fields(
- request_type=compute.SetMachineTypeInstanceRequest,
-):
+def test_start_unary_rest_required_fields(request_type=compute.StartInstanceRequest):
transport_class = transports.InstancesRestTransport
request_init = {}
@@ -10288,7 +21309,7 @@ def test_set_machine_type_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_machine_type._get_unset_required_fields(jsonified_request)
+ ).start._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -10299,7 +21320,7 @@ def test_set_machine_type_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_machine_type._get_unset_required_fields(jsonified_request)
+ ).start._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -10333,7 +21354,6 @@ def test_set_machine_type_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -10342,25 +21362,24 @@ def test_set_machine_type_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_machine_type_unary(request)
+ response = client.start_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_machine_type_unary_rest_unset_required_fields():
+def test_start_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_machine_type._get_unset_required_fields({})
+ unset_fields = transport.start._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instance",
- "instancesSetMachineTypeRequestResource",
"project",
"zone",
)
@@ -10369,7 +21388,7 @@ def test_set_machine_type_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_machine_type_unary_rest_interceptors(null_interceptor):
+def test_start_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -10380,9 +21399,9 @@ def test_set_machine_type_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_set_machine_type"
+ transports.InstancesRestInterceptor, "post_start"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_set_machine_type"
+ transports.InstancesRestInterceptor, "pre_start"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -10399,7 +21418,7 @@ def test_set_machine_type_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetMachineTypeInstanceRequest()
+ request = compute.StartInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -10407,7 +21426,7 @@ def test_set_machine_type_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_machine_type_unary(
+ client.start_unary(
request,
metadata=[
("key", "val"),
@@ -10419,8 +21438,8 @@ def test_set_machine_type_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_machine_type_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SetMachineTypeInstanceRequest
+def test_start_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.StartInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -10429,9 +21448,6 @@ def test_set_machine_type_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_set_machine_type_request_resource"] = {
- "machine_type": "machine_type_value"
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -10443,10 +21459,10 @@ def test_set_machine_type_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_machine_type_unary(request)
+ client.start_unary(request)
-def test_set_machine_type_unary_rest_flattened():
+def test_start_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -10469,9 +21485,6 @@ def test_set_machine_type_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_set_machine_type_request_resource=compute.InstancesSetMachineTypeRequest(
- machine_type="machine_type_value"
- ),
)
mock_args.update(sample_request)
@@ -10483,20 +21496,20 @@ def test_set_machine_type_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_machine_type_unary(**mock_args)
+ client.start_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMachineType"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/start"
% client.transport._host,
args[1],
)
-def test_set_machine_type_unary_rest_flattened_error(transport: str = "rest"):
+def test_start_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -10505,18 +21518,15 @@ def test_set_machine_type_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_machine_type_unary(
- compute.SetMachineTypeInstanceRequest(),
+ client.start_unary(
+ compute.StartInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_set_machine_type_request_resource=compute.InstancesSetMachineTypeRequest(
- machine_type="machine_type_value"
- ),
)
-def test_set_machine_type_unary_rest_error():
+def test_start_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -10525,11 +21535,11 @@ def test_set_machine_type_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetMetadataInstanceRequest,
+ compute.StartWithEncryptionKeyInstanceRequest,
dict,
],
)
-def test_set_metadata_unary_rest(request_type):
+def test_start_with_encryption_key_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -10537,10 +21547,19 @@ def test_set_metadata_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["metadata_resource"] = {
- "fingerprint": "fingerprint_value",
- "items": [{"key": "key_value", "value": "value_value"}],
- "kind": "kind_value",
+ request_init["instances_start_with_encryption_key_request_resource"] = {
+ "disks": [
+ {
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source": "source_value",
+ }
+ ]
}
request = request_type(request_init)
@@ -10578,10 +21597,10 @@ def test_set_metadata_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_metadata_unary(request)
+ response = client.start_with_encryption_key(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -10606,8 +21625,8 @@ def test_set_metadata_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_set_metadata_unary_rest_required_fields(
- request_type=compute.SetMetadataInstanceRequest,
+def test_start_with_encryption_key_rest_required_fields(
+ request_type=compute.StartWithEncryptionKeyInstanceRequest,
):
transport_class = transports.InstancesRestTransport
@@ -10626,7 +21645,7 @@ def test_set_metadata_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_metadata._get_unset_required_fields(jsonified_request)
+ ).start_with_encryption_key._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -10637,7 +21656,7 @@ def test_set_metadata_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_metadata._get_unset_required_fields(jsonified_request)
+ ).start_with_encryption_key._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -10680,25 +21699,25 @@ def test_set_metadata_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_metadata_unary(request)
+ response = client.start_with_encryption_key(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_metadata_unary_rest_unset_required_fields():
+def test_start_with_encryption_key_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_metadata._get_unset_required_fields({})
+ unset_fields = transport.start_with_encryption_key._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instance",
- "metadataResource",
+ "instancesStartWithEncryptionKeyRequestResource",
"project",
"zone",
)
@@ -10707,7 +21726,7 @@ def test_set_metadata_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_metadata_unary_rest_interceptors(null_interceptor):
+def test_start_with_encryption_key_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -10718,9 +21737,9 @@ def test_set_metadata_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_set_metadata"
+ transports.InstancesRestInterceptor, "post_start_with_encryption_key"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_set_metadata"
+ transports.InstancesRestInterceptor, "pre_start_with_encryption_key"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -10737,7 +21756,7 @@ def test_set_metadata_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetMetadataInstanceRequest()
+ request = compute.StartWithEncryptionKeyInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -10745,7 +21764,7 @@ def test_set_metadata_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_metadata_unary(
+ client.start_with_encryption_key(
request,
metadata=[
("key", "val"),
@@ -10757,8 +21776,8 @@ def test_set_metadata_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_metadata_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SetMetadataInstanceRequest
+def test_start_with_encryption_key_rest_bad_request(
+ transport: str = "rest", request_type=compute.StartWithEncryptionKeyInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -10767,10 +21786,19 @@ def test_set_metadata_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["metadata_resource"] = {
- "fingerprint": "fingerprint_value",
- "items": [{"key": "key_value", "value": "value_value"}],
- "kind": "kind_value",
+ request_init["instances_start_with_encryption_key_request_resource"] = {
+ "disks": [
+ {
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source": "source_value",
+ }
+ ]
}
request = request_type(request_init)
@@ -10783,10 +21811,10 @@ def test_set_metadata_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_metadata_unary(request)
+ client.start_with_encryption_key(request)
-def test_set_metadata_unary_rest_flattened():
+def test_start_with_encryption_key_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -10809,7 +21837,15 @@ def test_set_metadata_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- metadata_resource=compute.Metadata(fingerprint="fingerprint_value"),
+ instances_start_with_encryption_key_request_resource=compute.InstancesStartWithEncryptionKeyRequest(
+ disks=[
+ compute.CustomerEncryptionKeyProtectedDisk(
+ disk_encryption_key=compute.CustomerEncryptionKey(
+ kms_key_name="kms_key_name_value"
+ )
+ )
+ ]
+ ),
)
mock_args.update(sample_request)
@@ -10821,20 +21857,20 @@ def test_set_metadata_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_metadata_unary(**mock_args)
+ client.start_with_encryption_key(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMetadata"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/startWithEncryptionKey"
% client.transport._host,
args[1],
)
-def test_set_metadata_unary_rest_flattened_error(transport: str = "rest"):
+def test_start_with_encryption_key_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -10843,16 +21879,24 @@ def test_set_metadata_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_metadata_unary(
- compute.SetMetadataInstanceRequest(),
+ client.start_with_encryption_key(
+ compute.StartWithEncryptionKeyInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- metadata_resource=compute.Metadata(fingerprint="fingerprint_value"),
+ instances_start_with_encryption_key_request_resource=compute.InstancesStartWithEncryptionKeyRequest(
+ disks=[
+ compute.CustomerEncryptionKeyProtectedDisk(
+ disk_encryption_key=compute.CustomerEncryptionKey(
+ kms_key_name="kms_key_name_value"
+ )
+ )
+ ]
+ ),
)
-def test_set_metadata_unary_rest_error():
+def test_start_with_encryption_key_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -10861,11 +21905,11 @@ def test_set_metadata_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetMinCpuPlatformInstanceRequest,
+ compute.StartWithEncryptionKeyInstanceRequest,
dict,
],
)
-def test_set_min_cpu_platform_unary_rest(request_type):
+def test_start_with_encryption_key_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -10873,8 +21917,19 @@ def test_set_min_cpu_platform_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_set_min_cpu_platform_request_resource"] = {
- "min_cpu_platform": "min_cpu_platform_value"
+ request_init["instances_start_with_encryption_key_request_resource"] = {
+ "disks": [
+ {
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source": "source_value",
+ }
+ ]
}
request = request_type(request_init)
@@ -10912,36 +21967,14 @@ def test_set_min_cpu_platform_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_min_cpu_platform_unary(request)
+ response = client.start_with_encryption_key_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_set_min_cpu_platform_unary_rest_required_fields(
- request_type=compute.SetMinCpuPlatformInstanceRequest,
+def test_start_with_encryption_key_unary_rest_required_fields(
+ request_type=compute.StartWithEncryptionKeyInstanceRequest,
):
transport_class = transports.InstancesRestTransport
@@ -10960,7 +21993,7 @@ def test_set_min_cpu_platform_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_min_cpu_platform._get_unset_required_fields(jsonified_request)
+ ).start_with_encryption_key._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -10971,7 +22004,7 @@ def test_set_min_cpu_platform_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_min_cpu_platform._get_unset_required_fields(jsonified_request)
+ ).start_with_encryption_key._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -11014,25 +22047,25 @@ def test_set_min_cpu_platform_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_min_cpu_platform_unary(request)
+ response = client.start_with_encryption_key_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_min_cpu_platform_unary_rest_unset_required_fields():
+def test_start_with_encryption_key_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_min_cpu_platform._get_unset_required_fields({})
+ unset_fields = transport.start_with_encryption_key._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instance",
- "instancesSetMinCpuPlatformRequestResource",
+ "instancesStartWithEncryptionKeyRequestResource",
"project",
"zone",
)
@@ -11041,7 +22074,7 @@ def test_set_min_cpu_platform_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_min_cpu_platform_unary_rest_interceptors(null_interceptor):
+def test_start_with_encryption_key_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -11052,9 +22085,9 @@ def test_set_min_cpu_platform_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_set_min_cpu_platform"
+ transports.InstancesRestInterceptor, "post_start_with_encryption_key"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_set_min_cpu_platform"
+ transports.InstancesRestInterceptor, "pre_start_with_encryption_key"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -11071,7 +22104,7 @@ def test_set_min_cpu_platform_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetMinCpuPlatformInstanceRequest()
+ request = compute.StartWithEncryptionKeyInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -11079,7 +22112,7 @@ def test_set_min_cpu_platform_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_min_cpu_platform_unary(
+ client.start_with_encryption_key_unary(
request,
metadata=[
("key", "val"),
@@ -11091,8 +22124,8 @@ def test_set_min_cpu_platform_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_min_cpu_platform_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SetMinCpuPlatformInstanceRequest
+def test_start_with_encryption_key_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.StartWithEncryptionKeyInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -11101,8 +22134,19 @@ def test_set_min_cpu_platform_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_set_min_cpu_platform_request_resource"] = {
- "min_cpu_platform": "min_cpu_platform_value"
+ request_init["instances_start_with_encryption_key_request_resource"] = {
+ "disks": [
+ {
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source": "source_value",
+ }
+ ]
}
request = request_type(request_init)
@@ -11115,10 +22159,10 @@ def test_set_min_cpu_platform_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_min_cpu_platform_unary(request)
+ client.start_with_encryption_key_unary(request)
-def test_set_min_cpu_platform_unary_rest_flattened():
+def test_start_with_encryption_key_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -11141,8 +22185,14 @@ def test_set_min_cpu_platform_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_set_min_cpu_platform_request_resource=compute.InstancesSetMinCpuPlatformRequest(
- min_cpu_platform="min_cpu_platform_value"
+ instances_start_with_encryption_key_request_resource=compute.InstancesStartWithEncryptionKeyRequest(
+ disks=[
+ compute.CustomerEncryptionKeyProtectedDisk(
+ disk_encryption_key=compute.CustomerEncryptionKey(
+ kms_key_name="kms_key_name_value"
+ )
+ )
+ ]
),
)
mock_args.update(sample_request)
@@ -11155,20 +22205,20 @@ def test_set_min_cpu_platform_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_min_cpu_platform_unary(**mock_args)
+ client.start_with_encryption_key_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setMinCpuPlatform"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/startWithEncryptionKey"
% client.transport._host,
args[1],
)
-def test_set_min_cpu_platform_unary_rest_flattened_error(transport: str = "rest"):
+def test_start_with_encryption_key_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -11177,18 +22227,24 @@ def test_set_min_cpu_platform_unary_rest_flattened_error(transport: str = "rest"
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_min_cpu_platform_unary(
- compute.SetMinCpuPlatformInstanceRequest(),
+ client.start_with_encryption_key_unary(
+ compute.StartWithEncryptionKeyInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_set_min_cpu_platform_request_resource=compute.InstancesSetMinCpuPlatformRequest(
- min_cpu_platform="min_cpu_platform_value"
+ instances_start_with_encryption_key_request_resource=compute.InstancesStartWithEncryptionKeyRequest(
+ disks=[
+ compute.CustomerEncryptionKeyProtectedDisk(
+ disk_encryption_key=compute.CustomerEncryptionKey(
+ kms_key_name="kms_key_name_value"
+ )
+ )
+ ]
),
)
-def test_set_min_cpu_platform_unary_rest_error():
+def test_start_with_encryption_key_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -11197,11 +22253,11 @@ def test_set_min_cpu_platform_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetSchedulingInstanceRequest,
+ compute.StopInstanceRequest,
dict,
],
)
-def test_set_scheduling_unary_rest(request_type):
+def test_stop_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -11209,22 +22265,6 @@ def test_set_scheduling_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["scheduling_resource"] = {
- "automatic_restart": True,
- "instance_termination_action": "instance_termination_action_value",
- "location_hint": "location_hint_value",
- "min_node_cpus": 1379,
- "node_affinities": [
- {
- "key": "key_value",
- "operator": "operator_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "on_host_maintenance": "on_host_maintenance_value",
- "preemptible": True,
- "provisioning_model": "provisioning_model_value",
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -11261,10 +22301,10 @@ def test_set_scheduling_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_scheduling_unary(request)
+ response = client.stop(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -11289,9 +22329,7 @@ def test_set_scheduling_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_set_scheduling_unary_rest_required_fields(
- request_type=compute.SetSchedulingInstanceRequest,
-):
+def test_stop_rest_required_fields(request_type=compute.StopInstanceRequest):
transport_class = transports.InstancesRestTransport
request_init = {}
@@ -11309,7 +22347,7 @@ def test_set_scheduling_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_scheduling._get_unset_required_fields(jsonified_request)
+ ).stop._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -11320,7 +22358,7 @@ def test_set_scheduling_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_scheduling._get_unset_required_fields(jsonified_request)
+ ).stop._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -11354,7 +22392,6 @@ def test_set_scheduling_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -11363,26 +22400,25 @@ def test_set_scheduling_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_scheduling_unary(request)
+ response = client.stop(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_scheduling_unary_rest_unset_required_fields():
+def test_stop_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_scheduling._get_unset_required_fields({})
+ unset_fields = transport.stop._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instance",
"project",
- "schedulingResource",
"zone",
)
)
@@ -11390,7 +22426,7 @@ def test_set_scheduling_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_scheduling_unary_rest_interceptors(null_interceptor):
+def test_stop_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -11401,9 +22437,9 @@ def test_set_scheduling_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_set_scheduling"
+ transports.InstancesRestInterceptor, "post_stop"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_set_scheduling"
+ transports.InstancesRestInterceptor, "pre_stop"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -11420,7 +22456,7 @@ def test_set_scheduling_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetSchedulingInstanceRequest()
+ request = compute.StopInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -11428,7 +22464,7 @@ def test_set_scheduling_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_scheduling_unary(
+ client.stop(
request,
metadata=[
("key", "val"),
@@ -11440,8 +22476,8 @@ def test_set_scheduling_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_scheduling_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SetSchedulingInstanceRequest
+def test_stop_rest_bad_request(
+ transport: str = "rest", request_type=compute.StopInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -11450,22 +22486,6 @@ def test_set_scheduling_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["scheduling_resource"] = {
- "automatic_restart": True,
- "instance_termination_action": "instance_termination_action_value",
- "location_hint": "location_hint_value",
- "min_node_cpus": 1379,
- "node_affinities": [
- {
- "key": "key_value",
- "operator": "operator_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "on_host_maintenance": "on_host_maintenance_value",
- "preemptible": True,
- "provisioning_model": "provisioning_model_value",
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -11477,10 +22497,10 @@ def test_set_scheduling_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_scheduling_unary(request)
+ client.stop(request)
-def test_set_scheduling_unary_rest_flattened():
+def test_stop_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -11503,7 +22523,6 @@ def test_set_scheduling_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- scheduling_resource=compute.Scheduling(automatic_restart=True),
)
mock_args.update(sample_request)
@@ -11515,20 +22534,20 @@ def test_set_scheduling_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_scheduling_unary(**mock_args)
+ client.stop(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setScheduling"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/stop"
% client.transport._host,
args[1],
)
-def test_set_scheduling_unary_rest_flattened_error(transport: str = "rest"):
+def test_stop_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -11537,16 +22556,15 @@ def test_set_scheduling_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_scheduling_unary(
- compute.SetSchedulingInstanceRequest(),
+ client.stop(
+ compute.StopInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- scheduling_resource=compute.Scheduling(automatic_restart=True),
)
-def test_set_scheduling_unary_rest_error():
+def test_stop_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -11555,11 +22573,11 @@ def test_set_scheduling_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetServiceAccountInstanceRequest,
+ compute.StopInstanceRequest,
dict,
],
)
-def test_set_service_account_unary_rest(request_type):
+def test_stop_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -11567,10 +22585,6 @@ def test_set_service_account_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_set_service_account_request_resource"] = {
- "email": "email_value",
- "scopes": ["scopes_value_1", "scopes_value_2"],
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -11597,47 +22611,23 @@ def test_set_service_account_unary_rest(request_type):
status_message="status_message_value",
target_id=947,
target_link="target_link_value",
- user="user_value",
- zone="zone_value",
- )
-
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
- response_value._content = json_return_value.encode("UTF-8")
- req.return_value = response_value
- response = client.set_service_account_unary(request)
-
- # Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.stop_unary(request)
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
-def test_set_service_account_unary_rest_required_fields(
- request_type=compute.SetServiceAccountInstanceRequest,
-):
+
+def test_stop_unary_rest_required_fields(request_type=compute.StopInstanceRequest):
transport_class = transports.InstancesRestTransport
request_init = {}
@@ -11655,7 +22645,7 @@ def test_set_service_account_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_service_account._get_unset_required_fields(jsonified_request)
+ ).stop._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -11666,7 +22656,7 @@ def test_set_service_account_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_service_account._get_unset_required_fields(jsonified_request)
+ ).stop._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -11700,7 +22690,6 @@ def test_set_service_account_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -11709,25 +22698,24 @@ def test_set_service_account_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_service_account_unary(request)
+ response = client.stop_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_service_account_unary_rest_unset_required_fields():
+def test_stop_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_service_account._get_unset_required_fields({})
+ unset_fields = transport.stop._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instance",
- "instancesSetServiceAccountRequestResource",
"project",
"zone",
)
@@ -11736,7 +22724,7 @@ def test_set_service_account_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_service_account_unary_rest_interceptors(null_interceptor):
+def test_stop_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -11747,9 +22735,9 @@ def test_set_service_account_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_set_service_account"
+ transports.InstancesRestInterceptor, "post_stop"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_set_service_account"
+ transports.InstancesRestInterceptor, "pre_stop"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -11766,7 +22754,7 @@ def test_set_service_account_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetServiceAccountInstanceRequest()
+ request = compute.StopInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -11774,7 +22762,7 @@ def test_set_service_account_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_service_account_unary(
+ client.stop_unary(
request,
metadata=[
("key", "val"),
@@ -11786,8 +22774,8 @@ def test_set_service_account_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_service_account_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SetServiceAccountInstanceRequest
+def test_stop_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.StopInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -11796,10 +22784,6 @@ def test_set_service_account_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_set_service_account_request_resource"] = {
- "email": "email_value",
- "scopes": ["scopes_value_1", "scopes_value_2"],
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -11811,10 +22795,10 @@ def test_set_service_account_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_service_account_unary(request)
+ client.stop_unary(request)
-def test_set_service_account_unary_rest_flattened():
+def test_stop_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -11837,9 +22821,6 @@ def test_set_service_account_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_set_service_account_request_resource=compute.InstancesSetServiceAccountRequest(
- email="email_value"
- ),
)
mock_args.update(sample_request)
@@ -11851,20 +22832,20 @@ def test_set_service_account_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_service_account_unary(**mock_args)
+ client.stop_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setServiceAccount"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/stop"
% client.transport._host,
args[1],
)
-def test_set_service_account_unary_rest_flattened_error(transport: str = "rest"):
+def test_stop_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -11873,18 +22854,15 @@ def test_set_service_account_unary_rest_flattened_error(transport: str = "rest")
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_service_account_unary(
- compute.SetServiceAccountInstanceRequest(),
+ client.stop_unary(
+ compute.StopInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_set_service_account_request_resource=compute.InstancesSetServiceAccountRequest(
- email="email_value"
- ),
)
-def test_set_service_account_unary_rest_error():
+def test_stop_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -11893,11 +22871,11 @@ def test_set_service_account_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetShieldedInstanceIntegrityPolicyInstanceRequest,
+ compute.SuspendInstanceRequest,
dict,
],
)
-def test_set_shielded_instance_integrity_policy_unary_rest(request_type):
+def test_suspend_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -11905,9 +22883,6 @@ def test_set_shielded_instance_integrity_policy_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["shielded_instance_integrity_policy_resource"] = {
- "update_auto_learn_policy": True
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -11944,10 +22919,10 @@ def test_set_shielded_instance_integrity_policy_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_shielded_instance_integrity_policy_unary(request)
+ response = client.suspend(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -11972,9 +22947,7 @@ def test_set_shielded_instance_integrity_policy_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_set_shielded_instance_integrity_policy_unary_rest_required_fields(
- request_type=compute.SetShieldedInstanceIntegrityPolicyInstanceRequest,
-):
+def test_suspend_rest_required_fields(request_type=compute.SuspendInstanceRequest):
transport_class = transports.InstancesRestTransport
request_init = {}
@@ -11992,9 +22965,7 @@ def test_set_shielded_instance_integrity_policy_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_shielded_instance_integrity_policy._get_unset_required_fields(
- jsonified_request
- )
+ ).suspend._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -12005,9 +22976,7 @@ def test_set_shielded_instance_integrity_policy_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_shielded_instance_integrity_policy._get_unset_required_fields(
- jsonified_request
- )
+ ).suspend._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -12038,10 +23007,9 @@ def test_set_shielded_instance_integrity_policy_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -12050,28 +23018,25 @@ def test_set_shielded_instance_integrity_policy_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_shielded_instance_integrity_policy_unary(request)
+ response = client.suspend(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_shielded_instance_integrity_policy_unary_rest_unset_required_fields():
+def test_suspend_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = (
- transport.set_shielded_instance_integrity_policy._get_unset_required_fields({})
- )
+ unset_fields = transport.suspend._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instance",
"project",
- "shieldedInstanceIntegrityPolicyResource",
"zone",
)
)
@@ -12079,9 +23044,7 @@ def test_set_shielded_instance_integrity_policy_unary_rest_unset_required_fields
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_shielded_instance_integrity_policy_unary_rest_interceptors(
- null_interceptor,
-):
+def test_suspend_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -12092,11 +23055,9 @@ def test_set_shielded_instance_integrity_policy_unary_rest_interceptors(
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor,
- "post_set_shielded_instance_integrity_policy",
+ transports.InstancesRestInterceptor, "post_suspend"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor,
- "pre_set_shielded_instance_integrity_policy",
+ transports.InstancesRestInterceptor, "pre_suspend"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -12113,7 +23074,7 @@ def test_set_shielded_instance_integrity_policy_unary_rest_interceptors(
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetShieldedInstanceIntegrityPolicyInstanceRequest()
+ request = compute.SuspendInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -12121,7 +23082,7 @@ def test_set_shielded_instance_integrity_policy_unary_rest_interceptors(
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_shielded_instance_integrity_policy_unary(
+ client.suspend(
request,
metadata=[
("key", "val"),
@@ -12133,9 +23094,8 @@ def test_set_shielded_instance_integrity_policy_unary_rest_interceptors(
post.assert_called_once()
-def test_set_shielded_instance_integrity_policy_unary_rest_bad_request(
- transport: str = "rest",
- request_type=compute.SetShieldedInstanceIntegrityPolicyInstanceRequest,
+def test_suspend_rest_bad_request(
+ transport: str = "rest", request_type=compute.SuspendInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -12144,9 +23104,6 @@ def test_set_shielded_instance_integrity_policy_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["shielded_instance_integrity_policy_resource"] = {
- "update_auto_learn_policy": True
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -12158,10 +23115,10 @@ def test_set_shielded_instance_integrity_policy_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_shielded_instance_integrity_policy_unary(request)
+ client.suspend(request)
-def test_set_shielded_instance_integrity_policy_unary_rest_flattened():
+def test_suspend_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -12184,9 +23141,6 @@ def test_set_shielded_instance_integrity_policy_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- shielded_instance_integrity_policy_resource=compute.ShieldedInstanceIntegrityPolicy(
- update_auto_learn_policy=True
- ),
)
mock_args.update(sample_request)
@@ -12198,22 +23152,20 @@ def test_set_shielded_instance_integrity_policy_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_shielded_instance_integrity_policy_unary(**mock_args)
+ client.suspend(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setShieldedInstanceIntegrityPolicy"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/suspend"
% client.transport._host,
args[1],
)
-def test_set_shielded_instance_integrity_policy_unary_rest_flattened_error(
- transport: str = "rest",
-):
+def test_suspend_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -12222,18 +23174,15 @@ def test_set_shielded_instance_integrity_policy_unary_rest_flattened_error(
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_shielded_instance_integrity_policy_unary(
- compute.SetShieldedInstanceIntegrityPolicyInstanceRequest(),
+ client.suspend(
+ compute.SuspendInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- shielded_instance_integrity_policy_resource=compute.ShieldedInstanceIntegrityPolicy(
- update_auto_learn_policy=True
- ),
)
-def test_set_shielded_instance_integrity_policy_unary_rest_error():
+def test_suspend_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -12242,11 +23191,11 @@ def test_set_shielded_instance_integrity_policy_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetTagsInstanceRequest,
+ compute.SuspendInstanceRequest,
dict,
],
)
-def test_set_tags_unary_rest(request_type):
+def test_suspend_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -12254,10 +23203,6 @@ def test_set_tags_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["tags_resource"] = {
- "fingerprint": "fingerprint_value",
- "items": ["items_value_1", "items_value_2"],
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -12294,36 +23239,14 @@ def test_set_tags_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_tags_unary(request)
+ response = client.suspend_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_set_tags_unary_rest_required_fields(
- request_type=compute.SetTagsInstanceRequest,
+def test_suspend_unary_rest_required_fields(
+ request_type=compute.SuspendInstanceRequest,
):
transport_class = transports.InstancesRestTransport
@@ -12342,7 +23265,7 @@ def test_set_tags_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_tags._get_unset_required_fields(jsonified_request)
+ ).suspend._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -12353,7 +23276,7 @@ def test_set_tags_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_tags._get_unset_required_fields(jsonified_request)
+ ).suspend._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -12387,7 +23310,6 @@ def test_set_tags_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -12396,26 +23318,25 @@ def test_set_tags_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_tags_unary(request)
+ response = client.suspend_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_tags_unary_rest_unset_required_fields():
+def test_suspend_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_tags._get_unset_required_fields({})
+ unset_fields = transport.suspend._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"instance",
"project",
- "tagsResource",
"zone",
)
)
@@ -12423,7 +23344,7 @@ def test_set_tags_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_tags_unary_rest_interceptors(null_interceptor):
+def test_suspend_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -12434,9 +23355,9 @@ def test_set_tags_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_set_tags"
+ transports.InstancesRestInterceptor, "post_suspend"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_set_tags"
+ transports.InstancesRestInterceptor, "pre_suspend"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -12453,7 +23374,7 @@ def test_set_tags_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetTagsInstanceRequest()
+ request = compute.SuspendInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -12461,7 +23382,7 @@ def test_set_tags_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_tags_unary(
+ client.suspend_unary(
request,
metadata=[
("key", "val"),
@@ -12473,8 +23394,8 @@ def test_set_tags_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_tags_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SetTagsInstanceRequest
+def test_suspend_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SuspendInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -12483,10 +23404,6 @@ def test_set_tags_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["tags_resource"] = {
- "fingerprint": "fingerprint_value",
- "items": ["items_value_1", "items_value_2"],
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -12498,10 +23415,10 @@ def test_set_tags_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_tags_unary(request)
+ client.suspend_unary(request)
-def test_set_tags_unary_rest_flattened():
+def test_suspend_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -12524,7 +23441,6 @@ def test_set_tags_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- tags_resource=compute.Tags(fingerprint="fingerprint_value"),
)
mock_args.update(sample_request)
@@ -12536,20 +23452,20 @@ def test_set_tags_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_tags_unary(**mock_args)
+ client.suspend_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/setTags"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/suspend"
% client.transport._host,
args[1],
)
-def test_set_tags_unary_rest_flattened_error(transport: str = "rest"):
+def test_suspend_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -12558,16 +23474,15 @@ def test_set_tags_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_tags_unary(
- compute.SetTagsInstanceRequest(),
+ client.suspend_unary(
+ compute.SuspendInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- tags_resource=compute.Tags(fingerprint="fingerprint_value"),
)
-def test_set_tags_unary_rest_error():
+def test_suspend_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -12576,90 +23491,51 @@ def test_set_tags_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SimulateMaintenanceEventInstanceRequest,
+ compute.TestIamPermissionsInstanceRequest,
dict,
],
)
-def test_simulate_maintenance_event_unary_rest(request_type):
+def test_test_iam_permissions_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
- kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
- self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init["test_permissions_request_resource"] = {
+ "permissions": ["permissions_value_1", "permissions_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TestPermissionsResponse(
+ permissions=["permissions_value"],
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TestPermissionsResponse.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.simulate_maintenance_event_unary(request)
+ response = client.test_iam_permissions(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert isinstance(response, compute.TestPermissionsResponse)
+ assert response.permissions == ["permissions_value"]
-def test_simulate_maintenance_event_unary_rest_required_fields(
- request_type=compute.SimulateMaintenanceEventInstanceRequest,
+def test_test_iam_permissions_rest_required_fields(
+ request_type=compute.TestIamPermissionsInstanceRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
- request_init["instance"] = ""
request_init["project"] = ""
+ request_init["resource"] = ""
request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -12672,25 +23548,25 @@ def test_simulate_maintenance_event_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).simulate_maintenance_event._get_unset_required_fields(jsonified_request)
+ ).test_iam_permissions._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["instance"] = "instance_value"
jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).simulate_maintenance_event._get_unset_required_fields(jsonified_request)
+ ).test_iam_permissions._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "instance" in jsonified_request
- assert jsonified_request["instance"] == "instance_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
assert "zone" in jsonified_request
assert jsonified_request["zone"] == "zone_value"
@@ -12701,7 +23577,7 @@ def test_simulate_maintenance_event_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.TestPermissionsResponse()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -12715,33 +23591,35 @@ def test_simulate_maintenance_event_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TestPermissionsResponse.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.simulate_maintenance_event_unary(request)
+ response = client.test_iam_permissions(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_simulate_maintenance_event_unary_rest_unset_required_fields():
+def test_test_iam_permissions_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.simulate_maintenance_event._get_unset_required_fields({})
+ unset_fields = transport.test_iam_permissions._get_unset_required_fields({})
assert set(unset_fields) == (
set(())
& set(
(
- "instance",
"project",
+ "resource",
+ "testPermissionsRequestResource",
"zone",
)
)
@@ -12749,7 +23627,7 @@ def test_simulate_maintenance_event_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_simulate_maintenance_event_unary_rest_interceptors(null_interceptor):
+def test_test_iam_permissions_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -12760,9 +23638,9 @@ def test_simulate_maintenance_event_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_simulate_maintenance_event"
+ transports.InstancesRestInterceptor, "post_test_iam_permissions"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_simulate_maintenance_event"
+ transports.InstancesRestInterceptor, "pre_test_iam_permissions"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -12777,17 +23655,19 @@ def test_simulate_maintenance_event_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.TestPermissionsResponse.to_json(
+ compute.TestPermissionsResponse()
+ )
- request = compute.SimulateMaintenanceEventInstanceRequest()
+ request = compute.TestIamPermissionsInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.TestPermissionsResponse
- client.simulate_maintenance_event_unary(
+ client.test_iam_permissions(
request,
metadata=[
("key", "val"),
@@ -12799,9 +23679,8 @@ def test_simulate_maintenance_event_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_simulate_maintenance_event_unary_rest_bad_request(
- transport: str = "rest",
- request_type=compute.SimulateMaintenanceEventInstanceRequest,
+def test_test_iam_permissions_rest_bad_request(
+ transport: str = "rest", request_type=compute.TestIamPermissionsInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -12809,7 +23688,10 @@ def test_simulate_maintenance_event_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init["test_permissions_request_resource"] = {
+ "permissions": ["permissions_value_1", "permissions_value_2"]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -12821,10 +23703,10 @@ def test_simulate_maintenance_event_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.simulate_maintenance_event_unary(request)
+ client.test_iam_permissions(request)
-def test_simulate_maintenance_event_unary_rest_flattened():
+def test_test_iam_permissions_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -12833,45 +23715,48 @@ def test_simulate_maintenance_event_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.TestPermissionsResponse()
# get arguments that satisfy an http rule for this method
sample_request = {
"project": "sample1",
"zone": "sample2",
- "instance": "sample3",
+ "resource": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- instance="instance_value",
+ resource="resource_value",
+ test_permissions_request_resource=compute.TestPermissionsRequest(
+ permissions=["permissions_value"]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TestPermissionsResponse.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.simulate_maintenance_event_unary(**mock_args)
+ client.test_iam_permissions(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/simulateMaintenanceEvent"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/testIamPermissions"
% client.transport._host,
args[1],
)
-def test_simulate_maintenance_event_unary_rest_flattened_error(transport: str = "rest"):
+def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -12880,15 +23765,18 @@ def test_simulate_maintenance_event_unary_rest_flattened_error(transport: str =
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.simulate_maintenance_event_unary(
- compute.SimulateMaintenanceEventInstanceRequest(),
+ client.test_iam_permissions(
+ compute.TestIamPermissionsInstanceRequest(),
project="project_value",
zone="zone_value",
- instance="instance_value",
+ resource="resource_value",
+ test_permissions_request_resource=compute.TestPermissionsRequest(
+ permissions=["permissions_value"]
+ ),
)
-def test_simulate_maintenance_event_unary_rest_error():
+def test_test_iam_permissions_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -12897,11 +23785,11 @@ def test_simulate_maintenance_event_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.StartInstanceRequest,
+ compute.UpdateInstanceRequest,
dict,
],
)
-def test_start_unary_rest(request_type):
+def test_update_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -12909,6 +23797,173 @@ def test_start_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instance_resource"] = {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "cpu_platform": "cpu_platform_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "deletion_protection": True,
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "display_device": {"enable_display": True},
+ "fingerprint": "fingerprint_value",
+ "guest_accelerators": [
+ {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
+ ],
+ "hostname": "hostname_value",
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_start_timestamp": "last_start_timestamp_value",
+ "last_stop_timestamp": "last_stop_timestamp_value",
+ "last_suspended_timestamp": "last_suspended_timestamp_value",
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "name": "name_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "params": {"resource_manager_tags": {}},
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "self_link": "self_link_value",
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "shielded_instance_integrity_policy": {"update_auto_learn_policy": True},
+ "source_machine_image": "source_machine_image_value",
+ "source_machine_image_encryption_key": {},
+ "start_restricted": True,
+ "status": "status_value",
+ "status_message": "status_message_value",
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ "zone": "zone_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -12945,10 +24000,10 @@ def test_start_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.start_unary(request)
+ response = client.update(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -12973,7 +24028,7 @@ def test_start_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_start_unary_rest_required_fields(request_type=compute.StartInstanceRequest):
+def test_update_rest_required_fields(request_type=compute.UpdateInstanceRequest):
transport_class = transports.InstancesRestTransport
request_init = {}
@@ -12991,7 +24046,7 @@ def test_start_unary_rest_required_fields(request_type=compute.StartInstanceRequ
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).start._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -13002,9 +24057,15 @@ def test_start_unary_rest_required_fields(request_type=compute.StartInstanceRequ
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).start._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "minimal_action",
+ "most_disruptive_allowed_action",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -13033,9 +24094,10 @@ def test_start_unary_rest_required_fields(request_type=compute.StartInstanceRequ
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "put",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -13044,24 +24106,31 @@ def test_start_unary_rest_required_fields(request_type=compute.StartInstanceRequ
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.start_unary(request)
+ response = client.update(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_start_unary_rest_unset_required_fields():
+def test_update_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.start._get_unset_required_fields({})
+ unset_fields = transport.update._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "minimalAction",
+ "mostDisruptiveAllowedAction",
+ "requestId",
+ )
+ )
& set(
(
"instance",
+ "instanceResource",
"project",
"zone",
)
@@ -13070,7 +24139,7 @@ def test_start_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_start_unary_rest_interceptors(null_interceptor):
+def test_update_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -13081,9 +24150,9 @@ def test_start_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_start"
+ transports.InstancesRestInterceptor, "post_update"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_start"
+ transports.InstancesRestInterceptor, "pre_update"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -13100,7 +24169,7 @@ def test_start_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.StartInstanceRequest()
+ request = compute.UpdateInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -13108,7 +24177,7 @@ def test_start_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.start_unary(
+ client.update(
request,
metadata=[
("key", "val"),
@@ -13120,8 +24189,8 @@ def test_start_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_start_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.StartInstanceRequest
+def test_update_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -13130,6 +24199,173 @@ def test_start_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["instance_resource"] = {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "cpu_platform": "cpu_platform_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "deletion_protection": True,
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "display_device": {"enable_display": True},
+ "fingerprint": "fingerprint_value",
+ "guest_accelerators": [
+ {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
+ ],
+ "hostname": "hostname_value",
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_start_timestamp": "last_start_timestamp_value",
+ "last_stop_timestamp": "last_stop_timestamp_value",
+ "last_suspended_timestamp": "last_suspended_timestamp_value",
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "name": "name_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "params": {"resource_manager_tags": {}},
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "self_link": "self_link_value",
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "shielded_instance_integrity_policy": {"update_auto_learn_policy": True},
+ "source_machine_image": "source_machine_image_value",
+ "source_machine_image_encryption_key": {},
+ "start_restricted": True,
+ "status": "status_value",
+ "status_message": "status_message_value",
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ "zone": "zone_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -13141,10 +24377,10 @@ def test_start_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.start_unary(request)
+ client.update(request)
-def test_start_unary_rest_flattened():
+def test_update_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -13167,6 +24403,11 @@ def test_start_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
+ instance_resource=compute.Instance(
+ advanced_machine_features=compute.AdvancedMachineFeatures(
+ enable_nested_virtualization=True
+ )
+ ),
)
mock_args.update(sample_request)
@@ -13178,20 +24419,20 @@ def test_start_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.start_unary(**mock_args)
+ client.update(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/start"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}"
% client.transport._host,
args[1],
)
-def test_start_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -13200,15 +24441,20 @@ def test_start_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.start_unary(
- compute.StartInstanceRequest(),
+ client.update(
+ compute.UpdateInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
+ instance_resource=compute.Instance(
+ advanced_machine_features=compute.AdvancedMachineFeatures(
+ enable_nested_virtualization=True
+ )
+ ),
)
-def test_start_unary_rest_error():
+def test_update_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -13217,11 +24463,11 @@ def test_start_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.StartWithEncryptionKeyInstanceRequest,
+ compute.UpdateInstanceRequest,
dict,
],
)
-def test_start_with_encryption_key_unary_rest(request_type):
+def test_update_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -13229,9 +24475,23 @@ def test_start_with_encryption_key_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_start_with_encryption_key_request_resource"] = {
+ request_init["instance_resource"] = {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "cpu_platform": "cpu_platform_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "deletion_protection": True,
+ "description": "description_value",
"disks": [
{
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
"disk_encryption_key": {
"kms_key_name": "kms_key_name_value",
"kms_key_service_account": "kms_key_service_account_value",
@@ -13239,9 +24499,148 @@ def test_start_with_encryption_key_unary_rest(request_type):
"rsa_encrypted_key": "rsa_encrypted_key_value",
"sha256": "sha256_value",
},
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
"source": "source_value",
+ "type_": "type__value",
}
- ]
+ ],
+ "display_device": {"enable_display": True},
+ "fingerprint": "fingerprint_value",
+ "guest_accelerators": [
+ {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
+ ],
+ "hostname": "hostname_value",
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_start_timestamp": "last_start_timestamp_value",
+ "last_stop_timestamp": "last_stop_timestamp_value",
+ "last_suspended_timestamp": "last_suspended_timestamp_value",
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "name": "name_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "params": {"resource_manager_tags": {}},
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "self_link": "self_link_value",
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "shielded_instance_integrity_policy": {"update_auto_learn_policy": True},
+ "source_machine_image": "source_machine_image_value",
+ "source_machine_image_encryption_key": {},
+ "start_restricted": True,
+ "status": "status_value",
+ "status_message": "status_message_value",
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ "zone": "zone_value",
}
request = request_type(request_init)
@@ -13279,37 +24678,13 @@ def test_start_with_encryption_key_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.start_with_encryption_key_unary(request)
+ response = client.update_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_start_with_encryption_key_unary_rest_required_fields(
- request_type=compute.StartWithEncryptionKeyInstanceRequest,
-):
+def test_update_unary_rest_required_fields(request_type=compute.UpdateInstanceRequest):
transport_class = transports.InstancesRestTransport
request_init = {}
@@ -13327,7 +24702,7 @@ def test_start_with_encryption_key_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).start_with_encryption_key._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -13338,9 +24713,15 @@ def test_start_with_encryption_key_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).start_with_encryption_key._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "minimal_action",
+ "most_disruptive_allowed_action",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -13369,7 +24750,7 @@ def test_start_with_encryption_key_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "put",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -13381,25 +24762,31 @@ def test_start_with_encryption_key_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.start_with_encryption_key_unary(request)
+ response = client.update_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_start_with_encryption_key_unary_rest_unset_required_fields():
+def test_update_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.start_with_encryption_key._get_unset_required_fields({})
+ unset_fields = transport.update._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "minimalAction",
+ "mostDisruptiveAllowedAction",
+ "requestId",
+ )
+ )
& set(
(
"instance",
- "instancesStartWithEncryptionKeyRequestResource",
+ "instanceResource",
"project",
"zone",
)
@@ -13408,7 +24795,7 @@ def test_start_with_encryption_key_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_start_with_encryption_key_unary_rest_interceptors(null_interceptor):
+def test_update_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -13419,9 +24806,9 @@ def test_start_with_encryption_key_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_start_with_encryption_key"
+ transports.InstancesRestInterceptor, "post_update"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_start_with_encryption_key"
+ transports.InstancesRestInterceptor, "pre_update"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -13438,7 +24825,7 @@ def test_start_with_encryption_key_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.StartWithEncryptionKeyInstanceRequest()
+ request = compute.UpdateInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -13446,7 +24833,7 @@ def test_start_with_encryption_key_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.start_with_encryption_key_unary(
+ client.update_unary(
request,
metadata=[
("key", "val"),
@@ -13458,8 +24845,8 @@ def test_start_with_encryption_key_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_start_with_encryption_key_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.StartWithEncryptionKeyInstanceRequest
+def test_update_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -13468,9 +24855,23 @@ def test_start_with_encryption_key_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instances_start_with_encryption_key_request_resource"] = {
+ request_init["instance_resource"] = {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "cpu_platform": "cpu_platform_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "deletion_protection": True,
+ "description": "description_value",
"disks": [
{
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
"disk_encryption_key": {
"kms_key_name": "kms_key_name_value",
"kms_key_service_account": "kms_key_service_account_value",
@@ -13478,9 +24879,148 @@ def test_start_with_encryption_key_unary_rest_bad_request(
"rsa_encrypted_key": "rsa_encrypted_key_value",
"sha256": "sha256_value",
},
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
"source": "source_value",
+ "type_": "type__value",
}
- ]
+ ],
+ "display_device": {"enable_display": True},
+ "fingerprint": "fingerprint_value",
+ "guest_accelerators": [
+ {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
+ ],
+ "hostname": "hostname_value",
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_start_timestamp": "last_start_timestamp_value",
+ "last_stop_timestamp": "last_stop_timestamp_value",
+ "last_suspended_timestamp": "last_suspended_timestamp_value",
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "name": "name_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "params": {"resource_manager_tags": {}},
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "self_link": "self_link_value",
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "shielded_instance_integrity_policy": {"update_auto_learn_policy": True},
+ "source_machine_image": "source_machine_image_value",
+ "source_machine_image_encryption_key": {},
+ "start_restricted": True,
+ "status": "status_value",
+ "status_message": "status_message_value",
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ "zone": "zone_value",
}
request = request_type(request_init)
@@ -13493,10 +25033,10 @@ def test_start_with_encryption_key_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.start_with_encryption_key_unary(request)
+ client.update_unary(request)
-def test_start_with_encryption_key_unary_rest_flattened():
+def test_update_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -13519,14 +25059,10 @@ def test_start_with_encryption_key_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_start_with_encryption_key_request_resource=compute.InstancesStartWithEncryptionKeyRequest(
- disks=[
- compute.CustomerEncryptionKeyProtectedDisk(
- disk_encryption_key=compute.CustomerEncryptionKey(
- kms_key_name="kms_key_name_value"
- )
- )
- ]
+ instance_resource=compute.Instance(
+ advanced_machine_features=compute.AdvancedMachineFeatures(
+ enable_nested_virtualization=True
+ )
),
)
mock_args.update(sample_request)
@@ -13539,20 +25075,20 @@ def test_start_with_encryption_key_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.start_with_encryption_key_unary(**mock_args)
+ client.update_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/startWithEncryptionKey"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}"
% client.transport._host,
args[1],
)
-def test_start_with_encryption_key_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -13561,24 +25097,20 @@ def test_start_with_encryption_key_unary_rest_flattened_error(transport: str = "
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.start_with_encryption_key_unary(
- compute.StartWithEncryptionKeyInstanceRequest(),
+ client.update_unary(
+ compute.UpdateInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- instances_start_with_encryption_key_request_resource=compute.InstancesStartWithEncryptionKeyRequest(
- disks=[
- compute.CustomerEncryptionKeyProtectedDisk(
- disk_encryption_key=compute.CustomerEncryptionKey(
- kms_key_name="kms_key_name_value"
- )
- )
- ]
+ instance_resource=compute.Instance(
+ advanced_machine_features=compute.AdvancedMachineFeatures(
+ enable_nested_virtualization=True
+ )
),
)
-def test_start_with_encryption_key_unary_rest_error():
+def test_update_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -13587,11 +25119,11 @@ def test_start_with_encryption_key_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.StopInstanceRequest,
+ compute.UpdateAccessConfigInstanceRequest,
dict,
],
)
-def test_stop_unary_rest(request_type):
+def test_update_access_config_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -13599,6 +25131,17 @@ def test_stop_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["access_config_resource"] = {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -13635,10 +25178,10 @@ def test_stop_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.stop_unary(request)
+ response = client.update_access_config(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -13663,11 +25206,14 @@ def test_stop_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_stop_unary_rest_required_fields(request_type=compute.StopInstanceRequest):
+def test_update_access_config_rest_required_fields(
+ request_type=compute.UpdateAccessConfigInstanceRequest,
+):
transport_class = transports.InstancesRestTransport
request_init = {}
request_init["instance"] = ""
+ request_init["network_interface"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -13678,28 +25224,39 @@ def test_stop_unary_rest_required_fields(request_type=compute.StopInstanceReques
)
# verify fields with default values are dropped
+ assert "networkInterface" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).stop._get_unset_required_fields(jsonified_request)
+ ).update_access_config._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ assert "networkInterface" in jsonified_request
+ assert jsonified_request["networkInterface"] == request_init["network_interface"]
jsonified_request["instance"] = "instance_value"
+ jsonified_request["networkInterface"] = "network_interface_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).stop._get_unset_required_fields(jsonified_request)
+ ).update_access_config._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "network_interface",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "instance" in jsonified_request
assert jsonified_request["instance"] == "instance_value"
+ assert "networkInterface" in jsonified_request
+ assert jsonified_request["networkInterface"] == "network_interface_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -13726,6 +25283,7 @@ def test_stop_unary_rest_required_fields(request_type=compute.StopInstanceReques
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -13734,24 +25292,36 @@ def test_stop_unary_rest_required_fields(request_type=compute.StopInstanceReques
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.stop_unary(request)
+ response = client.update_access_config(request)
- expected_params = []
+ expected_params = [
+ (
+ "networkInterface",
+ "",
+ ),
+ ]
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_stop_unary_rest_unset_required_fields():
+def test_update_access_config_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.stop._get_unset_required_fields({})
+ unset_fields = transport.update_access_config._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "networkInterface",
+ "requestId",
+ )
+ )
& set(
(
+ "accessConfigResource",
"instance",
+ "networkInterface",
"project",
"zone",
)
@@ -13760,7 +25330,7 @@ def test_stop_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_stop_unary_rest_interceptors(null_interceptor):
+def test_update_access_config_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -13771,9 +25341,9 @@ def test_stop_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_stop"
+ transports.InstancesRestInterceptor, "post_update_access_config"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_stop"
+ transports.InstancesRestInterceptor, "pre_update_access_config"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -13790,7 +25360,7 @@ def test_stop_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.StopInstanceRequest()
+ request = compute.UpdateAccessConfigInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -13798,7 +25368,7 @@ def test_stop_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.stop_unary(
+ client.update_access_config(
request,
metadata=[
("key", "val"),
@@ -13810,8 +25380,8 @@ def test_stop_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_stop_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.StopInstanceRequest
+def test_update_access_config_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateAccessConfigInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -13820,6 +25390,17 @@ def test_stop_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["access_config_resource"] = {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -13831,10 +25412,10 @@ def test_stop_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.stop_unary(request)
+ client.update_access_config(request)
-def test_stop_unary_rest_flattened():
+def test_update_access_config_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -13857,6 +25438,10 @@ def test_stop_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
+ network_interface="network_interface_value",
+ access_config_resource=compute.AccessConfig(
+ external_ipv6="external_ipv6_value"
+ ),
)
mock_args.update(sample_request)
@@ -13868,20 +25453,20 @@ def test_stop_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.stop_unary(**mock_args)
+ client.update_access_config(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/stop"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateAccessConfig"
% client.transport._host,
args[1],
)
-def test_stop_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_access_config_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -13890,15 +25475,19 @@ def test_stop_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.stop_unary(
- compute.StopInstanceRequest(),
+ client.update_access_config(
+ compute.UpdateAccessConfigInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
+ network_interface="network_interface_value",
+ access_config_resource=compute.AccessConfig(
+ external_ipv6="external_ipv6_value"
+ ),
)
-def test_stop_unary_rest_error():
+def test_update_access_config_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -13907,11 +25496,11 @@ def test_stop_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SuspendInstanceRequest,
+ compute.UpdateAccessConfigInstanceRequest,
dict,
],
)
-def test_suspend_unary_rest(request_type):
+def test_update_access_config_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -13919,6 +25508,17 @@ def test_suspend_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["access_config_resource"] = {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -13955,41 +25555,20 @@ def test_suspend_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.suspend_unary(request)
+ response = client.update_access_config_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_suspend_unary_rest_required_fields(
- request_type=compute.SuspendInstanceRequest,
+def test_update_access_config_unary_rest_required_fields(
+ request_type=compute.UpdateAccessConfigInstanceRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
request_init["instance"] = ""
+ request_init["network_interface"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -14000,28 +25579,39 @@ def test_suspend_unary_rest_required_fields(
)
# verify fields with default values are dropped
+ assert "networkInterface" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).suspend._get_unset_required_fields(jsonified_request)
+ ).update_access_config._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ assert "networkInterface" in jsonified_request
+ assert jsonified_request["networkInterface"] == request_init["network_interface"]
jsonified_request["instance"] = "instance_value"
+ jsonified_request["networkInterface"] = "network_interface_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).suspend._get_unset_required_fields(jsonified_request)
+ ).update_access_config._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "network_interface",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "instance" in jsonified_request
assert jsonified_request["instance"] == "instance_value"
+ assert "networkInterface" in jsonified_request
+ assert jsonified_request["networkInterface"] == "network_interface_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -14048,6 +25638,7 @@ def test_suspend_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -14056,24 +25647,36 @@ def test_suspend_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.suspend_unary(request)
+ response = client.update_access_config_unary(request)
- expected_params = []
+ expected_params = [
+ (
+ "networkInterface",
+ "",
+ ),
+ ]
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_suspend_unary_rest_unset_required_fields():
+def test_update_access_config_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.suspend._get_unset_required_fields({})
+ unset_fields = transport.update_access_config._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "networkInterface",
+ "requestId",
+ )
+ )
& set(
(
+ "accessConfigResource",
"instance",
+ "networkInterface",
"project",
"zone",
)
@@ -14082,7 +25685,7 @@ def test_suspend_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_suspend_unary_rest_interceptors(null_interceptor):
+def test_update_access_config_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -14093,9 +25696,9 @@ def test_suspend_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_suspend"
+ transports.InstancesRestInterceptor, "post_update_access_config"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_suspend"
+ transports.InstancesRestInterceptor, "pre_update_access_config"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -14112,7 +25715,7 @@ def test_suspend_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SuspendInstanceRequest()
+ request = compute.UpdateAccessConfigInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -14120,7 +25723,7 @@ def test_suspend_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.suspend_unary(
+ client.update_access_config_unary(
request,
metadata=[
("key", "val"),
@@ -14132,8 +25735,8 @@ def test_suspend_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_suspend_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SuspendInstanceRequest
+def test_update_access_config_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateAccessConfigInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -14142,6 +25745,17 @@ def test_suspend_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["access_config_resource"] = {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -14153,10 +25767,10 @@ def test_suspend_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.suspend_unary(request)
+ client.update_access_config_unary(request)
-def test_suspend_unary_rest_flattened():
+def test_update_access_config_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -14179,6 +25793,10 @@ def test_suspend_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
+ network_interface="network_interface_value",
+ access_config_resource=compute.AccessConfig(
+ external_ipv6="external_ipv6_value"
+ ),
)
mock_args.update(sample_request)
@@ -14190,20 +25808,20 @@ def test_suspend_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.suspend_unary(**mock_args)
+ client.update_access_config_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/suspend"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateAccessConfig"
% client.transport._host,
args[1],
)
-def test_suspend_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_access_config_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -14212,15 +25830,19 @@ def test_suspend_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.suspend_unary(
- compute.SuspendInstanceRequest(),
+ client.update_access_config_unary(
+ compute.UpdateAccessConfigInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
+ network_interface="network_interface_value",
+ access_config_resource=compute.AccessConfig(
+ external_ipv6="external_ipv6_value"
+ ),
)
-def test_suspend_unary_rest_error():
+def test_update_access_config_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -14229,51 +25851,91 @@ def test_suspend_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.TestIamPermissionsInstanceRequest,
+ compute.UpdateDisplayDeviceInstanceRequest,
dict,
],
)
-def test_test_iam_permissions_rest(request_type):
+def test_update_display_device_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
- request_init["test_permissions_request_resource"] = {
- "permissions": ["permissions_value_1", "permissions_value_2"]
- }
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["display_device_resource"] = {"enable_display": True}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TestPermissionsResponse(
- permissions=["permissions_value"],
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TestPermissionsResponse.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.test_iam_permissions(request)
+ response = client.update_display_device(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.TestPermissionsResponse)
- assert response.permissions == ["permissions_value"]
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_test_iam_permissions_rest_required_fields(
- request_type=compute.TestIamPermissionsInstanceRequest,
+def test_update_display_device_rest_required_fields(
+ request_type=compute.UpdateDisplayDeviceInstanceRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
+ request_init["instance"] = ""
request_init["project"] = ""
- request_init["resource"] = ""
request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -14286,25 +25948,27 @@ def test_test_iam_permissions_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).test_iam_permissions._get_unset_required_fields(jsonified_request)
+ ).update_display_device._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["instance"] = "instance_value"
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).test_iam_permissions._get_unset_required_fields(jsonified_request)
+ ).update_display_device._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "instance" in jsonified_request
+ assert jsonified_request["instance"] == "instance_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
assert "zone" in jsonified_request
assert jsonified_request["zone"] == "zone_value"
@@ -14315,7 +25979,7 @@ def test_test_iam_permissions_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.TestPermissionsResponse()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -14326,7 +25990,7 @@ def test_test_iam_permissions_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "patch",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -14334,30 +25998,30 @@ def test_test_iam_permissions_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TestPermissionsResponse.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.test_iam_permissions(request)
+ response = client.update_display_device(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_test_iam_permissions_rest_unset_required_fields():
+def test_update_display_device_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.test_iam_permissions._get_unset_required_fields({})
+ unset_fields = transport.update_display_device._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
+ "displayDeviceResource",
+ "instance",
"project",
- "resource",
- "testPermissionsRequestResource",
"zone",
)
)
@@ -14365,7 +26029,7 @@ def test_test_iam_permissions_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_test_iam_permissions_rest_interceptors(null_interceptor):
+def test_update_display_device_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -14376,9 +26040,9 @@ def test_test_iam_permissions_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_test_iam_permissions"
+ transports.InstancesRestInterceptor, "post_update_display_device"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_test_iam_permissions"
+ transports.InstancesRestInterceptor, "pre_update_display_device"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -14393,19 +26057,17 @@ def test_test_iam_permissions_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.TestPermissionsResponse.to_json(
- compute.TestPermissionsResponse()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.TestIamPermissionsInstanceRequest()
+ request = compute.UpdateDisplayDeviceInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.TestPermissionsResponse
+ post.return_value = compute.Operation
- client.test_iam_permissions(
+ client.update_display_device(
request,
metadata=[
("key", "val"),
@@ -14417,8 +26079,8 @@ def test_test_iam_permissions_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_test_iam_permissions_rest_bad_request(
- transport: str = "rest", request_type=compute.TestIamPermissionsInstanceRequest
+def test_update_display_device_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateDisplayDeviceInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -14426,10 +26088,8 @@ def test_test_iam_permissions_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
- request_init["test_permissions_request_resource"] = {
- "permissions": ["permissions_value_1", "permissions_value_2"]
- }
+ request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
+ request_init["display_device_resource"] = {"enable_display": True}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -14441,10 +26101,10 @@ def test_test_iam_permissions_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.test_iam_permissions(request)
+ client.update_display_device(request)
-def test_test_iam_permissions_rest_flattened():
+def test_update_display_device_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -14453,48 +26113,46 @@ def test_test_iam_permissions_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TestPermissionsResponse()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
"project": "sample1",
"zone": "sample2",
- "resource": "sample3",
+ "instance": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- resource="resource_value",
- test_permissions_request_resource=compute.TestPermissionsRequest(
- permissions=["permissions_value"]
- ),
+ instance="instance_value",
+ display_device_resource=compute.DisplayDevice(enable_display=True),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TestPermissionsResponse.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.test_iam_permissions(**mock_args)
+ client.update_display_device(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{resource}/testIamPermissions"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateDisplayDevice"
% client.transport._host,
args[1],
)
-def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"):
+def test_update_display_device_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -14503,18 +26161,16 @@ def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.test_iam_permissions(
- compute.TestIamPermissionsInstanceRequest(),
+ client.update_display_device(
+ compute.UpdateDisplayDeviceInstanceRequest(),
project="project_value",
zone="zone_value",
- resource="resource_value",
- test_permissions_request_resource=compute.TestPermissionsRequest(
- permissions=["permissions_value"]
- ),
+ instance="instance_value",
+ display_device_resource=compute.DisplayDevice(enable_display=True),
)
-def test_test_iam_permissions_rest_error():
+def test_update_display_device_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -14523,11 +26179,11 @@ def test_test_iam_permissions_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.UpdateInstanceRequest,
+ compute.UpdateDisplayDeviceInstanceRequest,
dict,
],
)
-def test_update_unary_rest(request_type):
+def test_update_display_device_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -14535,173 +26191,7 @@ def test_update_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instance_resource"] = {
- "advanced_machine_features": {
- "enable_nested_virtualization": True,
- "enable_uefi_networking": True,
- "threads_per_core": 1689,
- },
- "can_ip_forward": True,
- "confidential_instance_config": {"enable_confidential_compute": True},
- "cpu_platform": "cpu_platform_value",
- "creation_timestamp": "creation_timestamp_value",
- "deletion_protection": True,
- "description": "description_value",
- "disks": [
- {
- "auto_delete": True,
- "boot": True,
- "device_name": "device_name_value",
- "disk_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "disk_size_gb": 1261,
- "guest_os_features": [{"type_": "type__value"}],
- "index": 536,
- "initialize_params": {
- "description": "description_value",
- "disk_name": "disk_name_value",
- "disk_size_gb": 1261,
- "disk_type": "disk_type_value",
- "labels": {},
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "on_update_action": "on_update_action_value",
- "provisioned_iops": 1740,
- "resource_policies": [
- "resource_policies_value_1",
- "resource_policies_value_2",
- ],
- "source_image": "source_image_value",
- "source_image_encryption_key": {},
- "source_snapshot": "source_snapshot_value",
- "source_snapshot_encryption_key": {},
- },
- "interface": "interface_value",
- "kind": "kind_value",
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "mode": "mode_value",
- "shielded_instance_initial_state": {
- "dbs": [
- {"content": "content_value", "file_type": "file_type_value"}
- ],
- "dbxs": {},
- "keks": {},
- "pk": {},
- },
- "source": "source_value",
- "type_": "type__value",
- }
- ],
- "display_device": {"enable_display": True},
- "fingerprint": "fingerprint_value",
- "guest_accelerators": [
- {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
- ],
- "hostname": "hostname_value",
- "id": 205,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "last_start_timestamp": "last_start_timestamp_value",
- "last_stop_timestamp": "last_stop_timestamp_value",
- "last_suspended_timestamp": "last_suspended_timestamp_value",
- "machine_type": "machine_type_value",
- "metadata": {
- "fingerprint": "fingerprint_value",
- "items": [{"key": "key_value", "value": "value_value"}],
- "kind": "kind_value",
- },
- "min_cpu_platform": "min_cpu_platform_value",
- "name": "name_value",
- "network_interfaces": [
- {
- "access_configs": [
- {
- "external_ipv6": "external_ipv6_value",
- "external_ipv6_prefix_length": 2837,
- "kind": "kind_value",
- "name": "name_value",
- "nat_i_p": "nat_i_p_value",
- "network_tier": "network_tier_value",
- "public_ptr_domain_name": "public_ptr_domain_name_value",
- "set_public_ptr": True,
- "type_": "type__value",
- }
- ],
- "alias_ip_ranges": [
- {
- "ip_cidr_range": "ip_cidr_range_value",
- "subnetwork_range_name": "subnetwork_range_name_value",
- }
- ],
- "fingerprint": "fingerprint_value",
- "internal_ipv6_prefix_length": 2831,
- "ipv6_access_configs": {},
- "ipv6_access_type": "ipv6_access_type_value",
- "ipv6_address": "ipv6_address_value",
- "kind": "kind_value",
- "name": "name_value",
- "network": "network_value",
- "network_i_p": "network_i_p_value",
- "nic_type": "nic_type_value",
- "queue_count": 1197,
- "stack_type": "stack_type_value",
- "subnetwork": "subnetwork_value",
- }
- ],
- "network_performance_config": {
- "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
- },
- "params": {"resource_manager_tags": {}},
- "private_ipv6_google_access": "private_ipv6_google_access_value",
- "reservation_affinity": {
- "consume_reservation_type": "consume_reservation_type_value",
- "key": "key_value",
- "values": ["values_value_1", "values_value_2"],
- },
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
- "satisfies_pzs": True,
- "scheduling": {
- "automatic_restart": True,
- "instance_termination_action": "instance_termination_action_value",
- "location_hint": "location_hint_value",
- "min_node_cpus": 1379,
- "node_affinities": [
- {
- "key": "key_value",
- "operator": "operator_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "on_host_maintenance": "on_host_maintenance_value",
- "preemptible": True,
- "provisioning_model": "provisioning_model_value",
- },
- "self_link": "self_link_value",
- "service_accounts": [
- {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
- ],
- "shielded_instance_config": {
- "enable_integrity_monitoring": True,
- "enable_secure_boot": True,
- "enable_vtpm": True,
- },
- "shielded_instance_integrity_policy": {"update_auto_learn_policy": True},
- "source_machine_image": "source_machine_image_value",
- "source_machine_image_encryption_key": {},
- "start_restricted": True,
- "status": "status_value",
- "status_message": "status_message_value",
- "tags": {
- "fingerprint": "fingerprint_value",
- "items": ["items_value_1", "items_value_2"],
- },
- "zone": "zone_value",
- }
+ request_init["display_device_resource"] = {"enable_display": True}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -14730,43 +26220,23 @@ def test_update_unary_rest(request_type):
target_link="target_link_value",
user="user_value",
zone="zone_value",
- )
-
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
- response_value._content = json_return_value.encode("UTF-8")
- req.return_value = response_value
- response = client.update_unary(request)
-
- # Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.update_display_device_unary(request)
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
-def test_update_unary_rest_required_fields(request_type=compute.UpdateInstanceRequest):
+
+def test_update_display_device_unary_rest_required_fields(
+ request_type=compute.UpdateDisplayDeviceInstanceRequest,
+):
transport_class = transports.InstancesRestTransport
request_init = {}
@@ -14784,7 +26254,7 @@ def test_update_unary_rest_required_fields(request_type=compute.UpdateInstanceRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).update._get_unset_required_fields(jsonified_request)
+ ).update_display_device._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -14795,15 +26265,9 @@ def test_update_unary_rest_required_fields(request_type=compute.UpdateInstanceRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).update._get_unset_required_fields(jsonified_request)
+ ).update_display_device._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "minimal_action",
- "most_disruptive_allowed_action",
- "request_id",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -14832,7 +26296,7 @@ def test_update_unary_rest_required_fields(request_type=compute.UpdateInstanceRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "put",
+ "method": "patch",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -14844,31 +26308,25 @@ def test_update_unary_rest_required_fields(request_type=compute.UpdateInstanceRe
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.update_unary(request)
+ response = client.update_display_device_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_update_unary_rest_unset_required_fields():
+def test_update_display_device_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.update._get_unset_required_fields({})
+ unset_fields = transport.update_display_device._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "minimalAction",
- "mostDisruptiveAllowedAction",
- "requestId",
- )
- )
+ set(("requestId",))
& set(
(
+ "displayDeviceResource",
"instance",
- "instanceResource",
"project",
"zone",
)
@@ -14877,7 +26335,7 @@ def test_update_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_update_unary_rest_interceptors(null_interceptor):
+def test_update_display_device_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -14888,9 +26346,9 @@ def test_update_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_update"
+ transports.InstancesRestInterceptor, "post_update_display_device"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_update"
+ transports.InstancesRestInterceptor, "pre_update_display_device"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -14907,7 +26365,7 @@ def test_update_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.UpdateInstanceRequest()
+ request = compute.UpdateDisplayDeviceInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -14915,7 +26373,7 @@ def test_update_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.update_unary(
+ client.update_display_device_unary(
request,
metadata=[
("key", "val"),
@@ -14927,8 +26385,8 @@ def test_update_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_update_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.UpdateInstanceRequest
+def test_update_display_device_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateDisplayDeviceInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -14937,173 +26395,7 @@ def test_update_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["instance_resource"] = {
- "advanced_machine_features": {
- "enable_nested_virtualization": True,
- "enable_uefi_networking": True,
- "threads_per_core": 1689,
- },
- "can_ip_forward": True,
- "confidential_instance_config": {"enable_confidential_compute": True},
- "cpu_platform": "cpu_platform_value",
- "creation_timestamp": "creation_timestamp_value",
- "deletion_protection": True,
- "description": "description_value",
- "disks": [
- {
- "auto_delete": True,
- "boot": True,
- "device_name": "device_name_value",
- "disk_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "disk_size_gb": 1261,
- "guest_os_features": [{"type_": "type__value"}],
- "index": 536,
- "initialize_params": {
- "description": "description_value",
- "disk_name": "disk_name_value",
- "disk_size_gb": 1261,
- "disk_type": "disk_type_value",
- "labels": {},
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "on_update_action": "on_update_action_value",
- "provisioned_iops": 1740,
- "resource_policies": [
- "resource_policies_value_1",
- "resource_policies_value_2",
- ],
- "source_image": "source_image_value",
- "source_image_encryption_key": {},
- "source_snapshot": "source_snapshot_value",
- "source_snapshot_encryption_key": {},
- },
- "interface": "interface_value",
- "kind": "kind_value",
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "mode": "mode_value",
- "shielded_instance_initial_state": {
- "dbs": [
- {"content": "content_value", "file_type": "file_type_value"}
- ],
- "dbxs": {},
- "keks": {},
- "pk": {},
- },
- "source": "source_value",
- "type_": "type__value",
- }
- ],
- "display_device": {"enable_display": True},
- "fingerprint": "fingerprint_value",
- "guest_accelerators": [
- {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
- ],
- "hostname": "hostname_value",
- "id": 205,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "last_start_timestamp": "last_start_timestamp_value",
- "last_stop_timestamp": "last_stop_timestamp_value",
- "last_suspended_timestamp": "last_suspended_timestamp_value",
- "machine_type": "machine_type_value",
- "metadata": {
- "fingerprint": "fingerprint_value",
- "items": [{"key": "key_value", "value": "value_value"}],
- "kind": "kind_value",
- },
- "min_cpu_platform": "min_cpu_platform_value",
- "name": "name_value",
- "network_interfaces": [
- {
- "access_configs": [
- {
- "external_ipv6": "external_ipv6_value",
- "external_ipv6_prefix_length": 2837,
- "kind": "kind_value",
- "name": "name_value",
- "nat_i_p": "nat_i_p_value",
- "network_tier": "network_tier_value",
- "public_ptr_domain_name": "public_ptr_domain_name_value",
- "set_public_ptr": True,
- "type_": "type__value",
- }
- ],
- "alias_ip_ranges": [
- {
- "ip_cidr_range": "ip_cidr_range_value",
- "subnetwork_range_name": "subnetwork_range_name_value",
- }
- ],
- "fingerprint": "fingerprint_value",
- "internal_ipv6_prefix_length": 2831,
- "ipv6_access_configs": {},
- "ipv6_access_type": "ipv6_access_type_value",
- "ipv6_address": "ipv6_address_value",
- "kind": "kind_value",
- "name": "name_value",
- "network": "network_value",
- "network_i_p": "network_i_p_value",
- "nic_type": "nic_type_value",
- "queue_count": 1197,
- "stack_type": "stack_type_value",
- "subnetwork": "subnetwork_value",
- }
- ],
- "network_performance_config": {
- "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
- },
- "params": {"resource_manager_tags": {}},
- "private_ipv6_google_access": "private_ipv6_google_access_value",
- "reservation_affinity": {
- "consume_reservation_type": "consume_reservation_type_value",
- "key": "key_value",
- "values": ["values_value_1", "values_value_2"],
- },
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
- "satisfies_pzs": True,
- "scheduling": {
- "automatic_restart": True,
- "instance_termination_action": "instance_termination_action_value",
- "location_hint": "location_hint_value",
- "min_node_cpus": 1379,
- "node_affinities": [
- {
- "key": "key_value",
- "operator": "operator_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "on_host_maintenance": "on_host_maintenance_value",
- "preemptible": True,
- "provisioning_model": "provisioning_model_value",
- },
- "self_link": "self_link_value",
- "service_accounts": [
- {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
- ],
- "shielded_instance_config": {
- "enable_integrity_monitoring": True,
- "enable_secure_boot": True,
- "enable_vtpm": True,
- },
- "shielded_instance_integrity_policy": {"update_auto_learn_policy": True},
- "source_machine_image": "source_machine_image_value",
- "source_machine_image_encryption_key": {},
- "start_restricted": True,
- "status": "status_value",
- "status_message": "status_message_value",
- "tags": {
- "fingerprint": "fingerprint_value",
- "items": ["items_value_1", "items_value_2"],
- },
- "zone": "zone_value",
- }
+ request_init["display_device_resource"] = {"enable_display": True}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -15115,10 +26407,10 @@ def test_update_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.update_unary(request)
+ client.update_display_device_unary(request)
-def test_update_unary_rest_flattened():
+def test_update_display_device_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -15141,11 +26433,7 @@ def test_update_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- instance_resource=compute.Instance(
- advanced_machine_features=compute.AdvancedMachineFeatures(
- enable_nested_virtualization=True
- )
- ),
+ display_device_resource=compute.DisplayDevice(enable_display=True),
)
mock_args.update(sample_request)
@@ -15157,20 +26445,20 @@ def test_update_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.update_unary(**mock_args)
+ client.update_display_device_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateDisplayDevice"
% client.transport._host,
args[1],
)
-def test_update_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_display_device_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -15179,20 +26467,16 @@ def test_update_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.update_unary(
- compute.UpdateInstanceRequest(),
+ client.update_display_device_unary(
+ compute.UpdateDisplayDeviceInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- instance_resource=compute.Instance(
- advanced_machine_features=compute.AdvancedMachineFeatures(
- enable_nested_virtualization=True
- )
- ),
+ display_device_resource=compute.DisplayDevice(enable_display=True),
)
-def test_update_unary_rest_error():
+def test_update_display_device_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -15201,11 +26485,11 @@ def test_update_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.UpdateAccessConfigInstanceRequest,
+ compute.UpdateNetworkInterfaceInstanceRequest,
dict,
],
)
-def test_update_access_config_unary_rest(request_type):
+def test_update_network_interface_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -15213,16 +26497,39 @@ def test_update_access_config_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["access_config_resource"] = {
- "external_ipv6": "external_ipv6_value",
- "external_ipv6_prefix_length": 2837,
+ request_init["network_interface_resource"] = {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
"kind": "kind_value",
"name": "name_value",
- "nat_i_p": "nat_i_p_value",
- "network_tier": "network_tier_value",
- "public_ptr_domain_name": "public_ptr_domain_name_value",
- "set_public_ptr": True,
- "type_": "type__value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
}
request = request_type(request_init)
@@ -15260,10 +26567,10 @@ def test_update_access_config_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.update_access_config_unary(request)
+ response = client.update_network_interface(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -15288,8 +26595,8 @@ def test_update_access_config_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_update_access_config_unary_rest_required_fields(
- request_type=compute.UpdateAccessConfigInstanceRequest,
+def test_update_network_interface_rest_required_fields(
+ request_type=compute.UpdateNetworkInterfaceInstanceRequest,
):
transport_class = transports.InstancesRestTransport
@@ -15310,7 +26617,7 @@ def test_update_access_config_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).update_access_config._get_unset_required_fields(jsonified_request)
+ ).update_network_interface._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -15324,7 +26631,7 @@ def test_update_access_config_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).update_access_config._get_unset_required_fields(jsonified_request)
+ ).update_network_interface._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
@@ -15362,7 +26669,7 @@ def test_update_access_config_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "patch",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -15374,7 +26681,7 @@ def test_update_access_config_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.update_access_config_unary(request)
+ response = client.update_network_interface(request)
expected_params = [
(
@@ -15386,12 +26693,12 @@ def test_update_access_config_unary_rest_required_fields(
assert expected_params == actual_params
-def test_update_access_config_unary_rest_unset_required_fields():
+def test_update_network_interface_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.update_access_config._get_unset_required_fields({})
+ unset_fields = transport.update_network_interface._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
@@ -15401,9 +26708,9 @@ def test_update_access_config_unary_rest_unset_required_fields():
)
& set(
(
- "accessConfigResource",
"instance",
"networkInterface",
+ "networkInterfaceResource",
"project",
"zone",
)
@@ -15412,7 +26719,7 @@ def test_update_access_config_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_update_access_config_unary_rest_interceptors(null_interceptor):
+def test_update_network_interface_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -15423,9 +26730,9 @@ def test_update_access_config_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_update_access_config"
+ transports.InstancesRestInterceptor, "post_update_network_interface"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_update_access_config"
+ transports.InstancesRestInterceptor, "pre_update_network_interface"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -15442,7 +26749,7 @@ def test_update_access_config_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.UpdateAccessConfigInstanceRequest()
+ request = compute.UpdateNetworkInterfaceInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -15450,7 +26757,7 @@ def test_update_access_config_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.update_access_config_unary(
+ client.update_network_interface(
request,
metadata=[
("key", "val"),
@@ -15462,8 +26769,8 @@ def test_update_access_config_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_update_access_config_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.UpdateAccessConfigInstanceRequest
+def test_update_network_interface_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateNetworkInterfaceInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -15472,16 +26779,39 @@ def test_update_access_config_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["access_config_resource"] = {
- "external_ipv6": "external_ipv6_value",
- "external_ipv6_prefix_length": 2837,
+ request_init["network_interface_resource"] = {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
"kind": "kind_value",
"name": "name_value",
- "nat_i_p": "nat_i_p_value",
- "network_tier": "network_tier_value",
- "public_ptr_domain_name": "public_ptr_domain_name_value",
- "set_public_ptr": True,
- "type_": "type__value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
}
request = request_type(request_init)
@@ -15494,10 +26824,10 @@ def test_update_access_config_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.update_access_config_unary(request)
+ client.update_network_interface(request)
-def test_update_access_config_unary_rest_flattened():
+def test_update_network_interface_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -15521,8 +26851,10 @@ def test_update_access_config_unary_rest_flattened():
zone="zone_value",
instance="instance_value",
network_interface="network_interface_value",
- access_config_resource=compute.AccessConfig(
- external_ipv6="external_ipv6_value"
+ network_interface_resource=compute.NetworkInterface(
+ access_configs=[
+ compute.AccessConfig(external_ipv6="external_ipv6_value")
+ ]
),
)
mock_args.update(sample_request)
@@ -15535,20 +26867,20 @@ def test_update_access_config_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.update_access_config_unary(**mock_args)
+ client.update_network_interface(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateAccessConfig"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateNetworkInterface"
% client.transport._host,
args[1],
)
-def test_update_access_config_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_network_interface_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -15557,19 +26889,21 @@ def test_update_access_config_unary_rest_flattened_error(transport: str = "rest"
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.update_access_config_unary(
- compute.UpdateAccessConfigInstanceRequest(),
+ client.update_network_interface(
+ compute.UpdateNetworkInterfaceInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
network_interface="network_interface_value",
- access_config_resource=compute.AccessConfig(
- external_ipv6="external_ipv6_value"
+ network_interface_resource=compute.NetworkInterface(
+ access_configs=[
+ compute.AccessConfig(external_ipv6="external_ipv6_value")
+ ]
),
)
-def test_update_access_config_unary_rest_error():
+def test_update_network_interface_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -15578,11 +26912,11 @@ def test_update_access_config_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.UpdateDisplayDeviceInstanceRequest,
+ compute.UpdateNetworkInterfaceInstanceRequest,
dict,
],
)
-def test_update_display_device_unary_rest(request_type):
+def test_update_network_interface_unary_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -15590,7 +26924,40 @@ def test_update_display_device_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["display_device_resource"] = {"enable_display": True}
+ request_init["network_interface_resource"] = {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -15627,41 +26994,20 @@ def test_update_display_device_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.update_display_device_unary(request)
+ response = client.update_network_interface_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_update_display_device_unary_rest_required_fields(
- request_type=compute.UpdateDisplayDeviceInstanceRequest,
+def test_update_network_interface_unary_rest_required_fields(
+ request_type=compute.UpdateNetworkInterfaceInstanceRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
request_init["instance"] = ""
+ request_init["network_interface"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -15672,28 +27018,39 @@ def test_update_display_device_unary_rest_required_fields(
)
# verify fields with default values are dropped
+ assert "networkInterface" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).update_display_device._get_unset_required_fields(jsonified_request)
+ ).update_network_interface._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ assert "networkInterface" in jsonified_request
+ assert jsonified_request["networkInterface"] == request_init["network_interface"]
jsonified_request["instance"] = "instance_value"
+ jsonified_request["networkInterface"] = "network_interface_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).update_display_device._get_unset_required_fields(jsonified_request)
+ ).update_network_interface._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "network_interface",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "instance" in jsonified_request
assert jsonified_request["instance"] == "instance_value"
+ assert "networkInterface" in jsonified_request
+ assert jsonified_request["networkInterface"] == "network_interface_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -15729,25 +27086,36 @@ def test_update_display_device_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.update_display_device_unary(request)
+ response = client.update_network_interface_unary(request)
- expected_params = []
+ expected_params = [
+ (
+ "networkInterface",
+ "",
+ ),
+ ]
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_update_display_device_unary_rest_unset_required_fields():
+def test_update_network_interface_unary_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.update_display_device._get_unset_required_fields({})
+ unset_fields = transport.update_network_interface._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "networkInterface",
+ "requestId",
+ )
+ )
& set(
(
- "displayDeviceResource",
"instance",
+ "networkInterface",
+ "networkInterfaceResource",
"project",
"zone",
)
@@ -15756,7 +27124,7 @@ def test_update_display_device_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_update_display_device_unary_rest_interceptors(null_interceptor):
+def test_update_network_interface_unary_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -15767,9 +27135,9 @@ def test_update_display_device_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_update_display_device"
+ transports.InstancesRestInterceptor, "post_update_network_interface"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_update_display_device"
+ transports.InstancesRestInterceptor, "pre_update_network_interface"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -15786,7 +27154,7 @@ def test_update_display_device_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.UpdateDisplayDeviceInstanceRequest()
+ request = compute.UpdateNetworkInterfaceInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -15794,7 +27162,7 @@ def test_update_display_device_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.update_display_device_unary(
+ client.update_network_interface_unary(
request,
metadata=[
("key", "val"),
@@ -15806,8 +27174,8 @@ def test_update_display_device_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_update_display_device_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.UpdateDisplayDeviceInstanceRequest
+def test_update_network_interface_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateNetworkInterfaceInstanceRequest
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -15816,7 +27184,40 @@ def test_update_display_device_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["display_device_resource"] = {"enable_display": True}
+ request_init["network_interface_resource"] = {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -15828,10 +27229,10 @@ def test_update_display_device_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.update_display_device_unary(request)
+ client.update_network_interface_unary(request)
-def test_update_display_device_unary_rest_flattened():
+def test_update_network_interface_unary_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -15854,7 +27255,12 @@ def test_update_display_device_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- display_device_resource=compute.DisplayDevice(enable_display=True),
+ network_interface="network_interface_value",
+ network_interface_resource=compute.NetworkInterface(
+ access_configs=[
+ compute.AccessConfig(external_ipv6="external_ipv6_value")
+ ]
+ ),
)
mock_args.update(sample_request)
@@ -15866,20 +27272,20 @@ def test_update_display_device_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.update_display_device_unary(**mock_args)
+ client.update_network_interface_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateDisplayDevice"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateNetworkInterface"
% client.transport._host,
args[1],
)
-def test_update_display_device_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_network_interface_unary_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -15888,16 +27294,21 @@ def test_update_display_device_unary_rest_flattened_error(transport: str = "rest
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.update_display_device_unary(
- compute.UpdateDisplayDeviceInstanceRequest(),
+ client.update_network_interface_unary(
+ compute.UpdateNetworkInterfaceInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- display_device_resource=compute.DisplayDevice(enable_display=True),
+ network_interface="network_interface_value",
+ network_interface_resource=compute.NetworkInterface(
+ access_configs=[
+ compute.AccessConfig(external_ipv6="external_ipv6_value")
+ ]
+ ),
)
-def test_update_display_device_unary_rest_error():
+def test_update_network_interface_unary_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -15906,11 +27317,11 @@ def test_update_display_device_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.UpdateNetworkInterfaceInstanceRequest,
+ compute.UpdateShieldedInstanceConfigInstanceRequest,
dict,
],
)
-def test_update_network_interface_unary_rest(request_type):
+def test_update_shielded_instance_config_rest(request_type):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -15918,39 +27329,10 @@ def test_update_network_interface_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["network_interface_resource"] = {
- "access_configs": [
- {
- "external_ipv6": "external_ipv6_value",
- "external_ipv6_prefix_length": 2837,
- "kind": "kind_value",
- "name": "name_value",
- "nat_i_p": "nat_i_p_value",
- "network_tier": "network_tier_value",
- "public_ptr_domain_name": "public_ptr_domain_name_value",
- "set_public_ptr": True,
- "type_": "type__value",
- }
- ],
- "alias_ip_ranges": [
- {
- "ip_cidr_range": "ip_cidr_range_value",
- "subnetwork_range_name": "subnetwork_range_name_value",
- }
- ],
- "fingerprint": "fingerprint_value",
- "internal_ipv6_prefix_length": 2831,
- "ipv6_access_configs": {},
- "ipv6_access_type": "ipv6_access_type_value",
- "ipv6_address": "ipv6_address_value",
- "kind": "kind_value",
- "name": "name_value",
- "network": "network_value",
- "network_i_p": "network_i_p_value",
- "nic_type": "nic_type_value",
- "queue_count": 1197,
- "stack_type": "stack_type_value",
- "subnetwork": "subnetwork_value",
+ request_init["shielded_instance_config_resource"] = {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
}
request = request_type(request_init)
@@ -15988,10 +27370,10 @@ def test_update_network_interface_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.update_network_interface_unary(request)
+ response = client.update_shielded_instance_config(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -16016,14 +27398,13 @@ def test_update_network_interface_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_update_network_interface_unary_rest_required_fields(
- request_type=compute.UpdateNetworkInterfaceInstanceRequest,
+def test_update_shielded_instance_config_rest_required_fields(
+ request_type=compute.UpdateShieldedInstanceConfigInstanceRequest,
):
transport_class = transports.InstancesRestTransport
request_init = {}
request_init["instance"] = ""
- request_init["network_interface"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -16034,39 +27415,28 @@ def test_update_network_interface_unary_rest_required_fields(
)
# verify fields with default values are dropped
- assert "networkInterface" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).update_network_interface._get_unset_required_fields(jsonified_request)
+ ).update_shielded_instance_config._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- assert "networkInterface" in jsonified_request
- assert jsonified_request["networkInterface"] == request_init["network_interface"]
jsonified_request["instance"] = "instance_value"
- jsonified_request["networkInterface"] = "network_interface_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).update_network_interface._get_unset_required_fields(jsonified_request)
+ ).update_shielded_instance_config._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "network_interface",
- "request_id",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "instance" in jsonified_request
assert jsonified_request["instance"] == "instance_value"
- assert "networkInterface" in jsonified_request
- assert jsonified_request["networkInterface"] == "network_interface_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -16102,37 +27472,28 @@ def test_update_network_interface_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.update_network_interface_unary(request)
+ response = client.update_shielded_instance_config(request)
- expected_params = [
- (
- "networkInterface",
- "",
- ),
- ]
+ expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_update_network_interface_unary_rest_unset_required_fields():
+def test_update_shielded_instance_config_rest_unset_required_fields():
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.update_network_interface._get_unset_required_fields({})
+ unset_fields = transport.update_shielded_instance_config._get_unset_required_fields(
+ {}
+ )
assert set(unset_fields) == (
- set(
- (
- "networkInterface",
- "requestId",
- )
- )
+ set(("requestId",))
& set(
(
"instance",
- "networkInterface",
- "networkInterfaceResource",
"project",
+ "shieldedInstanceConfigResource",
"zone",
)
)
@@ -16140,7 +27501,7 @@ def test_update_network_interface_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_update_network_interface_unary_rest_interceptors(null_interceptor):
+def test_update_shielded_instance_config_rest_interceptors(null_interceptor):
transport = transports.InstancesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.InstancesRestInterceptor(),
@@ -16151,9 +27512,9 @@ def test_update_network_interface_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InstancesRestInterceptor, "post_update_network_interface"
+ transports.InstancesRestInterceptor, "post_update_shielded_instance_config"
) as post, mock.patch.object(
- transports.InstancesRestInterceptor, "pre_update_network_interface"
+ transports.InstancesRestInterceptor, "pre_update_shielded_instance_config"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -16170,7 +27531,7 @@ def test_update_network_interface_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.UpdateNetworkInterfaceInstanceRequest()
+ request = compute.UpdateShieldedInstanceConfigInstanceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -16178,7 +27539,7 @@ def test_update_network_interface_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.update_network_interface_unary(
+ client.update_shielded_instance_config(
request,
metadata=[
("key", "val"),
@@ -16190,8 +27551,9 @@ def test_update_network_interface_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_update_network_interface_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.UpdateNetworkInterfaceInstanceRequest
+def test_update_shielded_instance_config_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.UpdateShieldedInstanceConfigInstanceRequest,
):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -16200,39 +27562,10 @@ def test_update_network_interface_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "instance": "sample3"}
- request_init["network_interface_resource"] = {
- "access_configs": [
- {
- "external_ipv6": "external_ipv6_value",
- "external_ipv6_prefix_length": 2837,
- "kind": "kind_value",
- "name": "name_value",
- "nat_i_p": "nat_i_p_value",
- "network_tier": "network_tier_value",
- "public_ptr_domain_name": "public_ptr_domain_name_value",
- "set_public_ptr": True,
- "type_": "type__value",
- }
- ],
- "alias_ip_ranges": [
- {
- "ip_cidr_range": "ip_cidr_range_value",
- "subnetwork_range_name": "subnetwork_range_name_value",
- }
- ],
- "fingerprint": "fingerprint_value",
- "internal_ipv6_prefix_length": 2831,
- "ipv6_access_configs": {},
- "ipv6_access_type": "ipv6_access_type_value",
- "ipv6_address": "ipv6_address_value",
- "kind": "kind_value",
- "name": "name_value",
- "network": "network_value",
- "network_i_p": "network_i_p_value",
- "nic_type": "nic_type_value",
- "queue_count": 1197,
- "stack_type": "stack_type_value",
- "subnetwork": "subnetwork_value",
+ request_init["shielded_instance_config_resource"] = {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
}
request = request_type(request_init)
@@ -16245,10 +27578,10 @@ def test_update_network_interface_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.update_network_interface_unary(request)
+ client.update_shielded_instance_config(request)
-def test_update_network_interface_unary_rest_flattened():
+def test_update_shielded_instance_config_rest_flattened():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -16271,11 +27604,8 @@ def test_update_network_interface_unary_rest_flattened():
project="project_value",
zone="zone_value",
instance="instance_value",
- network_interface="network_interface_value",
- network_interface_resource=compute.NetworkInterface(
- access_configs=[
- compute.AccessConfig(external_ipv6="external_ipv6_value")
- ]
+ shielded_instance_config_resource=compute.ShieldedInstanceConfig(
+ enable_integrity_monitoring=True
),
)
mock_args.update(sample_request)
@@ -16288,20 +27618,20 @@ def test_update_network_interface_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.update_network_interface_unary(**mock_args)
+ client.update_shielded_instance_config(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateNetworkInterface"
+ "%s/compute/v1/projects/{project}/zones/{zone}/instances/{instance}/updateShieldedInstanceConfig"
% client.transport._host,
args[1],
)
-def test_update_network_interface_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_shielded_instance_config_rest_flattened_error(transport: str = "rest"):
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -16310,21 +27640,18 @@ def test_update_network_interface_unary_rest_flattened_error(transport: str = "r
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.update_network_interface_unary(
- compute.UpdateNetworkInterfaceInstanceRequest(),
+ client.update_shielded_instance_config(
+ compute.UpdateShieldedInstanceConfigInstanceRequest(),
project="project_value",
zone="zone_value",
instance="instance_value",
- network_interface="network_interface_value",
- network_interface_resource=compute.NetworkInterface(
- access_configs=[
- compute.AccessConfig(external_ipv6="external_ipv6_value")
- ]
+ shielded_instance_config_resource=compute.ShieldedInstanceConfig(
+ enable_integrity_monitoring=True
),
)
-def test_update_network_interface_unary_rest_error():
+def test_update_shielded_instance_config_rest_error():
client = InstancesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -16390,28 +27717,6 @@ def test_update_shielded_instance_config_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_shielded_instance_config_unary_rest_required_fields(
@@ -16750,6 +28055,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = InstancesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_instances_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -16825,6 +28143,14 @@ def test_instances_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_instances_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_interconnect_attachments.py b/tests/unit/gapic/compute_v1/test_interconnect_attachments.py
index 00689d0d9..f4ca55dd5 100644
--- a/tests/unit/gapic/compute_v1/test_interconnect_attachments.py
+++ b/tests/unit/gapic/compute_v1/test_interconnect_attachments.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -923,7 +925,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -971,10 +973,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -999,7 +1001,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteInterconnectAttachmentRequest,
):
transport_class = transports.InterconnectAttachmentsRestTransport
@@ -1074,14 +1076,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.InterconnectAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1100,7 +1102,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.InterconnectAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1140,7 +1142,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1152,7 +1154,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteInterconnectAttachmentRequest
):
client = InterconnectAttachmentsClient(
@@ -1177,10 +1179,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1214,7 +1216,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1227,7 +1229,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1236,7 +1238,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteInterconnectAttachmentRequest(),
project="project_value",
region="region_value",
@@ -1244,7 +1246,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1253,11 +1255,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetInterconnectAttachmentRequest,
+ compute.DeleteInterconnectAttachmentRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1274,95 +1276,45 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InterconnectAttachment(
- admin_enabled=True,
- bandwidth="bandwidth_value",
- candidate_ipv6_subnets=["candidate_ipv6_subnets_value"],
- candidate_subnets=["candidate_subnets_value"],
- cloud_router_ip_address="cloud_router_ip_address_value",
- cloud_router_ipv6_address="cloud_router_ipv6_address_value",
- cloud_router_ipv6_interface_id="cloud_router_ipv6_interface_id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
- customer_router_ip_address="customer_router_ip_address_value",
- customer_router_ipv6_address="customer_router_ipv6_address_value",
- customer_router_ipv6_interface_id="customer_router_ipv6_interface_id_value",
- dataplane_version=1807,
description="description_value",
- edge_availability_domain="edge_availability_domain_value",
- encryption="encryption_value",
- google_reference_id="google_reference_id_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
- interconnect="interconnect_value",
- ipsec_internal_addresses=["ipsec_internal_addresses_value"],
+ insert_time="insert_time_value",
kind="kind_value",
- mtu=342,
name="name_value",
- operational_status="operational_status_value",
- pairing_key="pairing_key_value",
- partner_asn=1181,
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
- router="router_value",
- satisfies_pzs=True,
self_link="self_link_value",
- stack_type="stack_type_value",
- state="state_value",
- type_="type__value",
- vlan_tag8021q=1160,
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InterconnectAttachment.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.InterconnectAttachment)
- assert response.admin_enabled is True
- assert response.bandwidth == "bandwidth_value"
- assert response.candidate_ipv6_subnets == ["candidate_ipv6_subnets_value"]
- assert response.candidate_subnets == ["candidate_subnets_value"]
- assert response.cloud_router_ip_address == "cloud_router_ip_address_value"
- assert response.cloud_router_ipv6_address == "cloud_router_ipv6_address_value"
- assert (
- response.cloud_router_ipv6_interface_id
- == "cloud_router_ipv6_interface_id_value"
- )
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.customer_router_ip_address == "customer_router_ip_address_value"
- assert response.customer_router_ipv6_address == "customer_router_ipv6_address_value"
- assert (
- response.customer_router_ipv6_interface_id
- == "customer_router_ipv6_interface_id_value"
- )
- assert response.dataplane_version == 1807
- assert response.description == "description_value"
- assert response.edge_availability_domain == "edge_availability_domain_value"
- assert response.encryption == "encryption_value"
- assert response.google_reference_id == "google_reference_id_value"
- assert response.id == 205
- assert response.interconnect == "interconnect_value"
- assert response.ipsec_internal_addresses == ["ipsec_internal_addresses_value"]
- assert response.kind == "kind_value"
- assert response.mtu == 342
- assert response.name == "name_value"
- assert response.operational_status == "operational_status_value"
- assert response.pairing_key == "pairing_key_value"
- assert response.partner_asn == 1181
- assert response.region == "region_value"
- assert response.router == "router_value"
- assert response.satisfies_pzs is True
- assert response.self_link == "self_link_value"
- assert response.stack_type == "stack_type_value"
- assert response.state == "state_value"
- assert response.type_ == "type__value"
- assert response.vlan_tag8021q == 1160
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(
- request_type=compute.GetInterconnectAttachmentRequest,
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteInterconnectAttachmentRequest,
):
transport_class = transports.InterconnectAttachmentsRestTransport
@@ -1381,7 +1333,7 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1392,7 +1344,9 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1412,7 +1366,7 @@ def test_get_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InterconnectAttachment()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1423,32 +1377,32 @@ def test_get_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InterconnectAttachment.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.InterconnectAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"interconnectAttachment",
@@ -1460,7 +1414,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.InterconnectAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1473,9 +1427,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InterconnectAttachmentsRestInterceptor, "post_get"
+ transports.InterconnectAttachmentsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.InterconnectAttachmentsRestInterceptor, "pre_get"
+ transports.InterconnectAttachmentsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1490,19 +1444,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InterconnectAttachment.to_json(
- compute.InterconnectAttachment()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetInterconnectAttachmentRequest()
+ request = compute.DeleteInterconnectAttachmentRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InterconnectAttachment
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1514,8 +1466,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetInterconnectAttachmentRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteInterconnectAttachmentRequest
):
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1539,10 +1491,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1551,7 +1503,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InterconnectAttachment()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1571,12 +1523,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InterconnectAttachment.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1589,7 +1541,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1598,15 +1550,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetInterconnectAttachmentRequest(),
+ client.delete_unary(
+ compute.DeleteInterconnectAttachmentRequest(),
project="project_value",
region="region_value",
interconnect_attachment="interconnect_attachment_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1615,135 +1567,121 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertInterconnectAttachmentRequest,
+ compute.GetInterconnectAttachmentRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["interconnect_attachment_resource"] = {
- "admin_enabled": True,
- "bandwidth": "bandwidth_value",
- "candidate_ipv6_subnets": [
- "candidate_ipv6_subnets_value_1",
- "candidate_ipv6_subnets_value_2",
- ],
- "candidate_subnets": ["candidate_subnets_value_1", "candidate_subnets_value_2"],
- "cloud_router_ip_address": "cloud_router_ip_address_value",
- "cloud_router_ipv6_address": "cloud_router_ipv6_address_value",
- "cloud_router_ipv6_interface_id": "cloud_router_ipv6_interface_id_value",
- "creation_timestamp": "creation_timestamp_value",
- "customer_router_ip_address": "customer_router_ip_address_value",
- "customer_router_ipv6_address": "customer_router_ipv6_address_value",
- "customer_router_ipv6_interface_id": "customer_router_ipv6_interface_id_value",
- "dataplane_version": 1807,
- "description": "description_value",
- "edge_availability_domain": "edge_availability_domain_value",
- "encryption": "encryption_value",
- "google_reference_id": "google_reference_id_value",
- "id": 205,
- "interconnect": "interconnect_value",
- "ipsec_internal_addresses": [
- "ipsec_internal_addresses_value_1",
- "ipsec_internal_addresses_value_2",
- ],
- "kind": "kind_value",
- "mtu": 342,
- "name": "name_value",
- "operational_status": "operational_status_value",
- "pairing_key": "pairing_key_value",
- "partner_asn": 1181,
- "partner_metadata": {
- "interconnect_name": "interconnect_name_value",
- "partner_name": "partner_name_value",
- "portal_url": "portal_url_value",
- },
- "private_interconnect_info": {"tag8021q": 632},
- "region": "region_value",
- "router": "router_value",
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "stack_type": "stack_type_value",
- "state": "state_value",
- "type_": "type__value",
- "vlan_tag8021q": 1160,
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "interconnect_attachment": "sample3",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.InterconnectAttachment(
+ admin_enabled=True,
+ bandwidth="bandwidth_value",
+ candidate_ipv6_subnets=["candidate_ipv6_subnets_value"],
+ candidate_subnets=["candidate_subnets_value"],
+ cloud_router_ip_address="cloud_router_ip_address_value",
+ cloud_router_ipv6_address="cloud_router_ipv6_address_value",
+ cloud_router_ipv6_interface_id="cloud_router_ipv6_interface_id_value",
creation_timestamp="creation_timestamp_value",
+ customer_router_ip_address="customer_router_ip_address_value",
+ customer_router_ipv6_address="customer_router_ipv6_address_value",
+ customer_router_ipv6_interface_id="customer_router_ipv6_interface_id_value",
+ dataplane_version=1807,
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ edge_availability_domain="edge_availability_domain_value",
+ encryption="encryption_value",
+ google_reference_id="google_reference_id_value",
id=205,
- insert_time="insert_time_value",
+ interconnect="interconnect_value",
+ ipsec_internal_addresses=["ipsec_internal_addresses_value"],
kind="kind_value",
+ mtu=342,
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ operational_status="operational_status_value",
+ pairing_key="pairing_key_value",
+ partner_asn=1181,
region="region_value",
+ router="router_value",
+ satisfies_pzs=True,
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ stack_type="stack_type_value",
+ state="state_value",
+ type_="type__value",
+ vlan_tag8021q=1160,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InterconnectAttachment.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.InterconnectAttachment)
+ assert response.admin_enabled is True
+ assert response.bandwidth == "bandwidth_value"
+ assert response.candidate_ipv6_subnets == ["candidate_ipv6_subnets_value"]
+ assert response.candidate_subnets == ["candidate_subnets_value"]
+ assert response.cloud_router_ip_address == "cloud_router_ip_address_value"
+ assert response.cloud_router_ipv6_address == "cloud_router_ipv6_address_value"
+ assert (
+ response.cloud_router_ipv6_interface_id
+ == "cloud_router_ipv6_interface_id_value"
+ )
assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.customer_router_ip_address == "customer_router_ip_address_value"
+ assert response.customer_router_ipv6_address == "customer_router_ipv6_address_value"
+ assert (
+ response.customer_router_ipv6_interface_id
+ == "customer_router_ipv6_interface_id_value"
+ )
+ assert response.dataplane_version == 1807
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.edge_availability_domain == "edge_availability_domain_value"
+ assert response.encryption == "encryption_value"
+ assert response.google_reference_id == "google_reference_id_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert response.interconnect == "interconnect_value"
+ assert response.ipsec_internal_addresses == ["ipsec_internal_addresses_value"]
assert response.kind == "kind_value"
+ assert response.mtu == 342
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.operational_status == "operational_status_value"
+ assert response.pairing_key == "pairing_key_value"
+ assert response.partner_asn == 1181
assert response.region == "region_value"
+ assert response.router == "router_value"
+ assert response.satisfies_pzs is True
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.stack_type == "stack_type_value"
+ assert response.state == "state_value"
+ assert response.type_ == "type__value"
+ assert response.vlan_tag8021q == 1160
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertInterconnectAttachmentRequest,
+def test_get_rest_required_fields(
+ request_type=compute.GetInterconnectAttachmentRequest,
):
transport_class = transports.InterconnectAttachmentsRestTransport
request_init = {}
+ request_init["interconnect_attachment"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -1757,27 +1695,25 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["interconnectAttachment"] = "interconnect_attachment_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "request_id",
- "validate_only",
- )
- )
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "interconnectAttachment" in jsonified_request
+ assert (
+ jsonified_request["interconnectAttachment"] == "interconnect_attachment_value"
+ )
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -1790,7 +1726,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.InterconnectAttachment()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1801,41 +1737,35 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InterconnectAttachment.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.InterconnectAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "requestId",
- "validateOnly",
- )
- )
+ set(())
& set(
(
- "interconnectAttachmentResource",
+ "interconnectAttachment",
"project",
"region",
)
@@ -1844,7 +1774,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.InterconnectAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1857,9 +1787,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InterconnectAttachmentsRestInterceptor, "post_insert"
+ transports.InterconnectAttachmentsRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.InterconnectAttachmentsRestInterceptor, "pre_insert"
+ transports.InterconnectAttachmentsRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1874,17 +1804,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.InterconnectAttachment.to_json(
+ compute.InterconnectAttachment()
+ )
- request = compute.InsertInterconnectAttachmentRequest()
+ request = compute.GetInterconnectAttachmentRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.InterconnectAttachment
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1896,8 +1828,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertInterconnectAttachmentRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetInterconnectAttachmentRequest
):
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1905,53 +1837,10 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["interconnect_attachment_resource"] = {
- "admin_enabled": True,
- "bandwidth": "bandwidth_value",
- "candidate_ipv6_subnets": [
- "candidate_ipv6_subnets_value_1",
- "candidate_ipv6_subnets_value_2",
- ],
- "candidate_subnets": ["candidate_subnets_value_1", "candidate_subnets_value_2"],
- "cloud_router_ip_address": "cloud_router_ip_address_value",
- "cloud_router_ipv6_address": "cloud_router_ipv6_address_value",
- "cloud_router_ipv6_interface_id": "cloud_router_ipv6_interface_id_value",
- "creation_timestamp": "creation_timestamp_value",
- "customer_router_ip_address": "customer_router_ip_address_value",
- "customer_router_ipv6_address": "customer_router_ipv6_address_value",
- "customer_router_ipv6_interface_id": "customer_router_ipv6_interface_id_value",
- "dataplane_version": 1807,
- "description": "description_value",
- "edge_availability_domain": "edge_availability_domain_value",
- "encryption": "encryption_value",
- "google_reference_id": "google_reference_id_value",
- "id": 205,
- "interconnect": "interconnect_value",
- "ipsec_internal_addresses": [
- "ipsec_internal_addresses_value_1",
- "ipsec_internal_addresses_value_2",
- ],
- "kind": "kind_value",
- "mtu": 342,
- "name": "name_value",
- "operational_status": "operational_status_value",
- "pairing_key": "pairing_key_value",
- "partner_asn": 1181,
- "partner_metadata": {
- "interconnect_name": "interconnect_name_value",
- "partner_name": "partner_name_value",
- "portal_url": "portal_url_value",
- },
- "private_interconnect_info": {"tag8021q": 632},
- "region": "region_value",
- "router": "router_value",
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "stack_type": "stack_type_value",
- "state": "state_value",
- "type_": "type__value",
- "vlan_tag8021q": 1160,
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "interconnect_attachment": "sample3",
}
request = request_type(request_init)
@@ -1964,10 +1853,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get(request)
-def test_insert_unary_rest_flattened():
+def test_get_rest_flattened():
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1976,43 +1865,45 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.InterconnectAttachment()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "interconnect_attachment": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- interconnect_attachment_resource=compute.InterconnectAttachment(
- admin_enabled=True
- ),
+ interconnect_attachment="interconnect_attachment_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InterconnectAttachment.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/interconnectAttachments"
+ "%s/compute/v1/projects/{project}/regions/{region}/interconnectAttachments/{interconnect_attachment}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2021,17 +1912,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertInterconnectAttachmentRequest(),
+ client.get(
+ compute.GetInterconnectAttachmentRequest(),
project="project_value",
region="region_value",
- interconnect_attachment_resource=compute.InterconnectAttachment(
- admin_enabled=True
- ),
+ interconnect_attachment="interconnect_attachment_value",
)
-def test_insert_unary_rest_error():
+def test_get_rest_error():
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2040,11 +1929,11 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListInterconnectAttachmentsRequest,
+ compute.InsertInterconnectAttachmentRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_insert_rest(request_type):
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2052,40 +1941,1308 @@ def test_list_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2"}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.InterconnectAttachmentList(
- id="id_value",
- kind="kind_value",
- next_page_token="next_page_token_value",
- self_link="self_link_value",
- )
-
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 200
- json_return_value = compute.InterconnectAttachmentList.to_json(return_value)
- response_value._content = json_return_value.encode("UTF-8")
- req.return_value = response_value
- response = client.list(request)
-
- # Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ request_init["interconnect_attachment_resource"] = {
+ "admin_enabled": True,
+ "bandwidth": "bandwidth_value",
+ "candidate_ipv6_subnets": [
+ "candidate_ipv6_subnets_value_1",
+ "candidate_ipv6_subnets_value_2",
+ ],
+ "candidate_subnets": ["candidate_subnets_value_1", "candidate_subnets_value_2"],
+ "cloud_router_ip_address": "cloud_router_ip_address_value",
+ "cloud_router_ipv6_address": "cloud_router_ipv6_address_value",
+ "cloud_router_ipv6_interface_id": "cloud_router_ipv6_interface_id_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "customer_router_ip_address": "customer_router_ip_address_value",
+ "customer_router_ipv6_address": "customer_router_ipv6_address_value",
+ "customer_router_ipv6_interface_id": "customer_router_ipv6_interface_id_value",
+ "dataplane_version": 1807,
+ "description": "description_value",
+ "edge_availability_domain": "edge_availability_domain_value",
+ "encryption": "encryption_value",
+ "google_reference_id": "google_reference_id_value",
+ "id": 205,
+ "interconnect": "interconnect_value",
+ "ipsec_internal_addresses": [
+ "ipsec_internal_addresses_value_1",
+ "ipsec_internal_addresses_value_2",
+ ],
+ "kind": "kind_value",
+ "mtu": 342,
+ "name": "name_value",
+ "operational_status": "operational_status_value",
+ "pairing_key": "pairing_key_value",
+ "partner_asn": 1181,
+ "partner_metadata": {
+ "interconnect_name": "interconnect_name_value",
+ "partner_name": "partner_name_value",
+ "portal_url": "portal_url_value",
+ },
+ "private_interconnect_info": {"tag8021q": 632},
+ "region": "region_value",
+ "router": "router_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "stack_type": "stack_type_value",
+ "state": "state_value",
+ "type_": "type__value",
+ "vlan_tag8021q": 1160,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertInterconnectAttachmentRequest,
+):
+ transport_class = transports.InterconnectAttachmentsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "validate_only",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.InterconnectAttachmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "validateOnly",
+ )
+ )
+ & set(
+ (
+ "interconnectAttachmentResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.InterconnectAttachmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InterconnectAttachmentsRestInterceptor(),
+ )
+ client = InterconnectAttachmentsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InterconnectAttachmentsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.InterconnectAttachmentsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertInterconnectAttachmentRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertInterconnectAttachmentRequest
+):
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["interconnect_attachment_resource"] = {
+ "admin_enabled": True,
+ "bandwidth": "bandwidth_value",
+ "candidate_ipv6_subnets": [
+ "candidate_ipv6_subnets_value_1",
+ "candidate_ipv6_subnets_value_2",
+ ],
+ "candidate_subnets": ["candidate_subnets_value_1", "candidate_subnets_value_2"],
+ "cloud_router_ip_address": "cloud_router_ip_address_value",
+ "cloud_router_ipv6_address": "cloud_router_ipv6_address_value",
+ "cloud_router_ipv6_interface_id": "cloud_router_ipv6_interface_id_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "customer_router_ip_address": "customer_router_ip_address_value",
+ "customer_router_ipv6_address": "customer_router_ipv6_address_value",
+ "customer_router_ipv6_interface_id": "customer_router_ipv6_interface_id_value",
+ "dataplane_version": 1807,
+ "description": "description_value",
+ "edge_availability_domain": "edge_availability_domain_value",
+ "encryption": "encryption_value",
+ "google_reference_id": "google_reference_id_value",
+ "id": 205,
+ "interconnect": "interconnect_value",
+ "ipsec_internal_addresses": [
+ "ipsec_internal_addresses_value_1",
+ "ipsec_internal_addresses_value_2",
+ ],
+ "kind": "kind_value",
+ "mtu": 342,
+ "name": "name_value",
+ "operational_status": "operational_status_value",
+ "pairing_key": "pairing_key_value",
+ "partner_asn": 1181,
+ "partner_metadata": {
+ "interconnect_name": "interconnect_name_value",
+ "partner_name": "partner_name_value",
+ "portal_url": "portal_url_value",
+ },
+ "private_interconnect_info": {"tag8021q": 632},
+ "region": "region_value",
+ "router": "router_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "stack_type": "stack_type_value",
+ "state": "state_value",
+ "type_": "type__value",
+ "vlan_tag8021q": 1160,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ interconnect_attachment_resource=compute.InterconnectAttachment(
+ admin_enabled=True
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/interconnectAttachments"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertInterconnectAttachmentRequest(),
+ project="project_value",
+ region="region_value",
+ interconnect_attachment_resource=compute.InterconnectAttachment(
+ admin_enabled=True
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertInterconnectAttachmentRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["interconnect_attachment_resource"] = {
+ "admin_enabled": True,
+ "bandwidth": "bandwidth_value",
+ "candidate_ipv6_subnets": [
+ "candidate_ipv6_subnets_value_1",
+ "candidate_ipv6_subnets_value_2",
+ ],
+ "candidate_subnets": ["candidate_subnets_value_1", "candidate_subnets_value_2"],
+ "cloud_router_ip_address": "cloud_router_ip_address_value",
+ "cloud_router_ipv6_address": "cloud_router_ipv6_address_value",
+ "cloud_router_ipv6_interface_id": "cloud_router_ipv6_interface_id_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "customer_router_ip_address": "customer_router_ip_address_value",
+ "customer_router_ipv6_address": "customer_router_ipv6_address_value",
+ "customer_router_ipv6_interface_id": "customer_router_ipv6_interface_id_value",
+ "dataplane_version": 1807,
+ "description": "description_value",
+ "edge_availability_domain": "edge_availability_domain_value",
+ "encryption": "encryption_value",
+ "google_reference_id": "google_reference_id_value",
+ "id": 205,
+ "interconnect": "interconnect_value",
+ "ipsec_internal_addresses": [
+ "ipsec_internal_addresses_value_1",
+ "ipsec_internal_addresses_value_2",
+ ],
+ "kind": "kind_value",
+ "mtu": 342,
+ "name": "name_value",
+ "operational_status": "operational_status_value",
+ "pairing_key": "pairing_key_value",
+ "partner_asn": 1181,
+ "partner_metadata": {
+ "interconnect_name": "interconnect_name_value",
+ "partner_name": "partner_name_value",
+ "portal_url": "portal_url_value",
+ },
+ "private_interconnect_info": {"tag8021q": 632},
+ "region": "region_value",
+ "router": "router_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "stack_type": "stack_type_value",
+ "state": "state_value",
+ "type_": "type__value",
+ "vlan_tag8021q": 1160,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertInterconnectAttachmentRequest,
+):
+ transport_class = transports.InterconnectAttachmentsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "validate_only",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.InterconnectAttachmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "validateOnly",
+ )
+ )
+ & set(
+ (
+ "interconnectAttachmentResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.InterconnectAttachmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InterconnectAttachmentsRestInterceptor(),
+ )
+ client = InterconnectAttachmentsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InterconnectAttachmentsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.InterconnectAttachmentsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertInterconnectAttachmentRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertInterconnectAttachmentRequest
+):
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["interconnect_attachment_resource"] = {
+ "admin_enabled": True,
+ "bandwidth": "bandwidth_value",
+ "candidate_ipv6_subnets": [
+ "candidate_ipv6_subnets_value_1",
+ "candidate_ipv6_subnets_value_2",
+ ],
+ "candidate_subnets": ["candidate_subnets_value_1", "candidate_subnets_value_2"],
+ "cloud_router_ip_address": "cloud_router_ip_address_value",
+ "cloud_router_ipv6_address": "cloud_router_ipv6_address_value",
+ "cloud_router_ipv6_interface_id": "cloud_router_ipv6_interface_id_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "customer_router_ip_address": "customer_router_ip_address_value",
+ "customer_router_ipv6_address": "customer_router_ipv6_address_value",
+ "customer_router_ipv6_interface_id": "customer_router_ipv6_interface_id_value",
+ "dataplane_version": 1807,
+ "description": "description_value",
+ "edge_availability_domain": "edge_availability_domain_value",
+ "encryption": "encryption_value",
+ "google_reference_id": "google_reference_id_value",
+ "id": 205,
+ "interconnect": "interconnect_value",
+ "ipsec_internal_addresses": [
+ "ipsec_internal_addresses_value_1",
+ "ipsec_internal_addresses_value_2",
+ ],
+ "kind": "kind_value",
+ "mtu": 342,
+ "name": "name_value",
+ "operational_status": "operational_status_value",
+ "pairing_key": "pairing_key_value",
+ "partner_asn": 1181,
+ "partner_metadata": {
+ "interconnect_name": "interconnect_name_value",
+ "partner_name": "partner_name_value",
+ "portal_url": "portal_url_value",
+ },
+ "private_interconnect_info": {"tag8021q": 632},
+ "region": "region_value",
+ "router": "router_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "stack_type": "stack_type_value",
+ "state": "state_value",
+ "type_": "type__value",
+ "vlan_tag8021q": 1160,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ interconnect_attachment_resource=compute.InterconnectAttachment(
+ admin_enabled=True
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/interconnectAttachments"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertInterconnectAttachmentRequest(),
+ project="project_value",
+ region="region_value",
+ interconnect_attachment_resource=compute.InterconnectAttachment(
+ admin_enabled=True
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListInterconnectAttachmentsRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InterconnectAttachmentList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InterconnectAttachmentList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(
+ request_type=compute.ListInterconnectAttachmentsRequest,
+):
+ transport_class = transports.InterconnectAttachmentsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InterconnectAttachmentList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InterconnectAttachmentList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.InterconnectAttachmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.InterconnectAttachmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InterconnectAttachmentsRestInterceptor(),
+ )
+ client = InterconnectAttachmentsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InterconnectAttachmentsRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.InterconnectAttachmentsRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.InterconnectAttachmentList.to_json(
+ compute.InterconnectAttachmentList()
+ )
+
+ request = compute.ListInterconnectAttachmentsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.InterconnectAttachmentList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListInterconnectAttachmentsRequest
+):
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InterconnectAttachmentList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InterconnectAttachmentList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/interconnectAttachments"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListInterconnectAttachmentsRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.InterconnectAttachmentList(
+ items=[
+ compute.InterconnectAttachment(),
+ compute.InterconnectAttachment(),
+ compute.InterconnectAttachment(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.InterconnectAttachmentList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.InterconnectAttachmentList(
+ items=[
+ compute.InterconnectAttachment(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.InterconnectAttachmentList(
+ items=[
+ compute.InterconnectAttachment(),
+ compute.InterconnectAttachment(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.InterconnectAttachmentList.to_json(x) for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.InterconnectAttachment) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchInterconnectAttachmentRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = InterconnectAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "interconnect_attachment": "sample3",
+ }
+ request_init["interconnect_attachment_resource"] = {
+ "admin_enabled": True,
+ "bandwidth": "bandwidth_value",
+ "candidate_ipv6_subnets": [
+ "candidate_ipv6_subnets_value_1",
+ "candidate_ipv6_subnets_value_2",
+ ],
+ "candidate_subnets": ["candidate_subnets_value_1", "candidate_subnets_value_2"],
+ "cloud_router_ip_address": "cloud_router_ip_address_value",
+ "cloud_router_ipv6_address": "cloud_router_ipv6_address_value",
+ "cloud_router_ipv6_interface_id": "cloud_router_ipv6_interface_id_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "customer_router_ip_address": "customer_router_ip_address_value",
+ "customer_router_ipv6_address": "customer_router_ipv6_address_value",
+ "customer_router_ipv6_interface_id": "customer_router_ipv6_interface_id_value",
+ "dataplane_version": 1807,
+ "description": "description_value",
+ "edge_availability_domain": "edge_availability_domain_value",
+ "encryption": "encryption_value",
+ "google_reference_id": "google_reference_id_value",
+ "id": 205,
+ "interconnect": "interconnect_value",
+ "ipsec_internal_addresses": [
+ "ipsec_internal_addresses_value_1",
+ "ipsec_internal_addresses_value_2",
+ ],
+ "kind": "kind_value",
+ "mtu": 342,
+ "name": "name_value",
+ "operational_status": "operational_status_value",
+ "pairing_key": "pairing_key_value",
+ "partner_asn": 1181,
+ "partner_metadata": {
+ "interconnect_name": "interconnect_name_value",
+ "partner_name": "partner_name_value",
+ "portal_url": "portal_url_value",
+ },
+ "private_interconnect_info": {"tag8021q": 632},
+ "region": "region_value",
+ "router": "router_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "stack_type": "stack_type_value",
+ "state": "state_value",
+ "type_": "type__value",
+ "vlan_tag8021q": 1160,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(
- request_type=compute.ListInterconnectAttachmentsRequest,
+def test_patch_rest_required_fields(
+ request_type=compute.PatchInterconnectAttachmentRequest,
):
transport_class = transports.InterconnectAttachmentsRestTransport
request_init = {}
+ request_init["interconnect_attachment"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -2099,30 +3256,27 @@ def test_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["interconnectAttachment"] = "interconnect_attachment_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "interconnectAttachment" in jsonified_request
+ assert (
+ jsonified_request["interconnectAttachment"] == "interconnect_attachment_value"
+ )
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -2135,7 +3289,7 @@ def test_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InterconnectAttachmentList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2146,42 +3300,37 @@ def test_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InterconnectAttachmentList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_rest_unset_required_fields():
transport = transports.InterconnectAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
+ "interconnectAttachment",
+ "interconnectAttachmentResource",
"project",
"region",
)
@@ -2190,7 +3339,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.InterconnectAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2203,9 +3352,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InterconnectAttachmentsRestInterceptor, "post_list"
+ transports.InterconnectAttachmentsRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.InterconnectAttachmentsRestInterceptor, "pre_list"
+ transports.InterconnectAttachmentsRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2220,19 +3369,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InterconnectAttachmentList.to_json(
- compute.InterconnectAttachmentList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListInterconnectAttachmentsRequest()
+ request = compute.PatchInterconnectAttachmentRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InterconnectAttachmentList
+ post.return_value = compute.Operation
- client.list(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -2244,8 +3391,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListInterconnectAttachmentsRequest
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchInterconnectAttachmentRequest
):
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2253,7 +3400,58 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "interconnect_attachment": "sample3",
+ }
+ request_init["interconnect_attachment_resource"] = {
+ "admin_enabled": True,
+ "bandwidth": "bandwidth_value",
+ "candidate_ipv6_subnets": [
+ "candidate_ipv6_subnets_value_1",
+ "candidate_ipv6_subnets_value_2",
+ ],
+ "candidate_subnets": ["candidate_subnets_value_1", "candidate_subnets_value_2"],
+ "cloud_router_ip_address": "cloud_router_ip_address_value",
+ "cloud_router_ipv6_address": "cloud_router_ipv6_address_value",
+ "cloud_router_ipv6_interface_id": "cloud_router_ipv6_interface_id_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "customer_router_ip_address": "customer_router_ip_address_value",
+ "customer_router_ipv6_address": "customer_router_ipv6_address_value",
+ "customer_router_ipv6_interface_id": "customer_router_ipv6_interface_id_value",
+ "dataplane_version": 1807,
+ "description": "description_value",
+ "edge_availability_domain": "edge_availability_domain_value",
+ "encryption": "encryption_value",
+ "google_reference_id": "google_reference_id_value",
+ "id": 205,
+ "interconnect": "interconnect_value",
+ "ipsec_internal_addresses": [
+ "ipsec_internal_addresses_value_1",
+ "ipsec_internal_addresses_value_2",
+ ],
+ "kind": "kind_value",
+ "mtu": 342,
+ "name": "name_value",
+ "operational_status": "operational_status_value",
+ "pairing_key": "pairing_key_value",
+ "partner_asn": 1181,
+ "partner_metadata": {
+ "interconnect_name": "interconnect_name_value",
+ "partner_name": "partner_name_value",
+ "portal_url": "portal_url_value",
+ },
+ "private_interconnect_info": {"tag8021q": 632},
+ "region": "region_value",
+ "router": "router_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "stack_type": "stack_type_value",
+ "state": "state_value",
+ "type_": "type__value",
+ "vlan_tag8021q": 1160,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2265,10 +3463,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch(request)
-def test_list_rest_flattened():
+def test_patch_rest_flattened():
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2277,40 +3475,48 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InterconnectAttachmentList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "interconnect_attachment": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ interconnect_attachment="interconnect_attachment_value",
+ interconnect_attachment_resource=compute.InterconnectAttachment(
+ admin_enabled=True
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InterconnectAttachmentList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/interconnectAttachments"
+ "%s/compute/v1/projects/{project}/regions/{region}/interconnectAttachments/{interconnect_attachment}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = InterconnectAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2319,75 +3525,22 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListInterconnectAttachmentsRequest(),
+ client.patch(
+ compute.PatchInterconnectAttachmentRequest(),
project="project_value",
region="region_value",
+ interconnect_attachment="interconnect_attachment_value",
+ interconnect_attachment_resource=compute.InterconnectAttachment(
+ admin_enabled=True
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_rest_error():
client = InterconnectAttachmentsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.InterconnectAttachmentList(
- items=[
- compute.InterconnectAttachment(),
- compute.InterconnectAttachment(),
- compute.InterconnectAttachment(),
- ],
- next_page_token="abc",
- ),
- compute.InterconnectAttachmentList(
- items=[],
- next_page_token="def",
- ),
- compute.InterconnectAttachmentList(
- items=[
- compute.InterconnectAttachment(),
- ],
- next_page_token="ghi",
- ),
- compute.InterconnectAttachmentList(
- items=[
- compute.InterconnectAttachment(),
- compute.InterconnectAttachment(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(
- compute.InterconnectAttachmentList.to_json(x) for x in response
- )
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.InterconnectAttachment) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
@@ -2495,28 +3648,6 @@ def test_patch_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_patch_unary_rest_required_fields(
@@ -2900,6 +4031,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = InterconnectAttachmentsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_interconnect_attachments_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2936,6 +4080,14 @@ def test_interconnect_attachments_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_interconnect_attachments_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_interconnect_locations.py b/tests/unit/gapic/compute_v1/test_interconnect_locations.py
index d61089b4b..34fd40392 100644
--- a/tests/unit/gapic/compute_v1/test_interconnect_locations.py
+++ b/tests/unit/gapic/compute_v1/test_interconnect_locations.py
@@ -1261,6 +1261,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = InterconnectLocationsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_interconnect_locations_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -1293,6 +1306,14 @@ def test_interconnect_locations_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_interconnect_locations_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_interconnects.py b/tests/unit/gapic/compute_v1/test_interconnects.py
index 2ddf5a644..9d07fefc2 100644
--- a/tests/unit/gapic/compute_v1/test_interconnects.py
+++ b/tests/unit/gapic/compute_v1/test_interconnects.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -525,7 +527,7 @@ def test_interconnects_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -569,10 +571,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -597,9 +599,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteInterconnectRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteInterconnectRequest):
transport_class = transports.InterconnectsRestTransport
request_init = {}
@@ -666,14 +666,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.InterconnectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -691,7 +691,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.InterconnectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -731,7 +731,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -743,7 +743,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteInterconnectRequest
):
client = InterconnectsClient(
@@ -764,10 +764,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -796,7 +796,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -809,7 +809,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -818,14 +818,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteInterconnectRequest(),
project="project_value",
interconnect="interconnect_value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -834,11 +834,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetInterconnectRequest,
+ compute.DeleteInterconnectRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -851,64 +851,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Interconnect(
- admin_enabled=True,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
- customer_name="customer_name_value",
description="description_value",
- google_ip_address="google_ip_address_value",
- google_reference_id="google_reference_id_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
- interconnect_attachments=["interconnect_attachments_value"],
- interconnect_type="interconnect_type_value",
+ insert_time="insert_time_value",
kind="kind_value",
- link_type="link_type_value",
- location="location_value",
name="name_value",
- noc_contact_email="noc_contact_email_value",
- operational_status="operational_status_value",
- peer_ip_address="peer_ip_address_value",
- provisioned_link_count=2375,
- requested_link_count=2151,
- satisfies_pzs=True,
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- state="state_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Interconnect.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Interconnect)
- assert response.admin_enabled is True
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.customer_name == "customer_name_value"
- assert response.description == "description_value"
- assert response.google_ip_address == "google_ip_address_value"
- assert response.google_reference_id == "google_reference_id_value"
- assert response.id == 205
- assert response.interconnect_attachments == ["interconnect_attachments_value"]
- assert response.interconnect_type == "interconnect_type_value"
- assert response.kind == "kind_value"
- assert response.link_type == "link_type_value"
- assert response.location == "location_value"
- assert response.name == "name_value"
- assert response.noc_contact_email == "noc_contact_email_value"
- assert response.operational_status == "operational_status_value"
- assert response.peer_ip_address == "peer_ip_address_value"
- assert response.provisioned_link_count == 2375
- assert response.requested_link_count == 2151
- assert response.satisfies_pzs is True
- assert response.self_link == "self_link_value"
- assert response.state == "state_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetInterconnectRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteInterconnectRequest,
+):
transport_class = transports.InterconnectsRestTransport
request_init = {}
@@ -925,7 +907,7 @@ def test_get_rest_required_fields(request_type=compute.GetInterconnectRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -935,7 +917,9 @@ def test_get_rest_required_fields(request_type=compute.GetInterconnectRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -951,7 +935,7 @@ def test_get_rest_required_fields(request_type=compute.GetInterconnectRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Interconnect()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -962,32 +946,32 @@ def test_get_rest_required_fields(request_type=compute.GetInterconnectRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Interconnect.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.InterconnectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"interconnect",
@@ -998,7 +982,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.InterconnectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1011,9 +995,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InterconnectsRestInterceptor, "post_get"
+ transports.InterconnectsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.InterconnectsRestInterceptor, "pre_get"
+ transports.InterconnectsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1028,17 +1012,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Interconnect.to_json(compute.Interconnect())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetInterconnectRequest()
+ request = compute.DeleteInterconnectRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Interconnect
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1050,8 +1034,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetInterconnectRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteInterconnectRequest
):
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1071,10 +1055,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1083,7 +1067,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Interconnect()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "interconnect": "sample2"}
@@ -1098,12 +1082,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Interconnect.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1116,7 +1100,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1125,14 +1109,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetInterconnectRequest(),
+ client.delete_unary(
+ compute.DeleteInterconnectRequest(),
project="project_value",
interconnect="interconnect_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1141,11 +1125,11 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetDiagnosticsInterconnectRequest,
+ compute.GetInterconnectRequest,
dict,
],
)
-def test_get_diagnostics_rest(request_type):
+def test_get_rest(request_type):
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1158,25 +1142,64 @@ def test_get_diagnostics_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InterconnectsGetDiagnosticsResponse()
+ return_value = compute.Interconnect(
+ admin_enabled=True,
+ creation_timestamp="creation_timestamp_value",
+ customer_name="customer_name_value",
+ description="description_value",
+ google_ip_address="google_ip_address_value",
+ google_reference_id="google_reference_id_value",
+ id=205,
+ interconnect_attachments=["interconnect_attachments_value"],
+ interconnect_type="interconnect_type_value",
+ kind="kind_value",
+ link_type="link_type_value",
+ location="location_value",
+ name="name_value",
+ noc_contact_email="noc_contact_email_value",
+ operational_status="operational_status_value",
+ peer_ip_address="peer_ip_address_value",
+ provisioned_link_count=2375,
+ requested_link_count=2151,
+ satisfies_pzs=True,
+ self_link="self_link_value",
+ state="state_value",
+ )
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InterconnectsGetDiagnosticsResponse.to_json(
- return_value
- )
+ json_return_value = compute.Interconnect.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_diagnostics(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.InterconnectsGetDiagnosticsResponse)
+ assert isinstance(response, compute.Interconnect)
+ assert response.admin_enabled is True
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.customer_name == "customer_name_value"
+ assert response.description == "description_value"
+ assert response.google_ip_address == "google_ip_address_value"
+ assert response.google_reference_id == "google_reference_id_value"
+ assert response.id == 205
+ assert response.interconnect_attachments == ["interconnect_attachments_value"]
+ assert response.interconnect_type == "interconnect_type_value"
+ assert response.kind == "kind_value"
+ assert response.link_type == "link_type_value"
+ assert response.location == "location_value"
+ assert response.name == "name_value"
+ assert response.noc_contact_email == "noc_contact_email_value"
+ assert response.operational_status == "operational_status_value"
+ assert response.peer_ip_address == "peer_ip_address_value"
+ assert response.provisioned_link_count == 2375
+ assert response.requested_link_count == 2151
+ assert response.satisfies_pzs is True
+ assert response.self_link == "self_link_value"
+ assert response.state == "state_value"
-def test_get_diagnostics_rest_required_fields(
- request_type=compute.GetDiagnosticsInterconnectRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetInterconnectRequest):
transport_class = transports.InterconnectsRestTransport
request_init = {}
@@ -1193,7 +1216,7 @@ def test_get_diagnostics_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_diagnostics._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1203,7 +1226,7 @@ def test_get_diagnostics_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_diagnostics._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1219,7 +1242,7 @@ def test_get_diagnostics_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InterconnectsGetDiagnosticsResponse()
+ return_value = compute.Interconnect()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1237,25 +1260,23 @@ def test_get_diagnostics_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InterconnectsGetDiagnosticsResponse.to_json(
- return_value
- )
+ json_return_value = compute.Interconnect.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_diagnostics(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_diagnostics_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.InterconnectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_diagnostics._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
set(())
& set(
@@ -1268,7 +1289,7 @@ def test_get_diagnostics_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_diagnostics_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.InterconnectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1281,9 +1302,9 @@ def test_get_diagnostics_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InterconnectsRestInterceptor, "post_get_diagnostics"
+ transports.InterconnectsRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.InterconnectsRestInterceptor, "pre_get_diagnostics"
+ transports.InterconnectsRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1298,19 +1319,17 @@ def test_get_diagnostics_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InterconnectsGetDiagnosticsResponse.to_json(
- compute.InterconnectsGetDiagnosticsResponse()
- )
+ req.return_value._content = compute.Interconnect.to_json(compute.Interconnect())
- request = compute.GetDiagnosticsInterconnectRequest()
+ request = compute.GetInterconnectRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InterconnectsGetDiagnosticsResponse
+ post.return_value = compute.Interconnect
- client.get_diagnostics(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1322,8 +1341,8 @@ def test_get_diagnostics_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_diagnostics_rest_bad_request(
- transport: str = "rest", request_type=compute.GetDiagnosticsInterconnectRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetInterconnectRequest
):
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1343,10 +1362,10 @@ def test_get_diagnostics_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_diagnostics(request)
+ client.get(request)
-def test_get_diagnostics_rest_flattened():
+def test_get_rest_flattened():
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1355,7 +1374,7 @@ def test_get_diagnostics_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InterconnectsGetDiagnosticsResponse()
+ return_value = compute.Interconnect()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "interconnect": "sample2"}
@@ -1370,27 +1389,25 @@ def test_get_diagnostics_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InterconnectsGetDiagnosticsResponse.to_json(
- return_value
- )
+ json_return_value = compute.Interconnect.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_diagnostics(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/interconnects/{interconnect}/getDiagnostics"
+ "%s/compute/v1/projects/{project}/global/interconnects/{interconnect}"
% client.transport._host,
args[1],
)
-def test_get_diagnostics_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1399,14 +1416,14 @@ def test_get_diagnostics_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_diagnostics(
- compute.GetDiagnosticsInterconnectRequest(),
+ client.get(
+ compute.GetInterconnectRequest(),
project="project_value",
interconnect="interconnect_value",
)
-def test_get_diagnostics_rest_error():
+def test_get_rest_error():
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1415,136 +1432,46 @@ def test_get_diagnostics_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertInterconnectRequest,
+ compute.GetDiagnosticsInterconnectRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_diagnostics_rest(request_type):
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["interconnect_resource"] = {
- "admin_enabled": True,
- "circuit_infos": [
- {
- "customer_demarc_id": "customer_demarc_id_value",
- "google_circuit_id": "google_circuit_id_value",
- "google_demarc_id": "google_demarc_id_value",
- }
- ],
- "creation_timestamp": "creation_timestamp_value",
- "customer_name": "customer_name_value",
- "description": "description_value",
- "expected_outages": [
- {
- "affected_circuits": [
- "affected_circuits_value_1",
- "affected_circuits_value_2",
- ],
- "description": "description_value",
- "end_time": 837,
- "issue_type": "issue_type_value",
- "name": "name_value",
- "source": "source_value",
- "start_time": 1084,
- "state": "state_value",
- }
- ],
- "google_ip_address": "google_ip_address_value",
- "google_reference_id": "google_reference_id_value",
- "id": 205,
- "interconnect_attachments": [
- "interconnect_attachments_value_1",
- "interconnect_attachments_value_2",
- ],
- "interconnect_type": "interconnect_type_value",
- "kind": "kind_value",
- "link_type": "link_type_value",
- "location": "location_value",
- "name": "name_value",
- "noc_contact_email": "noc_contact_email_value",
- "operational_status": "operational_status_value",
- "peer_ip_address": "peer_ip_address_value",
- "provisioned_link_count": 2375,
- "requested_link_count": 2151,
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "state": "state_value",
- }
+ request_init = {"project": "sample1", "interconnect": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
- kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
- self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
- )
+ return_value = compute.InterconnectsGetDiagnosticsResponse()
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InterconnectsGetDiagnosticsResponse.to_json(
+ return_value
+ )
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get_diagnostics(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert isinstance(response, compute.InterconnectsGetDiagnosticsResponse)
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertInterconnectRequest,
+def test_get_diagnostics_rest_required_fields(
+ request_type=compute.GetDiagnosticsInterconnectRequest,
):
transport_class = transports.InterconnectsRestTransport
request_init = {}
+ request_init["interconnect"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1557,21 +1484,22 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get_diagnostics._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["interconnect"] = "interconnect_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get_diagnostics._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "interconnect" in jsonified_request
+ assert jsonified_request["interconnect"] == "interconnect_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -1582,7 +1510,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.InterconnectsGetDiagnosticsResponse()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1593,36 +1521,37 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InterconnectsGetDiagnosticsResponse.to_json(
+ return_value
+ )
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get_diagnostics(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_diagnostics_rest_unset_required_fields():
transport = transports.InterconnectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get_diagnostics._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
- "interconnectResource",
+ "interconnect",
"project",
)
)
@@ -1630,7 +1559,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_diagnostics_rest_interceptors(null_interceptor):
transport = transports.InterconnectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1643,9 +1572,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InterconnectsRestInterceptor, "post_insert"
+ transports.InterconnectsRestInterceptor, "post_get_diagnostics"
) as post, mock.patch.object(
- transports.InterconnectsRestInterceptor, "pre_insert"
+ transports.InterconnectsRestInterceptor, "pre_get_diagnostics"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1660,17 +1589,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.InterconnectsGetDiagnosticsResponse.to_json(
+ compute.InterconnectsGetDiagnosticsResponse()
+ )
- request = compute.InsertInterconnectRequest()
+ request = compute.GetDiagnosticsInterconnectRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.InterconnectsGetDiagnosticsResponse
- client.insert_unary(
+ client.get_diagnostics(
request,
metadata=[
("key", "val"),
@@ -1682,8 +1613,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertInterconnectRequest
+def test_get_diagnostics_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetDiagnosticsInterconnectRequest
):
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1691,55 +1622,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["interconnect_resource"] = {
- "admin_enabled": True,
- "circuit_infos": [
- {
- "customer_demarc_id": "customer_demarc_id_value",
- "google_circuit_id": "google_circuit_id_value",
- "google_demarc_id": "google_demarc_id_value",
- }
- ],
- "creation_timestamp": "creation_timestamp_value",
- "customer_name": "customer_name_value",
- "description": "description_value",
- "expected_outages": [
- {
- "affected_circuits": [
- "affected_circuits_value_1",
- "affected_circuits_value_2",
- ],
- "description": "description_value",
- "end_time": 837,
- "issue_type": "issue_type_value",
- "name": "name_value",
- "source": "source_value",
- "start_time": 1084,
- "state": "state_value",
- }
- ],
- "google_ip_address": "google_ip_address_value",
- "google_reference_id": "google_reference_id_value",
- "id": 205,
- "interconnect_attachments": [
- "interconnect_attachments_value_1",
- "interconnect_attachments_value_2",
- ],
- "interconnect_type": "interconnect_type_value",
- "kind": "kind_value",
- "link_type": "link_type_value",
- "location": "location_value",
- "name": "name_value",
- "noc_contact_email": "noc_contact_email_value",
- "operational_status": "operational_status_value",
- "peer_ip_address": "peer_ip_address_value",
- "provisioned_link_count": 2375,
- "requested_link_count": 2151,
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "state": "state_value",
- }
+ request_init = {"project": "sample1", "interconnect": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1751,10 +1634,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get_diagnostics(request)
-def test_insert_unary_rest_flattened():
+def test_get_diagnostics_rest_flattened():
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1763,40 +1646,42 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.InterconnectsGetDiagnosticsResponse()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "interconnect": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- interconnect_resource=compute.Interconnect(admin_enabled=True),
+ interconnect="interconnect_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InterconnectsGetDiagnosticsResponse.to_json(
+ return_value
+ )
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get_diagnostics(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/interconnects"
+ "%s/compute/v1/projects/{project}/global/interconnects/{interconnect}/getDiagnostics"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_diagnostics_rest_flattened_error(transport: str = "rest"):
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1805,14 +1690,14 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertInterconnectRequest(),
+ client.get_diagnostics(
+ compute.GetDiagnosticsInterconnectRequest(),
project="project_value",
- interconnect_resource=compute.Interconnect(admin_enabled=True),
+ interconnect="interconnect_value",
)
-def test_insert_unary_rest_error():
+def test_get_diagnostics_rest_error():
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1821,11 +1706,11 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListInterconnectsRequest,
+ compute.InsertInterconnectRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_insert_rest(request_type):
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1833,38 +1718,1248 @@ def test_list_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.InterconnectList(
- id="id_value",
- kind="kind_value",
- next_page_token="next_page_token_value",
+ request_init["interconnect_resource"] = {
+ "admin_enabled": True,
+ "circuit_infos": [
+ {
+ "customer_demarc_id": "customer_demarc_id_value",
+ "google_circuit_id": "google_circuit_id_value",
+ "google_demarc_id": "google_demarc_id_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "customer_name": "customer_name_value",
+ "description": "description_value",
+ "expected_outages": [
+ {
+ "affected_circuits": [
+ "affected_circuits_value_1",
+ "affected_circuits_value_2",
+ ],
+ "description": "description_value",
+ "end_time": 837,
+ "issue_type": "issue_type_value",
+ "name": "name_value",
+ "source": "source_value",
+ "start_time": 1084,
+ "state": "state_value",
+ }
+ ],
+ "google_ip_address": "google_ip_address_value",
+ "google_reference_id": "google_reference_id_value",
+ "id": 205,
+ "interconnect_attachments": [
+ "interconnect_attachments_value_1",
+ "interconnect_attachments_value_2",
+ ],
+ "interconnect_type": "interconnect_type_value",
+ "kind": "kind_value",
+ "link_type": "link_type_value",
+ "location": "location_value",
+ "name": "name_value",
+ "noc_contact_email": "noc_contact_email_value",
+ "operational_status": "operational_status_value",
+ "peer_ip_address": "peer_ip_address_value",
+ "provisioned_link_count": 2375,
+ "requested_link_count": 2151,
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "state": "state_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertInterconnectRequest):
+ transport_class = transports.InterconnectsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.InterconnectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "interconnectResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.InterconnectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InterconnectsRestInterceptor(),
+ )
+ client = InterconnectsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InterconnectsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.InterconnectsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertInterconnectRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertInterconnectRequest
+):
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["interconnect_resource"] = {
+ "admin_enabled": True,
+ "circuit_infos": [
+ {
+ "customer_demarc_id": "customer_demarc_id_value",
+ "google_circuit_id": "google_circuit_id_value",
+ "google_demarc_id": "google_demarc_id_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "customer_name": "customer_name_value",
+ "description": "description_value",
+ "expected_outages": [
+ {
+ "affected_circuits": [
+ "affected_circuits_value_1",
+ "affected_circuits_value_2",
+ ],
+ "description": "description_value",
+ "end_time": 837,
+ "issue_type": "issue_type_value",
+ "name": "name_value",
+ "source": "source_value",
+ "start_time": 1084,
+ "state": "state_value",
+ }
+ ],
+ "google_ip_address": "google_ip_address_value",
+ "google_reference_id": "google_reference_id_value",
+ "id": 205,
+ "interconnect_attachments": [
+ "interconnect_attachments_value_1",
+ "interconnect_attachments_value_2",
+ ],
+ "interconnect_type": "interconnect_type_value",
+ "kind": "kind_value",
+ "link_type": "link_type_value",
+ "location": "location_value",
+ "name": "name_value",
+ "noc_contact_email": "noc_contact_email_value",
+ "operational_status": "operational_status_value",
+ "peer_ip_address": "peer_ip_address_value",
+ "provisioned_link_count": 2375,
+ "requested_link_count": 2151,
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "state": "state_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ interconnect_resource=compute.Interconnect(admin_enabled=True),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/interconnects"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertInterconnectRequest(),
+ project="project_value",
+ interconnect_resource=compute.Interconnect(admin_enabled=True),
+ )
+
+
+def test_insert_rest_error():
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertInterconnectRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["interconnect_resource"] = {
+ "admin_enabled": True,
+ "circuit_infos": [
+ {
+ "customer_demarc_id": "customer_demarc_id_value",
+ "google_circuit_id": "google_circuit_id_value",
+ "google_demarc_id": "google_demarc_id_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "customer_name": "customer_name_value",
+ "description": "description_value",
+ "expected_outages": [
+ {
+ "affected_circuits": [
+ "affected_circuits_value_1",
+ "affected_circuits_value_2",
+ ],
+ "description": "description_value",
+ "end_time": 837,
+ "issue_type": "issue_type_value",
+ "name": "name_value",
+ "source": "source_value",
+ "start_time": 1084,
+ "state": "state_value",
+ }
+ ],
+ "google_ip_address": "google_ip_address_value",
+ "google_reference_id": "google_reference_id_value",
+ "id": 205,
+ "interconnect_attachments": [
+ "interconnect_attachments_value_1",
+ "interconnect_attachments_value_2",
+ ],
+ "interconnect_type": "interconnect_type_value",
+ "kind": "kind_value",
+ "link_type": "link_type_value",
+ "location": "location_value",
+ "name": "name_value",
+ "noc_contact_email": "noc_contact_email_value",
+ "operational_status": "operational_status_value",
+ "peer_ip_address": "peer_ip_address_value",
+ "provisioned_link_count": 2375,
+ "requested_link_count": 2151,
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "state": "state_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertInterconnectRequest,
+):
+ transport_class = transports.InterconnectsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.InterconnectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "interconnectResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.InterconnectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InterconnectsRestInterceptor(),
+ )
+ client = InterconnectsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InterconnectsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.InterconnectsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertInterconnectRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertInterconnectRequest
+):
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["interconnect_resource"] = {
+ "admin_enabled": True,
+ "circuit_infos": [
+ {
+ "customer_demarc_id": "customer_demarc_id_value",
+ "google_circuit_id": "google_circuit_id_value",
+ "google_demarc_id": "google_demarc_id_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "customer_name": "customer_name_value",
+ "description": "description_value",
+ "expected_outages": [
+ {
+ "affected_circuits": [
+ "affected_circuits_value_1",
+ "affected_circuits_value_2",
+ ],
+ "description": "description_value",
+ "end_time": 837,
+ "issue_type": "issue_type_value",
+ "name": "name_value",
+ "source": "source_value",
+ "start_time": 1084,
+ "state": "state_value",
+ }
+ ],
+ "google_ip_address": "google_ip_address_value",
+ "google_reference_id": "google_reference_id_value",
+ "id": 205,
+ "interconnect_attachments": [
+ "interconnect_attachments_value_1",
+ "interconnect_attachments_value_2",
+ ],
+ "interconnect_type": "interconnect_type_value",
+ "kind": "kind_value",
+ "link_type": "link_type_value",
+ "location": "location_value",
+ "name": "name_value",
+ "noc_contact_email": "noc_contact_email_value",
+ "operational_status": "operational_status_value",
+ "peer_ip_address": "peer_ip_address_value",
+ "provisioned_link_count": 2375,
+ "requested_link_count": 2151,
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "state": "state_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ interconnect_resource=compute.Interconnect(admin_enabled=True),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/interconnects"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertInterconnectRequest(),
+ project="project_value",
+ interconnect_resource=compute.Interconnect(admin_enabled=True),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListInterconnectsRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InterconnectList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InterconnectList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListInterconnectsRequest):
+ transport_class = transports.InterconnectsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InterconnectList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InterconnectList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.InterconnectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.InterconnectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.InterconnectsRestInterceptor(),
+ )
+ client = InterconnectsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.InterconnectsRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.InterconnectsRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.InterconnectList.to_json(
+ compute.InterconnectList()
+ )
+
+ request = compute.ListInterconnectsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.InterconnectList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListInterconnectsRequest
+):
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InterconnectList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InterconnectList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/interconnects"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListInterconnectsRequest(),
+ project="project_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.InterconnectList(
+ items=[
+ compute.Interconnect(),
+ compute.Interconnect(),
+ compute.Interconnect(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.InterconnectList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.InterconnectList(
+ items=[
+ compute.Interconnect(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.InterconnectList(
+ items=[
+ compute.Interconnect(),
+ compute.Interconnect(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.InterconnectList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Interconnect) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchInterconnectRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = InterconnectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "interconnect": "sample2"}
+ request_init["interconnect_resource"] = {
+ "admin_enabled": True,
+ "circuit_infos": [
+ {
+ "customer_demarc_id": "customer_demarc_id_value",
+ "google_circuit_id": "google_circuit_id_value",
+ "google_demarc_id": "google_demarc_id_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "customer_name": "customer_name_value",
+ "description": "description_value",
+ "expected_outages": [
+ {
+ "affected_circuits": [
+ "affected_circuits_value_1",
+ "affected_circuits_value_2",
+ ],
+ "description": "description_value",
+ "end_time": 837,
+ "issue_type": "issue_type_value",
+ "name": "name_value",
+ "source": "source_value",
+ "start_time": 1084,
+ "state": "state_value",
+ }
+ ],
+ "google_ip_address": "google_ip_address_value",
+ "google_reference_id": "google_reference_id_value",
+ "id": 205,
+ "interconnect_attachments": [
+ "interconnect_attachments_value_1",
+ "interconnect_attachments_value_2",
+ ],
+ "interconnect_type": "interconnect_type_value",
+ "kind": "kind_value",
+ "link_type": "link_type_value",
+ "location": "location_value",
+ "name": "name_value",
+ "noc_contact_email": "noc_contact_email_value",
+ "operational_status": "operational_status_value",
+ "peer_ip_address": "peer_ip_address_value",
+ "provisioned_link_count": 2375,
+ "requested_link_count": 2151,
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "state": "state_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InterconnectList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(request_type=compute.ListInterconnectsRequest):
+def test_patch_rest_required_fields(request_type=compute.PatchInterconnectRequest):
transport_class = transports.InterconnectsRestTransport
request_init = {}
+ request_init["interconnect"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1877,29 +2972,24 @@ def test_list_rest_required_fields(request_type=compute.ListInterconnectsRequest
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["interconnect"] = "interconnect_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "interconnect" in jsonified_request
+ assert jsonified_request["interconnect"] == "interconnect_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -1910,7 +3000,7 @@ def test_list_rest_required_fields(request_type=compute.ListInterconnectsRequest
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InterconnectList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1921,46 +3011,45 @@ def test_list_rest_required_fields(request_type=compute.ListInterconnectsRequest
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InterconnectList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_rest_unset_required_fields():
transport = transports.InterconnectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "interconnect",
+ "interconnectResource",
+ "project",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.InterconnectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1973,9 +3062,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.InterconnectsRestInterceptor, "post_list"
+ transports.InterconnectsRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.InterconnectsRestInterceptor, "pre_list"
+ transports.InterconnectsRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1990,19 +3079,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InterconnectList.to_json(
- compute.InterconnectList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListInterconnectsRequest()
+ request = compute.PatchInterconnectRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InterconnectList
+ post.return_value = compute.Operation
- client.list(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -2014,8 +3101,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListInterconnectsRequest
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchInterconnectRequest
):
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2023,7 +3110,55 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "interconnect": "sample2"}
+ request_init["interconnect_resource"] = {
+ "admin_enabled": True,
+ "circuit_infos": [
+ {
+ "customer_demarc_id": "customer_demarc_id_value",
+ "google_circuit_id": "google_circuit_id_value",
+ "google_demarc_id": "google_demarc_id_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "customer_name": "customer_name_value",
+ "description": "description_value",
+ "expected_outages": [
+ {
+ "affected_circuits": [
+ "affected_circuits_value_1",
+ "affected_circuits_value_2",
+ ],
+ "description": "description_value",
+ "end_time": 837,
+ "issue_type": "issue_type_value",
+ "name": "name_value",
+ "source": "source_value",
+ "start_time": 1084,
+ "state": "state_value",
+ }
+ ],
+ "google_ip_address": "google_ip_address_value",
+ "google_reference_id": "google_reference_id_value",
+ "id": 205,
+ "interconnect_attachments": [
+ "interconnect_attachments_value_1",
+ "interconnect_attachments_value_2",
+ ],
+ "interconnect_type": "interconnect_type_value",
+ "kind": "kind_value",
+ "link_type": "link_type_value",
+ "location": "location_value",
+ "name": "name_value",
+ "noc_contact_email": "noc_contact_email_value",
+ "operational_status": "operational_status_value",
+ "peer_ip_address": "peer_ip_address_value",
+ "provisioned_link_count": 2375,
+ "requested_link_count": 2151,
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "state": "state_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2035,10 +3170,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch(request)
-def test_list_rest_flattened():
+def test_patch_rest_flattened():
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2047,39 +3182,41 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InterconnectList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "interconnect": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ interconnect="interconnect_value",
+ interconnect_resource=compute.Interconnect(admin_enabled=True),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InterconnectList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/interconnects"
+ "%s/compute/v1/projects/{project}/global/interconnects/{interconnect}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = InterconnectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2088,72 +3225,19 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListInterconnectsRequest(),
+ client.patch(
+ compute.PatchInterconnectRequest(),
project="project_value",
+ interconnect="interconnect_value",
+ interconnect_resource=compute.Interconnect(admin_enabled=True),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_rest_error():
client = InterconnectsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.InterconnectList(
- items=[
- compute.Interconnect(),
- compute.Interconnect(),
- compute.Interconnect(),
- ],
- next_page_token="abc",
- ),
- compute.InterconnectList(
- items=[],
- next_page_token="def",
- ),
- compute.InterconnectList(
- items=[
- compute.Interconnect(),
- ],
- next_page_token="ghi",
- ),
- compute.InterconnectList(
- items=[
- compute.Interconnect(),
- compute.Interconnect(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.InterconnectList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Interconnect) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
@@ -2258,28 +3342,6 @@ def test_patch_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_patch_unary_rest_required_fields(
@@ -2643,6 +3705,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = InterconnectsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_interconnects_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2679,6 +3754,14 @@ def test_interconnects_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_interconnects_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_license_codes.py b/tests/unit/gapic/compute_v1/test_license_codes.py
index 3c7fdcb12..1522c08df 100644
--- a/tests/unit/gapic/compute_v1/test_license_codes.py
+++ b/tests/unit/gapic/compute_v1/test_license_codes.py
@@ -1149,6 +1149,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = LicenseCodesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_license_codes_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -1181,6 +1194,14 @@ def test_license_codes_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_license_codes_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_licenses.py b/tests/unit/gapic/compute_v1/test_licenses.py
index 1bc619985..8e24e60ee 100644
--- a/tests/unit/gapic/compute_v1/test_licenses.py
+++ b/tests/unit/gapic/compute_v1/test_licenses.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -512,7 +514,7 @@ def test_licenses_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = LicensesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -556,10 +558,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -584,7 +586,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(request_type=compute.DeleteLicenseRequest):
+def test_delete_rest_required_fields(request_type=compute.DeleteLicenseRequest):
transport_class = transports.LicensesRestTransport
request_init = {}
@@ -659,7 +661,7 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteLicenseReq
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = [
(
@@ -671,7 +673,7 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteLicenseReq
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.LicensesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -694,7 +696,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.LicensesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.LicensesRestInterceptor(),
@@ -732,7 +734,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -744,7 +746,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteLicenseRequest
):
client = LicensesClient(
@@ -765,10 +767,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = LicensesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -797,7 +799,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -810,7 +812,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = LicensesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -819,14 +821,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteLicenseRequest(),
project="project_value",
license_="license__value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = LicensesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -835,11 +837,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetLicenseRequest,
+ compute.DeleteLicenseRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = LicensesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -852,40 +854,44 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.License(
- charges_use_fee=True,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- license_code=1245,
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- transferable=True,
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.License.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.License)
- assert response.charges_use_fee is True
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.license_code == 1245
- assert response.name == "name_value"
- assert response.self_link == "self_link_value"
- assert response.transferable is True
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetLicenseRequest):
+def test_delete_unary_rest_required_fields(request_type=compute.DeleteLicenseRequest):
transport_class = transports.LicensesRestTransport
request_init = {}
@@ -903,7 +909,7 @@ def test_get_rest_required_fields(request_type=compute.GetLicenseRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -915,9 +921,14 @@ def test_get_rest_required_fields(request_type=compute.GetLicenseRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("license_",))
+ assert not set(unset_fields) - set(
+ (
+ "license_",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -933,7 +944,581 @@ def test_get_rest_required_fields(request_type=compute.GetLicenseRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.License()
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "delete",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete_unary(request)
+
+ expected_params = [
+ (
+ "license",
+ "",
+ ),
+ ]
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_unary_rest_unset_required_fields():
+ transport = transports.LicensesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "license",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "license",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_unary_rest_interceptors(null_interceptor):
+ transport = transports.LicensesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.LicensesRestInterceptor(),
+ )
+ client = LicensesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.LicensesRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.LicensesRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteLicenseRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteLicenseRequest
+):
+ client = LicensesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "license_": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete_unary(request)
+
+
+def test_delete_unary_rest_flattened():
+ client = LicensesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "license_": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ license_="license__value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/licenses/{license_}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+ client = LicensesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete_unary(
+ compute.DeleteLicenseRequest(),
+ project="project_value",
+ license_="license__value",
+ )
+
+
+def test_delete_unary_rest_error():
+ client = LicensesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetLicenseRequest,
+ dict,
+ ],
+)
+def test_get_rest(request_type):
+ client = LicensesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "license_": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.License(
+ charges_use_fee=True,
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ id=205,
+ kind="kind_value",
+ license_code=1245,
+ name="name_value",
+ self_link="self_link_value",
+ transferable=True,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.License.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.License)
+ assert response.charges_use_fee is True
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.license_code == 1245
+ assert response.name == "name_value"
+ assert response.self_link == "self_link_value"
+ assert response.transferable is True
+
+
+def test_get_rest_required_fields(request_type=compute.GetLicenseRequest):
+ transport_class = transports.LicensesRestTransport
+
+ request_init = {}
+ request_init["license_"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+ assert "license" not in jsonified_request
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+ assert "license" in jsonified_request
+ assert jsonified_request["license"] == request_init["license_"]
+
+ jsonified_request["license"] = "license__value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("license_",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "license" in jsonified_request
+ assert jsonified_request["license"] == "license__value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = LicensesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.License()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.License.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = [
+ (
+ "license",
+ "",
+ ),
+ ]
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.LicensesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("license",))
+ & set(
+ (
+ "license",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.LicensesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.LicensesRestInterceptor(),
+ )
+ client = LicensesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.LicensesRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.LicensesRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.License.to_json(compute.License())
+
+ request = compute.GetLicenseRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.License
+
+ client.get(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetLicenseRequest
+):
+ client = LicensesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "license_": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = LicensesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.License()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "license_": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ license_="license__value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.License.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/licenses/{license_}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = LicensesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetLicenseRequest(),
+ project="project_value",
+ license_="license__value",
+ )
+
+
+def test_get_rest_error():
+ client = LicensesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetIamPolicyLicenseRequest,
+ dict,
+ ],
+)
+def test_get_iam_policy_rest(request_type):
+ client = LicensesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicyLicenseRequest,
+):
+ transport_class = transports.LicensesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["resource"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+
+ client = LicensesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -951,41 +1536,36 @@ def test_get_rest_required_fields(request_type=compute.GetLicenseRequest):
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.License.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.get_iam_policy(request)
- expected_params = [
- (
- "license",
- "",
- ),
- ]
+ expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_get_iam_policy_rest_unset_required_fields():
transport = transports.LicensesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("license",))
+ set(("optionsRequestedPolicyVersion",))
& set(
(
- "license",
"project",
+ "resource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_get_iam_policy_rest_interceptors(null_interceptor):
transport = transports.LicensesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.LicensesRestInterceptor(),
@@ -996,9 +1576,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.LicensesRestInterceptor, "post_get"
+ transports.LicensesRestInterceptor, "post_get_iam_policy"
) as post, mock.patch.object(
- transports.LicensesRestInterceptor, "pre_get"
+ transports.LicensesRestInterceptor, "pre_get_iam_policy"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1013,17 +1593,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.License.to_json(compute.License())
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
- request = compute.GetLicenseRequest()
+ request = compute.GetIamPolicyLicenseRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.License
+ post.return_value = compute.Policy
- client.get(
+ client.get_iam_policy(
request,
metadata=[
("key", "val"),
@@ -1035,8 +1615,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetLicenseRequest
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetIamPolicyLicenseRequest
):
client = LicensesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1044,7 +1624,7 @@ def test_get_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "license_": "sample2"}
+ request_init = {"project": "sample1", "resource": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1056,10 +1636,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.get_iam_policy(request)
-def test_get_rest_flattened():
+def test_get_iam_policy_rest_flattened():
client = LicensesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1068,40 +1648,40 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.License()
+ return_value = compute.Policy()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "license_": "sample2"}
+ sample_request = {"project": "sample1", "resource": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- license_="license__value",
+ resource="resource_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.License.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.get_iam_policy(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/licenses/{license_}"
+ "%s/compute/v1/projects/{project}/global/licenses/{resource}/getIamPolicy"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
client = LicensesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1110,14 +1690,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetLicenseRequest(),
+ client.get_iam_policy(
+ compute.GetIamPolicyLicenseRequest(),
project="project_value",
- license_="license__value",
+ resource="resource_value",
)
-def test_get_rest_error():
+def test_get_iam_policy_rest_error():
client = LicensesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1126,52 +1706,99 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicyLicenseRequest,
+ compute.InsertLicenseRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_insert_rest(request_type):
client = LicensesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
+ request_init = {"project": "sample1"}
+ request_init["license_resource"] = {
+ "charges_use_fee": True,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "license_code": 1245,
+ "name": "name_value",
+ "resource_requirements": {"min_guest_cpu_count": 2042, "min_memory_mb": 1386},
+ "self_link": "self_link_value",
+ "transferable": True,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicyLicenseRequest,
-):
+def test_insert_rest_required_fields(request_type=compute.InsertLicenseRequest):
transport_class = transports.LicensesRestTransport
request_init = {}
request_init["project"] = ""
- request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1183,26 +1810,23 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
client = LicensesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1211,7 +1835,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1222,43 +1846,44 @@ def test_get_iam_policy_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.LicensesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
+ set(("requestId",))
& set(
(
+ "licenseResource",
"project",
- "resource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.LicensesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.LicensesRestInterceptor(),
@@ -1269,9 +1894,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.LicensesRestInterceptor, "post_get_iam_policy"
+ transports.LicensesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.LicensesRestInterceptor, "pre_get_iam_policy"
+ transports.LicensesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1286,17 +1911,17 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetIamPolicyLicenseRequest()
+ request = compute.InsertLicenseRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.get_iam_policy(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1308,8 +1933,8 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.GetIamPolicyLicenseRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertLicenseRequest
):
client = LicensesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1317,7 +1942,19 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
+ request_init = {"project": "sample1"}
+ request_init["license_resource"] = {
+ "charges_use_fee": True,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "license_code": 1245,
+ "name": "name_value",
+ "resource_requirements": {"min_guest_cpu_count": 2042, "min_memory_mb": 1386},
+ "self_link": "self_link_value",
+ "transferable": True,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1329,10 +1966,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.insert(request)
-def test_get_iam_policy_rest_flattened():
+def test_insert_rest_flattened():
client = LicensesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1341,40 +1978,39 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "resource": "sample2"}
+ sample_request = {"project": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- resource="resource_value",
+ license_resource=compute.License(charges_use_fee=True),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/licenses/{resource}/getIamPolicy"
- % client.transport._host,
+ "%s/compute/v1/projects/{project}/global/licenses" % client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = LicensesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1383,14 +2019,14 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicyLicenseRequest(),
+ client.insert(
+ compute.InsertLicenseRequest(),
project="project_value",
- resource="resource_value",
+ license_resource=compute.License(charges_use_fee=True),
)
-def test_get_iam_policy_rest_error():
+def test_insert_rest_error():
client = LicensesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1463,28 +2099,6 @@ def test_insert_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_insert_unary_rest_required_fields(request_type=compute.InsertLicenseRequest):
@@ -2848,6 +3462,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = LicensesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_licenses_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2885,6 +3512,14 @@ def test_licenses_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_licenses_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_machine_images.py b/tests/unit/gapic/compute_v1/test_machine_images.py
index eff0d59cc..5e9e70c41 100644
--- a/tests/unit/gapic/compute_v1/test_machine_images.py
+++ b/tests/unit/gapic/compute_v1/test_machine_images.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -525,7 +527,7 @@ def test_machine_images_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = MachineImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -569,10 +571,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -597,9 +599,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteMachineImageRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteMachineImageRequest):
transport_class = transports.MachineImagesRestTransport
request_init = {}
@@ -666,14 +666,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.MachineImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -691,7 +691,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.MachineImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -731,7 +731,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -743,7 +743,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteMachineImageRequest
):
client = MachineImagesClient(
@@ -764,10 +764,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = MachineImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -796,7 +796,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -809,7 +809,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = MachineImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -818,14 +818,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteMachineImageRequest(),
project="project_value",
machine_image="machine_image_value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = MachineImagesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -834,11 +834,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetMachineImageRequest,
+ compute.DeleteMachineImageRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = MachineImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -851,46 +851,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.MachineImage(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- guest_flush=True,
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- satisfies_pzs=True,
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- source_instance="source_instance_value",
- status="status_value",
- storage_locations=["storage_locations_value"],
- total_storage_bytes=2046,
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.MachineImage.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.MachineImage)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.guest_flush is True
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.satisfies_pzs is True
- assert response.self_link == "self_link_value"
- assert response.source_instance == "source_instance_value"
- assert response.status == "status_value"
- assert response.storage_locations == ["storage_locations_value"]
- assert response.total_storage_bytes == 2046
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetMachineImageRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteMachineImageRequest,
+):
transport_class = transports.MachineImagesRestTransport
request_init = {}
@@ -907,7 +907,7 @@ def test_get_rest_required_fields(request_type=compute.GetMachineImageRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -917,7 +917,9 @@ def test_get_rest_required_fields(request_type=compute.GetMachineImageRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -933,7 +935,7 @@ def test_get_rest_required_fields(request_type=compute.GetMachineImageRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.MachineImage()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -944,32 +946,32 @@ def test_get_rest_required_fields(request_type=compute.GetMachineImageRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.MachineImage.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.MachineImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"machineImage",
@@ -980,7 +982,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.MachineImagesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -993,9 +995,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.MachineImagesRestInterceptor, "post_get"
+ transports.MachineImagesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.MachineImagesRestInterceptor, "pre_get"
+ transports.MachineImagesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1010,17 +1012,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.MachineImage.to_json(compute.MachineImage())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetMachineImageRequest()
+ request = compute.DeleteMachineImageRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.MachineImage
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1032,8 +1034,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetMachineImageRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteMachineImageRequest
):
client = MachineImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1053,10 +1055,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = MachineImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1065,7 +1067,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.MachineImage()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "machine_image": "sample2"}
@@ -1080,12 +1082,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.MachineImage.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1098,7 +1100,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = MachineImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1107,14 +1109,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetMachineImageRequest(),
+ client.delete_unary(
+ compute.DeleteMachineImageRequest(),
project="project_value",
machine_image="machine_image_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = MachineImagesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1123,52 +1125,68 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicyMachineImageRequest,
+ compute.GetMachineImageRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_get_rest(request_type):
client = MachineImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
+ request_init = {"project": "sample1", "machine_image": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.MachineImage(
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ guest_flush=True,
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ satisfies_pzs=True,
+ self_link="self_link_value",
+ source_instance="source_instance_value",
+ status="status_value",
+ storage_locations=["storage_locations_value"],
+ total_storage_bytes=2046,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.MachineImage.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, compute.MachineImage)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.guest_flush is True
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.satisfies_pzs is True
+ assert response.self_link == "self_link_value"
+ assert response.source_instance == "source_instance_value"
+ assert response.status == "status_value"
+ assert response.storage_locations == ["storage_locations_value"]
+ assert response.total_storage_bytes == 2046
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicyMachineImageRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetMachineImageRequest):
transport_class = transports.MachineImagesRestTransport
request_init = {}
+ request_init["machine_image"] = ""
request_init["project"] = ""
- request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1180,26 +1198,24 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["machineImage"] = "machine_image_value"
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "machineImage" in jsonified_request
+ assert jsonified_request["machineImage"] == "machine_image_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
client = MachineImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1208,7 +1224,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.MachineImage()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1222,101 +1238,1116 @@ def test_get_iam_policy_rest_required_fields(
"method": "get",
"query_params": request_init,
}
- transcode.return_value = transcode_result
-
- response_value = Response()
- response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
- response_value._content = json_return_value.encode("UTF-8")
- req.return_value = response_value
-
- response = client.get_iam_policy(request)
-
- expected_params = []
- actual_params = req.call_args.kwargs["params"]
- assert expected_params == actual_params
-
-
-def test_get_iam_policy_rest_unset_required_fields():
- transport = transports.MachineImagesRestTransport(
- credentials=ga_credentials.AnonymousCredentials
- )
-
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
- assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
- & set(
- (
- "project",
- "resource",
- )
- )
- )
-
-
-@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
- transport = transports.MachineImagesRestTransport(
- credentials=ga_credentials.AnonymousCredentials(),
- interceptor=None
- if null_interceptor
- else transports.MachineImagesRestInterceptor(),
- )
- client = MachineImagesClient(transport=transport)
- with mock.patch.object(
- type(client.transport._session), "request"
- ) as req, mock.patch.object(
- path_template, "transcode"
- ) as transcode, mock.patch.object(
- transports.MachineImagesRestInterceptor, "post_get_iam_policy"
- ) as post, mock.patch.object(
- transports.MachineImagesRestInterceptor, "pre_get_iam_policy"
- ) as pre:
- pre.assert_not_called()
- post.assert_not_called()
-
- transcode.return_value = {
- "method": "post",
- "uri": "my_uri",
- "body": None,
- "query_params": {},
- }
-
- req.return_value = Response()
- req.return_value.status_code = 200
- req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
-
- request = compute.GetIamPolicyMachineImageRequest()
- metadata = [
- ("key", "val"),
- ("cephalopod", "squid"),
- ]
- pre.return_value = request, metadata
- post.return_value = compute.Policy
-
- client.get_iam_policy(
- request,
- metadata=[
- ("key", "val"),
- ("cephalopod", "squid"),
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.MachineImage.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.MachineImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "machineImage",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.MachineImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.MachineImagesRestInterceptor(),
+ )
+ client = MachineImagesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.MachineImagesRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.MachineImagesRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.MachineImage.to_json(compute.MachineImage())
+
+ request = compute.GetMachineImageRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.MachineImage
+
+ client.get(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetMachineImageRequest
+):
+ client = MachineImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "machine_image": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = MachineImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.MachineImage()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "machine_image": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ machine_image="machine_image_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.MachineImage.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/machineImages/{machine_image}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = MachineImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetMachineImageRequest(),
+ project="project_value",
+ machine_image="machine_image_value",
+ )
+
+
+def test_get_rest_error():
+ client = MachineImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetIamPolicyMachineImageRequest,
+ dict,
+ ],
+)
+def test_get_iam_policy_rest(request_type):
+ client = MachineImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicyMachineImageRequest,
+):
+ transport_class = transports.MachineImagesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["resource"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+
+ client = MachineImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_iam_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_iam_policy_rest_unset_required_fields():
+ transport = transports.MachineImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("optionsRequestedPolicyVersion",))
+ & set(
+ (
+ "project",
+ "resource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_iam_policy_rest_interceptors(null_interceptor):
+ transport = transports.MachineImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.MachineImagesRestInterceptor(),
+ )
+ client = MachineImagesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.MachineImagesRestInterceptor, "post_get_iam_policy"
+ ) as post, mock.patch.object(
+ transports.MachineImagesRestInterceptor, "pre_get_iam_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
+
+ request = compute.GetIamPolicyMachineImageRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Policy
+
+ client.get_iam_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetIamPolicyMachineImageRequest
+):
+ client = MachineImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_iam_policy(request)
+
+
+def test_get_iam_policy_rest_flattened():
+ client = MachineImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "resource": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ resource="resource_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_iam_policy(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/machineImages/{resource}/getIamPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+ client = MachineImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_iam_policy(
+ compute.GetIamPolicyMachineImageRequest(),
+ project="project_value",
+ resource="resource_value",
+ )
+
+
+def test_get_iam_policy_rest_error():
+ client = MachineImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertMachineImageRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = MachineImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["machine_image_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "guest_flush": True,
+ "id": 205,
+ "instance_properties": {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "labels": {},
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_manager_tags": {},
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ },
+ "kind": "kind_value",
+ "machine_image_encryption_key": {},
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "saved_disks": [
+ {
+ "kind": "kind_value",
+ "source_disk": "source_disk_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ }
+ ],
+ "self_link": "self_link_value",
+ "source_disk_encryption_keys": [
+ {"disk_encryption_key": {}, "source_disk": "source_disk_value"}
+ ],
+ "source_instance": "source_instance_value",
+ "source_instance_properties": {
+ "can_ip_forward": True,
+ "deletion_protection": True,
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {},
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "guest_os_features": {},
+ "index": 536,
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "source": "source_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ "type_": "type__value",
+ }
+ ],
+ "guest_accelerators": {},
+ "labels": {},
+ "machine_type": "machine_type_value",
+ "metadata": {},
+ "min_cpu_platform": "min_cpu_platform_value",
+ "network_interfaces": {},
+ "scheduling": {},
+ "service_accounts": {},
+ "tags": {},
+ },
+ "status": "status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ "total_storage_bytes": 2046,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertMachineImageRequest):
+ transport_class = transports.MachineImagesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "source_instance",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = MachineImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.MachineImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "sourceInstance",
+ )
+ )
+ & set(
+ (
+ "machineImageResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.MachineImagesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.MachineImagesRestInterceptor(),
+ )
+ client = MachineImagesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.MachineImagesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.MachineImagesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertMachineImageRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertMachineImageRequest
+):
+ client = MachineImagesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["machine_image_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "guest_flush": True,
+ "id": 205,
+ "instance_properties": {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "labels": {},
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_manager_tags": {},
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ },
+ "kind": "kind_value",
+ "machine_image_encryption_key": {},
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "saved_disks": [
+ {
+ "kind": "kind_value",
+ "source_disk": "source_disk_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ }
+ ],
+ "self_link": "self_link_value",
+ "source_disk_encryption_keys": [
+ {"disk_encryption_key": {}, "source_disk": "source_disk_value"}
+ ],
+ "source_instance": "source_instance_value",
+ "source_instance_properties": {
+ "can_ip_forward": True,
+ "deletion_protection": True,
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {},
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "guest_os_features": {},
+ "index": 536,
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "source": "source_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ "type_": "type__value",
+ }
],
- )
-
- pre.assert_called_once()
- post.assert_called_once()
-
-
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.GetIamPolicyMachineImageRequest
-):
- client = MachineImagesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
- )
-
- # send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
+ "guest_accelerators": {},
+ "labels": {},
+ "machine_type": "machine_type_value",
+ "metadata": {},
+ "min_cpu_platform": "min_cpu_platform_value",
+ "network_interfaces": {},
+ "scheduling": {},
+ "service_accounts": {},
+ "tags": {},
+ },
+ "status": "status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ "total_storage_bytes": 2046,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1328,10 +2359,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.insert(request)
-def test_get_iam_policy_rest_flattened():
+def test_insert_rest_flattened():
client = MachineImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1340,40 +2371,42 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "resource": "sample2"}
+ sample_request = {"project": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- resource="resource_value",
+ machine_image_resource=compute.MachineImage(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/machineImages/{resource}/getIamPolicy"
+ "%s/compute/v1/projects/{project}/global/machineImages"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = MachineImagesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1382,14 +2415,16 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicyMachineImageRequest(),
+ client.insert(
+ compute.InsertMachineImageRequest(),
project="project_value",
- resource="resource_value",
+ machine_image_resource=compute.MachineImage(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
-def test_get_iam_policy_rest_error():
+def test_insert_rest_error():
client = MachineImagesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1661,28 +2696,6 @@ def test_insert_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_insert_unary_rest_required_fields(
@@ -3273,6 +4286,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = MachineImagesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_machine_images_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3310,6 +4336,14 @@ def test_machine_images_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_machine_images_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_machine_types.py b/tests/unit/gapic/compute_v1/test_machine_types.py
index 298497c69..6522ffa0e 100644
--- a/tests/unit/gapic/compute_v1/test_machine_types.py
+++ b/tests/unit/gapic/compute_v1/test_machine_types.py
@@ -1589,6 +1589,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = MachineTypesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_machine_types_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -1622,6 +1635,14 @@ def test_machine_types_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_machine_types_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_network_edge_security_services.py b/tests/unit/gapic/compute_v1/test_network_edge_security_services.py
index c07c55417..669684e96 100644
--- a/tests/unit/gapic/compute_v1/test_network_edge_security_services.py
+++ b/tests/unit/gapic/compute_v1/test_network_edge_security_services.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -932,7 +934,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = NetworkEdgeSecurityServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -980,10 +982,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1008,7 +1010,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteNetworkEdgeSecurityServiceRequest,
):
transport_class = transports.NetworkEdgeSecurityServicesRestTransport
@@ -1086,14 +1088,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.NetworkEdgeSecurityServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1112,7 +1114,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.NetworkEdgeSecurityServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1152,7 +1154,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1164,7 +1166,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest",
request_type=compute.DeleteNetworkEdgeSecurityServiceRequest,
):
@@ -1190,10 +1192,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = NetworkEdgeSecurityServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1227,7 +1229,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1240,7 +1242,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = NetworkEdgeSecurityServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1249,7 +1251,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteNetworkEdgeSecurityServiceRequest(),
project="project_value",
region="region_value",
@@ -1257,7 +1259,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = NetworkEdgeSecurityServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1266,11 +1268,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetNetworkEdgeSecurityServiceRequest,
+ compute.DeleteNetworkEdgeSecurityServiceRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = NetworkEdgeSecurityServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1287,48 +1289,1042 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NetworkEdgeSecurityService(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.delete_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteNetworkEdgeSecurityServiceRequest,
+):
+ transport_class = transports.NetworkEdgeSecurityServicesRestTransport
+
+ request_init = {}
+ request_init["network_edge_security_service"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request[
+ "networkEdgeSecurityService"
+ ] = "network_edge_security_service_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "networkEdgeSecurityService" in jsonified_request
+ assert (
+ jsonified_request["networkEdgeSecurityService"]
+ == "network_edge_security_service_value"
+ )
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "delete",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_unary_rest_unset_required_fields():
+ transport = transports.NetworkEdgeSecurityServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "networkEdgeSecurityService",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_unary_rest_interceptors(null_interceptor):
+ transport = transports.NetworkEdgeSecurityServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkEdgeSecurityServicesRestInterceptor(),
+ )
+ client = NetworkEdgeSecurityServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkEdgeSecurityServicesRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.NetworkEdgeSecurityServicesRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteNetworkEdgeSecurityServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DeleteNetworkEdgeSecurityServiceRequest,
+):
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "network_edge_security_service": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete_unary(request)
+
+
+def test_delete_unary_rest_flattened():
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "network_edge_security_service": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ network_edge_security_service="network_edge_security_service_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/networkEdgeSecurityServices/{network_edge_security_service}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete_unary(
+ compute.DeleteNetworkEdgeSecurityServiceRequest(),
+ project="project_value",
+ region="region_value",
+ network_edge_security_service="network_edge_security_service_value",
+ )
+
+
+def test_delete_unary_rest_error():
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetNetworkEdgeSecurityServiceRequest,
+ dict,
+ ],
+)
+def test_get_rest(request_type):
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "network_edge_security_service": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NetworkEdgeSecurityService(
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ fingerprint="fingerprint_value",
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ region="region_value",
+ security_policy="security_policy_value",
+ self_link="self_link_value",
+ self_link_with_id="self_link_with_id_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NetworkEdgeSecurityService.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.NetworkEdgeSecurityService)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.fingerprint == "fingerprint_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.region == "region_value"
+ assert response.security_policy == "security_policy_value"
+ assert response.self_link == "self_link_value"
+ assert response.self_link_with_id == "self_link_with_id_value"
+
+
+def test_get_rest_required_fields(
+ request_type=compute.GetNetworkEdgeSecurityServiceRequest,
+):
+ transport_class = transports.NetworkEdgeSecurityServicesRestTransport
+
+ request_init = {}
+ request_init["network_edge_security_service"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request[
+ "networkEdgeSecurityService"
+ ] = "network_edge_security_service_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "networkEdgeSecurityService" in jsonified_request
+ assert (
+ jsonified_request["networkEdgeSecurityService"]
+ == "network_edge_security_service_value"
+ )
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NetworkEdgeSecurityService()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NetworkEdgeSecurityService.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.NetworkEdgeSecurityServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "networkEdgeSecurityService",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.NetworkEdgeSecurityServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkEdgeSecurityServicesRestInterceptor(),
+ )
+ client = NetworkEdgeSecurityServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkEdgeSecurityServicesRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.NetworkEdgeSecurityServicesRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.NetworkEdgeSecurityService.to_json(
+ compute.NetworkEdgeSecurityService()
+ )
+
+ request = compute.GetNetworkEdgeSecurityServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.NetworkEdgeSecurityService
+
+ client.get(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetNetworkEdgeSecurityServiceRequest
+):
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "network_edge_security_service": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NetworkEdgeSecurityService()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "network_edge_security_service": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ network_edge_security_service="network_edge_security_service_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NetworkEdgeSecurityService.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/networkEdgeSecurityServices/{network_edge_security_service}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetNetworkEdgeSecurityServiceRequest(),
+ project="project_value",
+ region="region_value",
+ network_edge_security_service="network_edge_security_service_value",
+ )
+
+
+def test_get_rest_error():
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertNetworkEdgeSecurityServiceRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["network_edge_security_service_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertNetworkEdgeSecurityServiceRequest,
+):
+ transport_class = transports.NetworkEdgeSecurityServicesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "validate_only",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.NetworkEdgeSecurityServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "validateOnly",
+ )
+ )
+ & set(
+ (
+ "networkEdgeSecurityServiceResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.NetworkEdgeSecurityServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkEdgeSecurityServicesRestInterceptor(),
+ )
+ client = NetworkEdgeSecurityServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkEdgeSecurityServicesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.NetworkEdgeSecurityServicesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertNetworkEdgeSecurityServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.InsertNetworkEdgeSecurityServiceRequest,
+):
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["network_edge_security_service_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ network_edge_security_service_resource=compute.NetworkEdgeSecurityService(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/networkEdgeSecurityServices"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertNetworkEdgeSecurityServiceRequest(),
+ project="project_value",
+ region="region_value",
+ network_edge_security_service_resource=compute.NetworkEdgeSecurityService(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertNetworkEdgeSecurityServiceRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = NetworkEdgeSecurityServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["network_edge_security_service_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
- security_policy="security_policy_value",
self_link="self_link_value",
- self_link_with_id="self_link_with_id_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworkEdgeSecurityService.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.NetworkEdgeSecurityService)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.region == "region_value"
- assert response.security_policy == "security_policy_value"
- assert response.self_link == "self_link_value"
- assert response.self_link_with_id == "self_link_with_id_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(
- request_type=compute.GetNetworkEdgeSecurityServiceRequest,
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertNetworkEdgeSecurityServiceRequest,
):
transport_class = transports.NetworkEdgeSecurityServicesRestTransport
request_init = {}
- request_init["network_edge_security_service"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -1342,28 +2338,27 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request[
- "networkEdgeSecurityService"
- ] = "network_edge_security_service_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "validate_only",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "networkEdgeSecurityService" in jsonified_request
- assert (
- jsonified_request["networkEdgeSecurityService"]
- == "network_edge_security_service_value"
- )
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -1376,7 +2371,7 @@ def test_get_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.NetworkEdgeSecurityService()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1387,35 +2382,41 @@ def test_get_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworkEdgeSecurityService.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_insert_unary_rest_unset_required_fields():
transport = transports.NetworkEdgeSecurityServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(
+ (
+ "requestId",
+ "validateOnly",
+ )
+ )
& set(
(
- "networkEdgeSecurityService",
+ "networkEdgeSecurityServiceResource",
"project",
"region",
)
@@ -1424,7 +2425,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_insert_unary_rest_interceptors(null_interceptor):
transport = transports.NetworkEdgeSecurityServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1437,9 +2438,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkEdgeSecurityServicesRestInterceptor, "post_get"
+ transports.NetworkEdgeSecurityServicesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.NetworkEdgeSecurityServicesRestInterceptor, "pre_get"
+ transports.NetworkEdgeSecurityServicesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1454,19 +2455,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.NetworkEdgeSecurityService.to_json(
- compute.NetworkEdgeSecurityService()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetNetworkEdgeSecurityServiceRequest()
+ request = compute.InsertNetworkEdgeSecurityServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.NetworkEdgeSecurityService
+ post.return_value = compute.Operation
- client.get(
+ client.insert_unary(
request,
metadata=[
("key", "val"),
@@ -1478,8 +2477,9 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetNetworkEdgeSecurityServiceRequest
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.InsertNetworkEdgeSecurityServiceRequest,
):
client = NetworkEdgeSecurityServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1487,10 +2487,18 @@ def test_get_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "region": "sample2",
- "network_edge_security_service": "sample3",
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["network_edge_security_service_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
}
request = request_type(request_init)
@@ -1503,10 +2511,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.insert_unary(request)
-def test_get_rest_flattened():
+def test_insert_unary_rest_flattened():
client = NetworkEdgeSecurityServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1515,45 +2523,43 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NetworkEdgeSecurityService()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "region": "sample2",
- "network_edge_security_service": "sample3",
- }
+ sample_request = {"project": "sample1", "region": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- network_edge_security_service="network_edge_security_service_value",
+ network_edge_security_service_resource=compute.NetworkEdgeSecurityService(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworkEdgeSecurityService.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.insert_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/networkEdgeSecurityServices/{network_edge_security_service}"
+ "%s/compute/v1/projects/{project}/regions/{region}/networkEdgeSecurityServices"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
client = NetworkEdgeSecurityServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1562,15 +2568,17 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetNetworkEdgeSecurityServiceRequest(),
+ client.insert_unary(
+ compute.InsertNetworkEdgeSecurityServiceRequest(),
project="project_value",
region="region_value",
- network_edge_security_service="network_edge_security_service_value",
+ network_edge_security_service_resource=compute.NetworkEdgeSecurityService(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
-def test_get_rest_error():
+def test_insert_unary_rest_error():
client = NetworkEdgeSecurityServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1579,18 +2587,22 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertNetworkEdgeSecurityServiceRequest,
+ compute.PatchNetworkEdgeSecurityServiceRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_patch_rest(request_type):
client = NetworkEdgeSecurityServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "network_edge_security_service": "sample3",
+ }
request_init["network_edge_security_service_resource"] = {
"creation_timestamp": "creation_timestamp_value",
"description": "description_value",
@@ -1639,10 +2651,10 @@ def test_insert_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.patch(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1667,12 +2679,13 @@ def test_insert_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertNetworkEdgeSecurityServiceRequest,
+def test_patch_rest_required_fields(
+ request_type=compute.PatchNetworkEdgeSecurityServiceRequest,
):
transport_class = transports.NetworkEdgeSecurityServicesRestTransport
request_init = {}
+ request_init["network_edge_security_service"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -1686,27 +2699,36 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request[
+ "networkEdgeSecurityService"
+ ] = "network_edge_security_service_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
+ "paths",
"request_id",
- "validate_only",
+ "update_mask",
)
)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "networkEdgeSecurityService" in jsonified_request
+ assert (
+ jsonified_request["networkEdgeSecurityService"]
+ == "network_edge_security_service_value"
+ )
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -1730,7 +2752,7 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "patch",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -1742,28 +2764,30 @@ def test_insert_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.patch(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_patch_rest_unset_required_fields():
transport = transports.NetworkEdgeSecurityServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
+ "paths",
"requestId",
- "validateOnly",
+ "updateMask",
)
)
& set(
(
+ "networkEdgeSecurityService",
"networkEdgeSecurityServiceResource",
"project",
"region",
@@ -1773,7 +2797,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.NetworkEdgeSecurityServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1786,9 +2810,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkEdgeSecurityServicesRestInterceptor, "post_insert"
+ transports.NetworkEdgeSecurityServicesRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.NetworkEdgeSecurityServicesRestInterceptor, "pre_insert"
+ transports.NetworkEdgeSecurityServicesRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1805,7 +2829,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.InsertNetworkEdgeSecurityServiceRequest()
+ request = compute.PatchNetworkEdgeSecurityServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1813,7 +2837,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.insert_unary(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -1825,9 +2849,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest",
- request_type=compute.InsertNetworkEdgeSecurityServiceRequest,
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchNetworkEdgeSecurityServiceRequest
):
client = NetworkEdgeSecurityServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1835,7 +2858,11 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "network_edge_security_service": "sample3",
+ }
request_init["network_edge_security_service_resource"] = {
"creation_timestamp": "creation_timestamp_value",
"description": "description_value",
@@ -1859,10 +2886,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.patch(request)
-def test_insert_unary_rest_flattened():
+def test_patch_rest_flattened():
client = NetworkEdgeSecurityServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1874,12 +2901,17 @@ def test_insert_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "network_edge_security_service": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ network_edge_security_service="network_edge_security_service_value",
network_edge_security_service_resource=compute.NetworkEdgeSecurityService(
creation_timestamp="creation_timestamp_value"
),
@@ -1894,20 +2926,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/networkEdgeSecurityServices"
+ "%s/compute/v1/projects/{project}/regions/{region}/networkEdgeSecurityServices/{network_edge_security_service}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = NetworkEdgeSecurityServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1916,17 +2948,18 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertNetworkEdgeSecurityServiceRequest(),
+ client.patch(
+ compute.PatchNetworkEdgeSecurityServiceRequest(),
project="project_value",
region="region_value",
+ network_edge_security_service="network_edge_security_service_value",
network_edge_security_service_resource=compute.NetworkEdgeSecurityService(
creation_timestamp="creation_timestamp_value"
),
)
-def test_insert_unary_rest_error():
+def test_patch_rest_error():
client = NetworkEdgeSecurityServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2003,28 +3036,6 @@ def test_patch_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_patch_unary_rest_required_fields(
@@ -2388,6 +3399,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = NetworkEdgeSecurityServicesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_network_edge_security_services_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2423,6 +3447,14 @@ def test_network_edge_security_services_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_network_edge_security_services_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_network_endpoint_groups.py b/tests/unit/gapic/compute_v1/test_network_endpoint_groups.py
index 9b612f6b1..2e19d2ca6 100644
--- a/tests/unit/gapic/compute_v1/test_network_endpoint_groups.py
+++ b/tests/unit/gapic/compute_v1/test_network_endpoint_groups.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -919,7 +921,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_attach_network_endpoints_unary_rest(request_type):
+def test_attach_network_endpoints_rest(request_type):
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -978,10 +980,10 @@ def test_attach_network_endpoints_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.attach_network_endpoints_unary(request)
+ response = client.attach_network_endpoints(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1006,7 +1008,7 @@ def test_attach_network_endpoints_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_attach_network_endpoints_unary_rest_required_fields(
+def test_attach_network_endpoints_rest_required_fields(
request_type=compute.AttachNetworkEndpointsNetworkEndpointGroupRequest,
):
transport_class = transports.NetworkEndpointGroupsRestTransport
@@ -1080,14 +1082,14 @@ def test_attach_network_endpoints_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.attach_network_endpoints_unary(request)
+ response = client.attach_network_endpoints(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_attach_network_endpoints_unary_rest_unset_required_fields():
+def test_attach_network_endpoints_rest_unset_required_fields():
transport = transports.NetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1107,7 +1109,7 @@ def test_attach_network_endpoints_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_attach_network_endpoints_unary_rest_interceptors(null_interceptor):
+def test_attach_network_endpoints_rest_interceptors(null_interceptor):
transport = transports.NetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1147,7 +1149,7 @@ def test_attach_network_endpoints_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.attach_network_endpoints_unary(
+ client.attach_network_endpoints(
request,
metadata=[
("key", "val"),
@@ -1159,7 +1161,7 @@ def test_attach_network_endpoints_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_attach_network_endpoints_unary_rest_bad_request(
+def test_attach_network_endpoints_rest_bad_request(
transport: str = "rest",
request_type=compute.AttachNetworkEndpointsNetworkEndpointGroupRequest,
):
@@ -1196,10 +1198,10 @@ def test_attach_network_endpoints_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.attach_network_endpoints_unary(request)
+ client.attach_network_endpoints(request)
-def test_attach_network_endpoints_unary_rest_flattened():
+def test_attach_network_endpoints_rest_flattened():
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1238,7 +1240,7 @@ def test_attach_network_endpoints_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.attach_network_endpoints_unary(**mock_args)
+ client.attach_network_endpoints(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1251,7 +1253,7 @@ def test_attach_network_endpoints_unary_rest_flattened():
)
-def test_attach_network_endpoints_unary_rest_flattened_error(transport: str = "rest"):
+def test_attach_network_endpoints_rest_flattened_error(transport: str = "rest"):
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1260,7 +1262,7 @@ def test_attach_network_endpoints_unary_rest_flattened_error(transport: str = "r
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.attach_network_endpoints_unary(
+ client.attach_network_endpoints(
compute.AttachNetworkEndpointsNetworkEndpointGroupRequest(),
project="project_value",
zone="zone_value",
@@ -1273,7 +1275,7 @@ def test_attach_network_endpoints_unary_rest_flattened_error(transport: str = "r
)
-def test_attach_network_endpoints_unary_rest_error():
+def test_attach_network_endpoints_rest_error():
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1282,11 +1284,11 @@ def test_attach_network_endpoints_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteNetworkEndpointGroupRequest,
+ compute.AttachNetworkEndpointsNetworkEndpointGroupRequest,
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_attach_network_endpoints_unary_rest(request_type):
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1298,6 +1300,17 @@ def test_delete_unary_rest(request_type):
"zone": "sample2",
"network_endpoint_group": "sample3",
}
+ request_init["network_endpoint_groups_attach_endpoints_request_resource"] = {
+ "network_endpoints": [
+ {
+ "annotations": {},
+ "fqdn": "fqdn_value",
+ "instance": "instance_value",
+ "ip_address": "ip_address_value",
+ "port": 453,
+ }
+ ]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1334,36 +1347,14 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.attach_network_endpoints_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteNetworkEndpointGroupRequest,
+def test_attach_network_endpoints_unary_rest_required_fields(
+ request_type=compute.AttachNetworkEndpointsNetworkEndpointGroupRequest,
):
transport_class = transports.NetworkEndpointGroupsRestTransport
@@ -1382,7 +1373,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).attach_network_endpoints._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1393,7 +1384,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).attach_network_endpoints._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -1424,9 +1415,10 @@ def test_delete_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1435,24 +1427,25 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.attach_network_endpoints_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_attach_network_endpoints_unary_rest_unset_required_fields():
transport = transports.NetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.attach_network_endpoints._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"networkEndpointGroup",
+ "networkEndpointGroupsAttachEndpointsRequestResource",
"project",
"zone",
)
@@ -1461,7 +1454,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_attach_network_endpoints_unary_rest_interceptors(null_interceptor):
transport = transports.NetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1474,9 +1467,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkEndpointGroupsRestInterceptor, "post_delete"
+ transports.NetworkEndpointGroupsRestInterceptor, "post_attach_network_endpoints"
) as post, mock.patch.object(
- transports.NetworkEndpointGroupsRestInterceptor, "pre_delete"
+ transports.NetworkEndpointGroupsRestInterceptor, "pre_attach_network_endpoints"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1493,7 +1486,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteNetworkEndpointGroupRequest()
+ request = compute.AttachNetworkEndpointsNetworkEndpointGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1501,7 +1494,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.attach_network_endpoints_unary(
request,
metadata=[
("key", "val"),
@@ -1513,8 +1506,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteNetworkEndpointGroupRequest
+def test_attach_network_endpoints_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.AttachNetworkEndpointsNetworkEndpointGroupRequest,
):
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1527,6 +1521,17 @@ def test_delete_unary_rest_bad_request(
"zone": "sample2",
"network_endpoint_group": "sample3",
}
+ request_init["network_endpoint_groups_attach_endpoints_request_resource"] = {
+ "network_endpoints": [
+ {
+ "annotations": {},
+ "fqdn": "fqdn_value",
+ "instance": "instance_value",
+ "ip_address": "ip_address_value",
+ "port": 453,
+ }
+ ]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1538,10 +1543,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.attach_network_endpoints_unary(request)
-def test_delete_unary_rest_flattened():
+def test_attach_network_endpoints_unary_rest_flattened():
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1564,6 +1569,11 @@ def test_delete_unary_rest_flattened():
project="project_value",
zone="zone_value",
network_endpoint_group="network_endpoint_group_value",
+ network_endpoint_groups_attach_endpoints_request_resource=compute.NetworkEndpointGroupsAttachEndpointsRequest(
+ network_endpoints=[
+ compute.NetworkEndpoint(annotations={"key_value": "value_value"})
+ ]
+ ),
)
mock_args.update(sample_request)
@@ -1575,20 +1585,20 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.attach_network_endpoints_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups/{network_endpoint_group}"
+ "%s/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups/{network_endpoint_group}/attachNetworkEndpoints"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_attach_network_endpoints_unary_rest_flattened_error(transport: str = "rest"):
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1597,15 +1607,20 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteNetworkEndpointGroupRequest(),
+ client.attach_network_endpoints_unary(
+ compute.AttachNetworkEndpointsNetworkEndpointGroupRequest(),
project="project_value",
zone="zone_value",
network_endpoint_group="network_endpoint_group_value",
+ network_endpoint_groups_attach_endpoints_request_resource=compute.NetworkEndpointGroupsAttachEndpointsRequest(
+ network_endpoints=[
+ compute.NetworkEndpoint(annotations={"key_value": "value_value"})
+ ]
+ ),
)
-def test_delete_unary_rest_error():
+def test_attach_network_endpoints_unary_rest_error():
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1614,11 +1629,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DetachNetworkEndpointsNetworkEndpointGroupRequest,
+ compute.DeleteNetworkEndpointGroupRequest,
dict,
],
)
-def test_detach_network_endpoints_unary_rest(request_type):
+def test_delete_rest(request_type):
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1630,17 +1645,6 @@ def test_detach_network_endpoints_unary_rest(request_type):
"zone": "sample2",
"network_endpoint_group": "sample3",
}
- request_init["network_endpoint_groups_detach_endpoints_request_resource"] = {
- "network_endpoints": [
- {
- "annotations": {},
- "fqdn": "fqdn_value",
- "instance": "instance_value",
- "ip_address": "ip_address_value",
- "port": 453,
- }
- ]
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1677,10 +1681,10 @@ def test_detach_network_endpoints_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.detach_network_endpoints_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1705,8 +1709,8 @@ def test_detach_network_endpoints_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_detach_network_endpoints_unary_rest_required_fields(
- request_type=compute.DetachNetworkEndpointsNetworkEndpointGroupRequest,
+def test_delete_rest_required_fields(
+ request_type=compute.DeleteNetworkEndpointGroupRequest,
):
transport_class = transports.NetworkEndpointGroupsRestTransport
@@ -1725,7 +1729,7 @@ def test_detach_network_endpoints_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).detach_network_endpoints._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1736,7 +1740,7 @@ def test_detach_network_endpoints_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).detach_network_endpoints._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -1767,10 +1771,9 @@ def test_detach_network_endpoints_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "delete",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1779,25 +1782,24 @@ def test_detach_network_endpoints_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.detach_network_endpoints_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_detach_network_endpoints_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.NetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.detach_network_endpoints._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"networkEndpointGroup",
- "networkEndpointGroupsDetachEndpointsRequestResource",
"project",
"zone",
)
@@ -1806,7 +1808,7 @@ def test_detach_network_endpoints_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_detach_network_endpoints_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.NetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1819,9 +1821,9 @@ def test_detach_network_endpoints_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkEndpointGroupsRestInterceptor, "post_detach_network_endpoints"
+ transports.NetworkEndpointGroupsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.NetworkEndpointGroupsRestInterceptor, "pre_detach_network_endpoints"
+ transports.NetworkEndpointGroupsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1838,7 +1840,7 @@ def test_detach_network_endpoints_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DetachNetworkEndpointsNetworkEndpointGroupRequest()
+ request = compute.DeleteNetworkEndpointGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1846,7 +1848,7 @@ def test_detach_network_endpoints_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.detach_network_endpoints_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1858,9 +1860,8 @@ def test_detach_network_endpoints_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_detach_network_endpoints_unary_rest_bad_request(
- transport: str = "rest",
- request_type=compute.DetachNetworkEndpointsNetworkEndpointGroupRequest,
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteNetworkEndpointGroupRequest
):
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1873,16 +1874,1341 @@ def test_detach_network_endpoints_unary_rest_bad_request(
"zone": "sample2",
"network_endpoint_group": "sample3",
}
- request_init["network_endpoint_groups_detach_endpoints_request_resource"] = {
- "network_endpoints": [
- {
- "annotations": {},
- "fqdn": "fqdn_value",
- "instance": "instance_value",
- "ip_address": "ip_address_value",
- "port": 453,
- }
- ]
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete(request)
+
+
+def test_delete_rest_flattened():
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ network_endpoint_group="network_endpoint_group_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups/{network_endpoint_group}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_rest_flattened_error(transport: str = "rest"):
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete(
+ compute.DeleteNetworkEndpointGroupRequest(),
+ project="project_value",
+ zone="zone_value",
+ network_endpoint_group="network_endpoint_group_value",
+ )
+
+
+def test_delete_rest_error():
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DeleteNetworkEndpointGroupRequest,
+ dict,
+ ],
+)
+def test_delete_unary_rest(request_type):
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.delete_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteNetworkEndpointGroupRequest,
+):
+ transport_class = transports.NetworkEndpointGroupsRestTransport
+
+ request_init = {}
+ request_init["network_endpoint_group"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["networkEndpointGroup"] = "network_endpoint_group_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "networkEndpointGroup" in jsonified_request
+ assert jsonified_request["networkEndpointGroup"] == "network_endpoint_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "delete",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_unary_rest_unset_required_fields():
+ transport = transports.NetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "networkEndpointGroup",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_unary_rest_interceptors(null_interceptor):
+ transport = transports.NetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkEndpointGroupsRestInterceptor(),
+ )
+ client = NetworkEndpointGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkEndpointGroupsRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.NetworkEndpointGroupsRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteNetworkEndpointGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteNetworkEndpointGroupRequest
+):
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete_unary(request)
+
+
+def test_delete_unary_rest_flattened():
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ network_endpoint_group="network_endpoint_group_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups/{network_endpoint_group}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete_unary(
+ compute.DeleteNetworkEndpointGroupRequest(),
+ project="project_value",
+ zone="zone_value",
+ network_endpoint_group="network_endpoint_group_value",
+ )
+
+
+def test_delete_unary_rest_error():
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DetachNetworkEndpointsNetworkEndpointGroupRequest,
+ dict,
+ ],
+)
+def test_detach_network_endpoints_rest(request_type):
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+ request_init["network_endpoint_groups_detach_endpoints_request_resource"] = {
+ "network_endpoints": [
+ {
+ "annotations": {},
+ "fqdn": "fqdn_value",
+ "instance": "instance_value",
+ "ip_address": "ip_address_value",
+ "port": 453,
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.detach_network_endpoints(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_detach_network_endpoints_rest_required_fields(
+ request_type=compute.DetachNetworkEndpointsNetworkEndpointGroupRequest,
+):
+ transport_class = transports.NetworkEndpointGroupsRestTransport
+
+ request_init = {}
+ request_init["network_endpoint_group"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).detach_network_endpoints._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["networkEndpointGroup"] = "network_endpoint_group_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).detach_network_endpoints._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "networkEndpointGroup" in jsonified_request
+ assert jsonified_request["networkEndpointGroup"] == "network_endpoint_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.detach_network_endpoints(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_detach_network_endpoints_rest_unset_required_fields():
+ transport = transports.NetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.detach_network_endpoints._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "networkEndpointGroup",
+ "networkEndpointGroupsDetachEndpointsRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_detach_network_endpoints_rest_interceptors(null_interceptor):
+ transport = transports.NetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkEndpointGroupsRestInterceptor(),
+ )
+ client = NetworkEndpointGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkEndpointGroupsRestInterceptor, "post_detach_network_endpoints"
+ ) as post, mock.patch.object(
+ transports.NetworkEndpointGroupsRestInterceptor, "pre_detach_network_endpoints"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DetachNetworkEndpointsNetworkEndpointGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.detach_network_endpoints(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_detach_network_endpoints_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DetachNetworkEndpointsNetworkEndpointGroupRequest,
+):
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+ request_init["network_endpoint_groups_detach_endpoints_request_resource"] = {
+ "network_endpoints": [
+ {
+ "annotations": {},
+ "fqdn": "fqdn_value",
+ "instance": "instance_value",
+ "ip_address": "ip_address_value",
+ "port": 453,
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.detach_network_endpoints(request)
+
+
+def test_detach_network_endpoints_rest_flattened():
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ network_endpoint_group="network_endpoint_group_value",
+ network_endpoint_groups_detach_endpoints_request_resource=compute.NetworkEndpointGroupsDetachEndpointsRequest(
+ network_endpoints=[
+ compute.NetworkEndpoint(annotations={"key_value": "value_value"})
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.detach_network_endpoints(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups/{network_endpoint_group}/detachNetworkEndpoints"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_detach_network_endpoints_rest_flattened_error(transport: str = "rest"):
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.detach_network_endpoints(
+ compute.DetachNetworkEndpointsNetworkEndpointGroupRequest(),
+ project="project_value",
+ zone="zone_value",
+ network_endpoint_group="network_endpoint_group_value",
+ network_endpoint_groups_detach_endpoints_request_resource=compute.NetworkEndpointGroupsDetachEndpointsRequest(
+ network_endpoints=[
+ compute.NetworkEndpoint(annotations={"key_value": "value_value"})
+ ]
+ ),
+ )
+
+
+def test_detach_network_endpoints_rest_error():
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DetachNetworkEndpointsNetworkEndpointGroupRequest,
+ dict,
+ ],
+)
+def test_detach_network_endpoints_unary_rest(request_type):
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+ request_init["network_endpoint_groups_detach_endpoints_request_resource"] = {
+ "network_endpoints": [
+ {
+ "annotations": {},
+ "fqdn": "fqdn_value",
+ "instance": "instance_value",
+ "ip_address": "ip_address_value",
+ "port": 453,
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.detach_network_endpoints_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_detach_network_endpoints_unary_rest_required_fields(
+ request_type=compute.DetachNetworkEndpointsNetworkEndpointGroupRequest,
+):
+ transport_class = transports.NetworkEndpointGroupsRestTransport
+
+ request_init = {}
+ request_init["network_endpoint_group"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).detach_network_endpoints._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["networkEndpointGroup"] = "network_endpoint_group_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).detach_network_endpoints._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "networkEndpointGroup" in jsonified_request
+ assert jsonified_request["networkEndpointGroup"] == "network_endpoint_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.detach_network_endpoints_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_detach_network_endpoints_unary_rest_unset_required_fields():
+ transport = transports.NetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.detach_network_endpoints._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "networkEndpointGroup",
+ "networkEndpointGroupsDetachEndpointsRequestResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_detach_network_endpoints_unary_rest_interceptors(null_interceptor):
+ transport = transports.NetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkEndpointGroupsRestInterceptor(),
+ )
+ client = NetworkEndpointGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkEndpointGroupsRestInterceptor, "post_detach_network_endpoints"
+ ) as post, mock.patch.object(
+ transports.NetworkEndpointGroupsRestInterceptor, "pre_detach_network_endpoints"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DetachNetworkEndpointsNetworkEndpointGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.detach_network_endpoints_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_detach_network_endpoints_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DetachNetworkEndpointsNetworkEndpointGroupRequest,
+):
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+ request_init["network_endpoint_groups_detach_endpoints_request_resource"] = {
+ "network_endpoints": [
+ {
+ "annotations": {},
+ "fqdn": "fqdn_value",
+ "instance": "instance_value",
+ "ip_address": "ip_address_value",
+ "port": 453,
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.detach_network_endpoints_unary(request)
+
+
+def test_detach_network_endpoints_unary_rest_flattened():
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ network_endpoint_group="network_endpoint_group_value",
+ network_endpoint_groups_detach_endpoints_request_resource=compute.NetworkEndpointGroupsDetachEndpointsRequest(
+ network_endpoints=[
+ compute.NetworkEndpoint(annotations={"key_value": "value_value"})
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.detach_network_endpoints_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups/{network_endpoint_group}/detachNetworkEndpoints"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_detach_network_endpoints_unary_rest_flattened_error(transport: str = "rest"):
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.detach_network_endpoints_unary(
+ compute.DetachNetworkEndpointsNetworkEndpointGroupRequest(),
+ project="project_value",
+ zone="zone_value",
+ network_endpoint_group="network_endpoint_group_value",
+ network_endpoint_groups_detach_endpoints_request_resource=compute.NetworkEndpointGroupsDetachEndpointsRequest(
+ network_endpoints=[
+ compute.NetworkEndpoint(annotations={"key_value": "value_value"})
+ ]
+ ),
+ )
+
+
+def test_detach_network_endpoints_unary_rest_error():
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetNetworkEndpointGroupRequest,
+ dict,
+ ],
+)
+def test_get_rest(request_type):
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NetworkEndpointGroup(
+ creation_timestamp="creation_timestamp_value",
+ default_port=1289,
+ description="description_value",
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ network="network_value",
+ network_endpoint_type="network_endpoint_type_value",
+ psc_target_service="psc_target_service_value",
+ region="region_value",
+ self_link="self_link_value",
+ size=443,
+ subnetwork="subnetwork_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.NetworkEndpointGroup)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.default_port == 1289
+ assert response.description == "description_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.network == "network_value"
+ assert response.network_endpoint_type == "network_endpoint_type_value"
+ assert response.psc_target_service == "psc_target_service_value"
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.size == 443
+ assert response.subnetwork == "subnetwork_value"
+ assert response.zone == "zone_value"
+
+
+def test_get_rest_required_fields(request_type=compute.GetNetworkEndpointGroupRequest):
+ transport_class = transports.NetworkEndpointGroupsRestTransport
+
+ request_init = {}
+ request_init["network_endpoint_group"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["networkEndpointGroup"] = "network_endpoint_group_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "networkEndpointGroup" in jsonified_request
+ assert jsonified_request["networkEndpointGroup"] == "network_endpoint_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NetworkEndpointGroup()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.NetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "networkEndpointGroup",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.NetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkEndpointGroupsRestInterceptor(),
+ )
+ client = NetworkEndpointGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkEndpointGroupsRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.NetworkEndpointGroupsRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.NetworkEndpointGroup.to_json(
+ compute.NetworkEndpointGroup()
+ )
+
+ request = compute.GetNetworkEndpointGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.NetworkEndpointGroup
+
+ client.get(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetNetworkEndpointGroupRequest
+):
+ client = NetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "zone": "sample2",
+ "network_endpoint_group": "sample3",
}
request = request_type(request_init)
@@ -1895,10 +3221,10 @@ def test_detach_network_endpoints_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.detach_network_endpoints_unary(request)
+ client.get(request)
-def test_detach_network_endpoints_unary_rest_flattened():
+def test_get_rest_flattened():
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1907,7 +3233,7 @@ def test_detach_network_endpoints_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.NetworkEndpointGroup()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1921,36 +3247,31 @@ def test_detach_network_endpoints_unary_rest_flattened():
project="project_value",
zone="zone_value",
network_endpoint_group="network_endpoint_group_value",
- network_endpoint_groups_detach_endpoints_request_resource=compute.NetworkEndpointGroupsDetachEndpointsRequest(
- network_endpoints=[
- compute.NetworkEndpoint(annotations={"key_value": "value_value"})
- ]
- ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.detach_network_endpoints_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups/{network_endpoint_group}/detachNetworkEndpoints"
+ "%s/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups/{network_endpoint_group}"
% client.transport._host,
args[1],
)
-def test_detach_network_endpoints_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1959,20 +3280,15 @@ def test_detach_network_endpoints_unary_rest_flattened_error(transport: str = "r
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.detach_network_endpoints_unary(
- compute.DetachNetworkEndpointsNetworkEndpointGroupRequest(),
+ client.get(
+ compute.GetNetworkEndpointGroupRequest(),
project="project_value",
zone="zone_value",
network_endpoint_group="network_endpoint_group_value",
- network_endpoint_groups_detach_endpoints_request_resource=compute.NetworkEndpointGroupsDetachEndpointsRequest(
- network_endpoints=[
- compute.NetworkEndpoint(annotations={"key_value": "value_value"})
- ]
- ),
)
-def test_detach_network_endpoints_unary_rest_error():
+def test_get_rest_error():
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1981,75 +3297,116 @@ def test_detach_network_endpoints_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetNetworkEndpointGroupRequest,
+ compute.InsertNetworkEndpointGroupRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_insert_rest(request_type):
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "zone": "sample2",
- "network_endpoint_group": "sample3",
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["network_endpoint_group_resource"] = {
+ "annotations": {},
+ "app_engine": {
+ "service": "service_value",
+ "url_mask": "url_mask_value",
+ "version": "version_value",
+ },
+ "cloud_function": {"function": "function_value", "url_mask": "url_mask_value"},
+ "cloud_run": {
+ "service": "service_value",
+ "tag": "tag_value",
+ "url_mask": "url_mask_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "default_port": 1289,
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_endpoint_type": "network_endpoint_type_value",
+ "psc_target_service": "psc_target_service_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "subnetwork": "subnetwork_value",
+ "zone": "zone_value",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NetworkEndpointGroup(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
- default_port=1289,
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- network="network_value",
- network_endpoint_type="network_endpoint_type_value",
- psc_target_service="psc_target_service_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- size=443,
- subnetwork="subnetwork_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.NetworkEndpointGroup)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
- assert response.default_port == 1289
assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.network == "network_value"
- assert response.network_endpoint_type == "network_endpoint_type_value"
- assert response.psc_target_service == "psc_target_service_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.size == 443
- assert response.subnetwork == "subnetwork_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
assert response.zone == "zone_value"
-def test_get_rest_required_fields(request_type=compute.GetNetworkEndpointGroupRequest):
+def test_insert_rest_required_fields(
+ request_type=compute.InsertNetworkEndpointGroupRequest,
+):
transport_class = transports.NetworkEndpointGroupsRestTransport
request_init = {}
- request_init["network_endpoint_group"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -2063,23 +3420,22 @@ def test_get_rest_required_fields(request_type=compute.GetNetworkEndpointGroupRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["networkEndpointGroup"] = "network_endpoint_group_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "networkEndpointGroup" in jsonified_request
- assert jsonified_request["networkEndpointGroup"] == "network_endpoint_group_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -2092,7 +3448,7 @@ def test_get_rest_required_fields(request_type=compute.GetNetworkEndpointGroupRe
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.NetworkEndpointGroup()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2103,35 +3459,36 @@ def test_get_rest_required_fields(request_type=compute.GetNetworkEndpointGroupRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.NetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
- "networkEndpointGroup",
+ "networkEndpointGroupResource",
"project",
"zone",
)
@@ -2140,7 +3497,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.NetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2153,9 +3510,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkEndpointGroupsRestInterceptor, "post_get"
+ transports.NetworkEndpointGroupsRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.NetworkEndpointGroupsRestInterceptor, "pre_get"
+ transports.NetworkEndpointGroupsRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2170,19 +3527,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.NetworkEndpointGroup.to_json(
- compute.NetworkEndpointGroup()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetNetworkEndpointGroupRequest()
+ request = compute.InsertNetworkEndpointGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.NetworkEndpointGroup
+ post.return_value = compute.Operation
- client.get(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -2194,8 +3549,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetNetworkEndpointGroupRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertNetworkEndpointGroupRequest
):
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2203,10 +3558,34 @@ def test_get_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "zone": "sample2",
- "network_endpoint_group": "sample3",
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["network_endpoint_group_resource"] = {
+ "annotations": {},
+ "app_engine": {
+ "service": "service_value",
+ "url_mask": "url_mask_value",
+ "version": "version_value",
+ },
+ "cloud_function": {"function": "function_value", "url_mask": "url_mask_value"},
+ "cloud_run": {
+ "service": "service_value",
+ "tag": "tag_value",
+ "url_mask": "url_mask_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "default_port": 1289,
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_endpoint_type": "network_endpoint_type_value",
+ "psc_target_service": "psc_target_service_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "subnetwork": "subnetwork_value",
+ "zone": "zone_value",
}
request = request_type(request_init)
@@ -2219,10 +3598,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.insert(request)
-def test_get_rest_flattened():
+def test_insert_rest_flattened():
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2231,45 +3610,43 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NetworkEndpointGroup()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "zone": "sample2",
- "network_endpoint_group": "sample3",
- }
+ sample_request = {"project": "sample1", "zone": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- network_endpoint_group="network_endpoint_group_value",
+ network_endpoint_group_resource=compute.NetworkEndpointGroup(
+ annotations={"key_value": "value_value"}
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups/{network_endpoint_group}"
+ "%s/compute/v1/projects/{project}/zones/{zone}/networkEndpointGroups"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2278,15 +3655,17 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetNetworkEndpointGroupRequest(),
+ client.insert(
+ compute.InsertNetworkEndpointGroupRequest(),
project="project_value",
zone="zone_value",
- network_endpoint_group="network_endpoint_group_value",
+ network_endpoint_group_resource=compute.NetworkEndpointGroup(
+ annotations={"key_value": "value_value"}
+ ),
)
-def test_get_rest_error():
+def test_insert_rest_error():
client = NetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2375,28 +3754,6 @@ def test_insert_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_insert_unary_rest_required_fields(
@@ -3795,6 +5152,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = NetworkEndpointGroupsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_network_endpoint_groups_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3834,6 +5204,14 @@ def test_network_endpoint_groups_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_network_endpoint_groups_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_network_firewall_policies.py b/tests/unit/gapic/compute_v1/test_network_firewall_policies.py
index 6a9c1150d..f10b28b3d 100644
--- a/tests/unit/gapic/compute_v1/test_network_firewall_policies.py
+++ b/tests/unit/gapic/compute_v1/test_network_firewall_policies.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -557,7 +559,7 @@ def test_network_firewall_policies_client_client_options_credentials_file(
dict,
],
)
-def test_add_association_unary_rest(request_type):
+def test_add_association_rest(request_type):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -608,10 +610,10 @@ def test_add_association_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_association_unary(request)
+ response = client.add_association(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -636,7 +638,7 @@ def test_add_association_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_add_association_unary_rest_required_fields(
+def test_add_association_rest_required_fields(
request_type=compute.AddAssociationNetworkFirewallPolicyRequest,
):
transport_class = transports.NetworkFirewallPoliciesRestTransport
@@ -711,14 +713,14 @@ def test_add_association_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_association_unary(request)
+ response = client.add_association(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_add_association_unary_rest_unset_required_fields():
+def test_add_association_rest_unset_required_fields():
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -742,7 +744,7 @@ def test_add_association_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_association_unary_rest_interceptors(null_interceptor):
+def test_add_association_rest_interceptors(null_interceptor):
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -782,7 +784,7 @@ def test_add_association_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_association_unary(
+ client.add_association(
request,
metadata=[
("key", "val"),
@@ -794,7 +796,7 @@ def test_add_association_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_association_unary_rest_bad_request(
+def test_add_association_rest_bad_request(
transport: str = "rest",
request_type=compute.AddAssociationNetworkFirewallPolicyRequest,
):
@@ -823,10 +825,10 @@ def test_add_association_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_association_unary(request)
+ client.add_association(request)
-def test_add_association_unary_rest_flattened():
+def test_add_association_rest_flattened():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -858,7 +860,7 @@ def test_add_association_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_association_unary(**mock_args)
+ client.add_association(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -871,7 +873,7 @@ def test_add_association_unary_rest_flattened():
)
-def test_add_association_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_association_rest_flattened_error(transport: str = "rest"):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -880,7 +882,7 @@ def test_add_association_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_association_unary(
+ client.add_association(
compute.AddAssociationNetworkFirewallPolicyRequest(),
project="project_value",
firewall_policy="firewall_policy_value",
@@ -890,7 +892,7 @@ def test_add_association_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_add_association_unary_rest_error():
+def test_add_association_rest_error():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -899,11 +901,11 @@ def test_add_association_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.AddRuleNetworkFirewallPolicyRequest,
+ compute.AddAssociationNetworkFirewallPolicyRequest,
dict,
],
)
-def test_add_rule_unary_rest(request_type):
+def test_add_association_unary_rest(request_type):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -911,33 +913,12 @@ def test_add_rule_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "firewall_policy": "sample2"}
- request_init["firewall_policy_rule_resource"] = {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": ["target_resources_value_1", "target_resources_value_2"],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
+ request_init["firewall_policy_association_resource"] = {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
}
request = request_type(request_init)
@@ -975,36 +956,14 @@ def test_add_rule_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_rule_unary(request)
+ response = client.add_association_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_add_rule_unary_rest_required_fields(
- request_type=compute.AddRuleNetworkFirewallPolicyRequest,
+def test_add_association_unary_rest_required_fields(
+ request_type=compute.AddAssociationNetworkFirewallPolicyRequest,
):
transport_class = transports.NetworkFirewallPoliciesRestTransport
@@ -1022,7 +981,7 @@ def test_add_rule_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).add_rule._get_unset_required_fields(jsonified_request)
+ ).add_association._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1032,12 +991,11 @@ def test_add_rule_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).add_rule._get_unset_required_fields(jsonified_request)
+ ).add_association._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "max_priority",
- "min_priority",
+ "replace_existing_association",
"request_id",
)
)
@@ -1079,31 +1037,30 @@ def test_add_rule_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_rule_unary(request)
+ response = client.add_association_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_add_rule_unary_rest_unset_required_fields():
+def test_add_association_unary_rest_unset_required_fields():
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.add_rule._get_unset_required_fields({})
+ unset_fields = transport.add_association._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
- "maxPriority",
- "minPriority",
+ "replaceExistingAssociation",
"requestId",
)
)
& set(
(
"firewallPolicy",
- "firewallPolicyRuleResource",
+ "firewallPolicyAssociationResource",
"project",
)
)
@@ -1111,7 +1068,7 @@ def test_add_rule_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_rule_unary_rest_interceptors(null_interceptor):
+def test_add_association_unary_rest_interceptors(null_interceptor):
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1124,9 +1081,9 @@ def test_add_rule_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "post_add_rule"
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_add_association"
) as post, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "pre_add_rule"
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_add_association"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1143,7 +1100,7 @@ def test_add_rule_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.AddRuleNetworkFirewallPolicyRequest()
+ request = compute.AddAssociationNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1151,7 +1108,7 @@ def test_add_rule_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_rule_unary(
+ client.add_association_unary(
request,
metadata=[
("key", "val"),
@@ -1163,8 +1120,9 @@ def test_add_rule_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_rule_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.AddRuleNetworkFirewallPolicyRequest
+def test_add_association_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.AddAssociationNetworkFirewallPolicyRequest,
):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1173,33 +1131,12 @@ def test_add_rule_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "firewall_policy": "sample2"}
- request_init["firewall_policy_rule_resource"] = {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": ["target_resources_value_1", "target_resources_value_2"],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
+ request_init["firewall_policy_association_resource"] = {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
}
request = request_type(request_init)
@@ -1212,10 +1149,10 @@ def test_add_rule_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_rule_unary(request)
+ client.add_association_unary(request)
-def test_add_rule_unary_rest_flattened():
+def test_add_association_unary_rest_flattened():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1233,8 +1170,8 @@ def test_add_rule_unary_rest_flattened():
mock_args = dict(
project="project_value",
firewall_policy="firewall_policy_value",
- firewall_policy_rule_resource=compute.FirewallPolicyRule(
- action="action_value"
+ firewall_policy_association_resource=compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
),
)
mock_args.update(sample_request)
@@ -1247,20 +1184,20 @@ def test_add_rule_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_rule_unary(**mock_args)
+ client.add_association_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/addRule"
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/addAssociation"
% client.transport._host,
args[1],
)
-def test_add_rule_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_association_unary_rest_flattened_error(transport: str = "rest"):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1269,17 +1206,17 @@ def test_add_rule_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_rule_unary(
- compute.AddRuleNetworkFirewallPolicyRequest(),
+ client.add_association_unary(
+ compute.AddAssociationNetworkFirewallPolicyRequest(),
project="project_value",
firewall_policy="firewall_policy_value",
- firewall_policy_rule_resource=compute.FirewallPolicyRule(
- action="action_value"
+ firewall_policy_association_resource=compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
),
)
-def test_add_rule_unary_rest_error():
+def test_add_association_unary_rest_error():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1288,11 +1225,11 @@ def test_add_rule_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.CloneRulesNetworkFirewallPolicyRequest,
+ compute.AddRuleNetworkFirewallPolicyRequest,
dict,
],
)
-def test_clone_rules_unary_rest(request_type):
+def test_add_rule_rest(request_type):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1300,6 +1237,34 @@ def test_clone_rules_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "firewall_policy": "sample2"}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1336,10 +1301,10 @@ def test_clone_rules_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.clone_rules_unary(request)
+ response = client.add_rule(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1364,8 +1329,8 @@ def test_clone_rules_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_clone_rules_unary_rest_required_fields(
- request_type=compute.CloneRulesNetworkFirewallPolicyRequest,
+def test_add_rule_rest_required_fields(
+ request_type=compute.AddRuleNetworkFirewallPolicyRequest,
):
transport_class = transports.NetworkFirewallPoliciesRestTransport
@@ -1383,7 +1348,7 @@ def test_clone_rules_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).clone_rules._get_unset_required_fields(jsonified_request)
+ ).add_rule._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1393,12 +1358,13 @@ def test_clone_rules_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).clone_rules._get_unset_required_fields(jsonified_request)
+ ).add_rule._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
+ "max_priority",
+ "min_priority",
"request_id",
- "source_firewall_policy",
)
)
jsonified_request.update(unset_fields)
@@ -1430,6 +1396,7 @@ def test_clone_rules_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1438,29 +1405,31 @@ def test_clone_rules_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.clone_rules_unary(request)
+ response = client.add_rule(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_clone_rules_unary_rest_unset_required_fields():
+def test_add_rule_rest_unset_required_fields():
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.clone_rules._get_unset_required_fields({})
+ unset_fields = transport.add_rule._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
+ "maxPriority",
+ "minPriority",
"requestId",
- "sourceFirewallPolicy",
)
)
& set(
(
"firewallPolicy",
+ "firewallPolicyRuleResource",
"project",
)
)
@@ -1468,7 +1437,7 @@ def test_clone_rules_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_clone_rules_unary_rest_interceptors(null_interceptor):
+def test_add_rule_rest_interceptors(null_interceptor):
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1481,9 +1450,9 @@ def test_clone_rules_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "post_clone_rules"
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_add_rule"
) as post, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "pre_clone_rules"
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_add_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1500,7 +1469,7 @@ def test_clone_rules_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.CloneRulesNetworkFirewallPolicyRequest()
+ request = compute.AddRuleNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1508,7 +1477,7 @@ def test_clone_rules_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.clone_rules_unary(
+ client.add_rule(
request,
metadata=[
("key", "val"),
@@ -1520,8 +1489,8 @@ def test_clone_rules_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_clone_rules_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.CloneRulesNetworkFirewallPolicyRequest
+def test_add_rule_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddRuleNetworkFirewallPolicyRequest
):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1530,29 +1499,57 @@ def test_clone_rules_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "firewall_policy": "sample2"}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a BadRequest error.
- with mock.patch.object(Session, "request") as req, pytest.raises(
- core_exceptions.BadRequest
- ):
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 400
- response_value.request = Request()
- req.return_value = response_value
- client.clone_rules_unary(request)
-
-
-def test_clone_rules_unary_rest_flattened():
- client = NetworkFirewallPoliciesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport="rest",
- )
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.add_rule(request)
+
+
+def test_add_rule_rest_flattened():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
@@ -1562,6 +1559,9 @@ def test_clone_rules_unary_rest_flattened():
mock_args = dict(
project="project_value",
firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
mock_args.update(sample_request)
@@ -1573,20 +1573,20 @@ def test_clone_rules_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.clone_rules_unary(**mock_args)
+ client.add_rule(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/cloneRules"
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/addRule"
% client.transport._host,
args[1],
)
-def test_clone_rules_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_rule_rest_flattened_error(transport: str = "rest"):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1595,14 +1595,17 @@ def test_clone_rules_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.clone_rules_unary(
- compute.CloneRulesNetworkFirewallPolicyRequest(),
+ client.add_rule(
+ compute.AddRuleNetworkFirewallPolicyRequest(),
project="project_value",
firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
-def test_clone_rules_unary_rest_error():
+def test_add_rule_rest_error():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1611,11 +1614,11 @@ def test_clone_rules_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteNetworkFirewallPolicyRequest,
+ compute.AddRuleNetworkFirewallPolicyRequest,
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_add_rule_unary_rest(request_type):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1623,6 +1626,34 @@ def test_delete_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "firewall_policy": "sample2"}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1659,36 +1690,14 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.add_rule_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteNetworkFirewallPolicyRequest,
+def test_add_rule_unary_rest_required_fields(
+ request_type=compute.AddRuleNetworkFirewallPolicyRequest,
):
transport_class = transports.NetworkFirewallPoliciesRestTransport
@@ -1706,7 +1715,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).add_rule._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1716,9 +1725,15 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).add_rule._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "max_priority",
+ "min_priority",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1745,9 +1760,10 @@ def test_delete_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1756,24 +1772,31 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.add_rule_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_add_rule_unary_rest_unset_required_fields():
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.add_rule._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "maxPriority",
+ "minPriority",
+ "requestId",
+ )
+ )
& set(
(
"firewallPolicy",
+ "firewallPolicyRuleResource",
"project",
)
)
@@ -1781,7 +1804,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_add_rule_unary_rest_interceptors(null_interceptor):
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1794,9 +1817,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "post_delete"
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_add_rule"
) as post, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "pre_delete"
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_add_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1813,7 +1836,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteNetworkFirewallPolicyRequest()
+ request = compute.AddRuleNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1821,7 +1844,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.add_rule_unary(
request,
metadata=[
("key", "val"),
@@ -1833,8 +1856,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteNetworkFirewallPolicyRequest
+def test_add_rule_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddRuleNetworkFirewallPolicyRequest
):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1843,6 +1866,34 @@ def test_delete_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "firewall_policy": "sample2"}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1854,10 +1905,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.add_rule_unary(request)
-def test_delete_unary_rest_flattened():
+def test_add_rule_unary_rest_flattened():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1875,6 +1926,9 @@ def test_delete_unary_rest_flattened():
mock_args = dict(
project="project_value",
firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
mock_args.update(sample_request)
@@ -1886,20 +1940,20 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.add_rule_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}"
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/addRule"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_rule_unary_rest_flattened_error(transport: str = "rest"):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1908,14 +1962,17 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteNetworkFirewallPolicyRequest(),
+ client.add_rule_unary(
+ compute.AddRuleNetworkFirewallPolicyRequest(),
project="project_value",
firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
-def test_delete_unary_rest_error():
+def test_add_rule_unary_rest_error():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1924,11 +1981,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetNetworkFirewallPolicyRequest,
+ compute.CloneRulesNetworkFirewallPolicyRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_clone_rules_rest(request_type):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1941,48 +1998,68 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicy(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- display_name="display_name_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- parent="parent_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
- rule_tuple_count=1737,
self_link="self_link_value",
- self_link_with_id="self_link_with_id_value",
- short_name="short_name_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.clone_rules(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.FirewallPolicy)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.display_name == "display_name_value"
- assert response.fingerprint == "fingerprint_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.parent == "parent_value"
- assert response.region == "region_value"
- assert response.rule_tuple_count == 1737
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.self_link_with_id == "self_link_with_id_value"
- assert response.short_name == "short_name_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_rest_required_fields(request_type=compute.GetNetworkFirewallPolicyRequest):
+def test_clone_rules_rest_required_fields(
+ request_type=compute.CloneRulesNetworkFirewallPolicyRequest,
+):
transport_class = transports.NetworkFirewallPoliciesRestTransport
request_init = {}
@@ -1999,7 +2076,7 @@ def test_get_rest_required_fields(request_type=compute.GetNetworkFirewallPolicyR
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).clone_rules._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2009,7 +2086,14 @@ def test_get_rest_required_fields(request_type=compute.GetNetworkFirewallPolicyR
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).clone_rules._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "source_firewall_policy",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2025,7 +2109,7 @@ def test_get_rest_required_fields(request_type=compute.GetNetworkFirewallPolicyR
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2036,32 +2120,37 @@ def test_get_rest_required_fields(request_type=compute.GetNetworkFirewallPolicyR
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.clone_rules(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_clone_rules_rest_unset_required_fields():
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.clone_rules._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(
+ (
+ "requestId",
+ "sourceFirewallPolicy",
+ )
+ )
& set(
(
"firewallPolicy",
@@ -2072,7 +2161,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_clone_rules_rest_interceptors(null_interceptor):
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2085,9 +2174,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "post_get"
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_clone_rules"
) as post, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "pre_get"
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_clone_rules"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2102,19 +2191,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.FirewallPolicy.to_json(
- compute.FirewallPolicy()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetNetworkFirewallPolicyRequest()
+ request = compute.CloneRulesNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.FirewallPolicy
+ post.return_value = compute.Operation
- client.get(
+ client.clone_rules(
request,
metadata=[
("key", "val"),
@@ -2126,8 +2213,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetNetworkFirewallPolicyRequest
+def test_clone_rules_rest_bad_request(
+ transport: str = "rest", request_type=compute.CloneRulesNetworkFirewallPolicyRequest
):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2147,10 +2234,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.clone_rules(request)
-def test_get_rest_flattened():
+def test_clone_rules_rest_flattened():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2159,7 +2246,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "firewall_policy": "sample2"}
@@ -2174,25 +2261,25 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.clone_rules(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}"
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/cloneRules"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_clone_rules_rest_flattened_error(transport: str = "rest"):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2201,14 +2288,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetNetworkFirewallPolicyRequest(),
+ client.clone_rules(
+ compute.CloneRulesNetworkFirewallPolicyRequest(),
project="project_value",
firewall_policy="firewall_policy_value",
)
-def test_get_rest_error():
+def test_clone_rules_rest_error():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2217,11 +2304,11 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetAssociationNetworkFirewallPolicyRequest,
+ compute.CloneRulesNetworkFirewallPolicyRequest,
dict,
],
)
-def test_get_association_rest(request_type):
+def test_clone_rules_unary_rest(request_type):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2234,33 +2321,45 @@ def test_get_association_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyAssociation(
- attachment_target="attachment_target_value",
- display_name="display_name_value",
- firewall_policy_id="firewall_policy_id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
name="name_value",
- short_name="short_name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_association(request)
+ response = client.clone_rules_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.FirewallPolicyAssociation)
- assert response.attachment_target == "attachment_target_value"
- assert response.display_name == "display_name_value"
- assert response.firewall_policy_id == "firewall_policy_id_value"
- assert response.name == "name_value"
- assert response.short_name == "short_name_value"
+ assert isinstance(response, compute.Operation)
-def test_get_association_rest_required_fields(
- request_type=compute.GetAssociationNetworkFirewallPolicyRequest,
+def test_clone_rules_unary_rest_required_fields(
+ request_type=compute.CloneRulesNetworkFirewallPolicyRequest,
):
transport_class = transports.NetworkFirewallPoliciesRestTransport
@@ -2278,7 +2377,7 @@ def test_get_association_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_association._get_unset_required_fields(jsonified_request)
+ ).clone_rules._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2288,9 +2387,14 @@ def test_get_association_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_association._get_unset_required_fields(jsonified_request)
+ ).clone_rules._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("name",))
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "source_firewall_policy",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2306,7 +2410,7 @@ def test_get_association_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyAssociation()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2317,32 +2421,37 @@ def test_get_association_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_association(request)
+ response = client.clone_rules_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_association_rest_unset_required_fields():
+def test_clone_rules_unary_rest_unset_required_fields():
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_association._get_unset_required_fields({})
+ unset_fields = transport.clone_rules._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("name",))
+ set(
+ (
+ "requestId",
+ "sourceFirewallPolicy",
+ )
+ )
& set(
(
"firewallPolicy",
@@ -2353,7 +2462,7 @@ def test_get_association_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_association_rest_interceptors(null_interceptor):
+def test_clone_rules_unary_rest_interceptors(null_interceptor):
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2366,9 +2475,9 @@ def test_get_association_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "post_get_association"
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_clone_rules"
) as post, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "pre_get_association"
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_clone_rules"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2383,19 +2492,17 @@ def test_get_association_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.FirewallPolicyAssociation.to_json(
- compute.FirewallPolicyAssociation()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetAssociationNetworkFirewallPolicyRequest()
+ request = compute.CloneRulesNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.FirewallPolicyAssociation
+ post.return_value = compute.Operation
- client.get_association(
+ client.clone_rules_unary(
request,
metadata=[
("key", "val"),
@@ -2407,9 +2514,8 @@ def test_get_association_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_association_rest_bad_request(
- transport: str = "rest",
- request_type=compute.GetAssociationNetworkFirewallPolicyRequest,
+def test_clone_rules_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.CloneRulesNetworkFirewallPolicyRequest
):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2429,10 +2535,10 @@ def test_get_association_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_association(request)
+ client.clone_rules_unary(request)
-def test_get_association_rest_flattened():
+def test_clone_rules_unary_rest_flattened():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2441,7 +2547,7 @@ def test_get_association_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyAssociation()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "firewall_policy": "sample2"}
@@ -2456,25 +2562,25 @@ def test_get_association_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_association(**mock_args)
+ client.clone_rules_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/getAssociation"
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/cloneRules"
% client.transport._host,
args[1],
)
-def test_get_association_rest_flattened_error(transport: str = "rest"):
+def test_clone_rules_unary_rest_flattened_error(transport: str = "rest"):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2483,14 +2589,14 @@ def test_get_association_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_association(
- compute.GetAssociationNetworkFirewallPolicyRequest(),
+ client.clone_rules_unary(
+ compute.CloneRulesNetworkFirewallPolicyRequest(),
project="project_value",
firewall_policy="firewall_policy_value",
)
-def test_get_association_rest_error():
+def test_clone_rules_unary_rest_error():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2499,52 +2605,90 @@ def test_get_association_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicyNetworkFirewallPolicyRequest,
+ compute.DeleteNetworkFirewallPolicyRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_delete_rest(request_type):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicyNetworkFirewallPolicyRequest,
+def test_delete_rest_required_fields(
+ request_type=compute.DeleteNetworkFirewallPolicyRequest,
):
transport_class = transports.NetworkFirewallPoliciesRestTransport
request_init = {}
+ request_init["firewall_policy"] = ""
request_init["project"] = ""
- request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2556,26 +2700,26 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2584,7 +2728,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2595,43 +2739,43 @@ def test_get_iam_policy_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
+ set(("requestId",))
& set(
(
+ "firewallPolicy",
"project",
- "resource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2644,9 +2788,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "post_get_iam_policy"
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "pre_get_iam_policy"
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2661,17 +2805,17 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetIamPolicyNetworkFirewallPolicyRequest()
+ request = compute.DeleteNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.get_iam_policy(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -2683,9 +2827,8 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest",
- request_type=compute.GetIamPolicyNetworkFirewallPolicyRequest,
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteNetworkFirewallPolicyRequest
):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2693,7 +2836,7 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2705,10 +2848,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.delete(request)
-def test_get_iam_policy_rest_flattened():
+def test_delete_rest_flattened():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2717,40 +2860,40 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "resource": "sample2"}
+ sample_request = {"project": "sample1", "firewall_policy": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- resource="resource_value",
+ firewall_policy="firewall_policy_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/firewallPolicies/{resource}/getIamPolicy"
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2759,14 +2902,14 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicyNetworkFirewallPolicyRequest(),
+ client.delete(
+ compute.DeleteNetworkFirewallPolicyRequest(),
project="project_value",
- resource="resource_value",
+ firewall_policy="firewall_policy_value",
)
-def test_get_iam_policy_rest_error():
+def test_delete_rest_error():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2775,11 +2918,11 @@ def test_get_iam_policy_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRuleNetworkFirewallPolicyRequest,
+ compute.DeleteNetworkFirewallPolicyRequest,
dict,
],
)
-def test_get_rule_rest(request_type):
+def test_delete_unary_rest(request_type):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2792,45 +2935,45 @@ def test_get_rule_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyRule(
- action="action_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
description="description_value",
- direction="direction_value",
- disabled=True,
- enable_logging=True,
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- priority=898,
- rule_name="rule_name_value",
- rule_tuple_count=1737,
- target_resources=["target_resources_value"],
- target_service_accounts=["target_service_accounts_value"],
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_rule(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.FirewallPolicyRule)
- assert response.action == "action_value"
- assert response.description == "description_value"
- assert response.direction == "direction_value"
- assert response.disabled is True
- assert response.enable_logging is True
- assert response.kind == "kind_value"
- assert response.priority == 898
- assert response.rule_name == "rule_name_value"
- assert response.rule_tuple_count == 1737
- assert response.target_resources == ["target_resources_value"]
- assert response.target_service_accounts == ["target_service_accounts_value"]
+ assert isinstance(response, compute.Operation)
-def test_get_rule_rest_required_fields(
- request_type=compute.GetRuleNetworkFirewallPolicyRequest,
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteNetworkFirewallPolicyRequest,
):
transport_class = transports.NetworkFirewallPoliciesRestTransport
@@ -2848,7 +2991,7 @@ def test_get_rule_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_rule._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2858,9 +3001,9 @@ def test_get_rule_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_rule._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("priority",))
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2876,7 +3019,7 @@ def test_get_rule_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyRule()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2887,32 +3030,32 @@ def test_get_rule_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_rule(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rule_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_rule._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("priority",))
+ set(("requestId",))
& set(
(
"firewallPolicy",
@@ -2923,7 +3066,7 @@ def test_get_rule_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rule_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2936,9 +3079,9 @@ def test_get_rule_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "post_get_rule"
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "pre_get_rule"
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2953,19 +3096,17 @@ def test_get_rule_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.FirewallPolicyRule.to_json(
- compute.FirewallPolicyRule()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRuleNetworkFirewallPolicyRequest()
+ request = compute.DeleteNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.FirewallPolicyRule
+ post.return_value = compute.Operation
- client.get_rule(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -2977,8 +3118,8 @@ def test_get_rule_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rule_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRuleNetworkFirewallPolicyRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteNetworkFirewallPolicyRequest
):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2998,10 +3139,10 @@ def test_get_rule_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_rule(request)
+ client.delete_unary(request)
-def test_get_rule_rest_flattened():
+def test_delete_unary_rest_flattened():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3010,7 +3151,7 @@ def test_get_rule_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyRule()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "firewall_policy": "sample2"}
@@ -3025,25 +3166,25 @@ def test_get_rule_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_rule(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/getRule"
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}"
% client.transport._host,
args[1],
)
-def test_get_rule_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3052,14 +3193,14 @@ def test_get_rule_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_rule(
- compute.GetRuleNetworkFirewallPolicyRequest(),
+ client.delete_unary(
+ compute.DeleteNetworkFirewallPolicyRequest(),
project="project_value",
firewall_policy="firewall_policy_value",
)
-def test_get_rule_rest_error():
+def test_delete_unary_rest_error():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3068,148 +3209,69 @@ def test_get_rule_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertNetworkFirewallPolicyRequest,
+ compute.GetNetworkFirewallPolicyRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["firewall_policy_resource"] = {
- "associations": [
- {
- "attachment_target": "attachment_target_value",
- "display_name": "display_name_value",
- "firewall_policy_id": "firewall_policy_id_value",
- "name": "name_value",
- "short_name": "short_name_value",
- }
- ],
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "display_name": "display_name_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "parent": "parent_value",
- "region": "region_value",
- "rule_tuple_count": 1737,
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": [
- "dest_ip_ranges_value_1",
- "dest_ip_ranges_value_2",
- ],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": [
- "target_resources_value_1",
- "target_resources_value_2",
- ],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
- ],
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "short_name": "short_name_value",
- }
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.FirewallPolicy(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
+ display_name="display_name_value",
+ fingerprint="fingerprint_value",
+ id=205,
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ parent="parent_value",
region="region_value",
+ rule_tuple_count=1737,
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ self_link_with_id="self_link_with_id_value",
+ short_name="short_name_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.FirewallPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.FirewallPolicy)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.display_name == "display_name_value"
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.parent == "parent_value"
assert response.region == "region_value"
+ assert response.rule_tuple_count == 1737
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.self_link_with_id == "self_link_with_id_value"
+ assert response.short_name == "short_name_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertNetworkFirewallPolicyRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetNetworkFirewallPolicyRequest):
transport_class = transports.NetworkFirewallPoliciesRestTransport
request_init = {}
+ request_init["firewall_policy"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -3222,21 +3284,22 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -3247,7 +3310,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.FirewallPolicy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3258,36 +3321,35 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.FirewallPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
- "firewallPolicyResource",
+ "firewallPolicy",
"project",
)
)
@@ -3295,7 +3357,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3308,9 +3370,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "post_insert"
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "pre_insert"
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3325,17 +3387,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.FirewallPolicy.to_json(
+ compute.FirewallPolicy()
+ )
- request = compute.InsertNetworkFirewallPolicyRequest()
+ request = compute.GetNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.FirewallPolicy
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -3347,8 +3411,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertNetworkFirewallPolicyRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetNetworkFirewallPolicyRequest
):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3356,67 +3420,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["firewall_policy_resource"] = {
- "associations": [
- {
- "attachment_target": "attachment_target_value",
- "display_name": "display_name_value",
- "firewall_policy_id": "firewall_policy_id_value",
- "name": "name_value",
- "short_name": "short_name_value",
- }
- ],
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "display_name": "display_name_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "parent": "parent_value",
- "region": "region_value",
- "rule_tuple_count": 1737,
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": [
- "dest_ip_ranges_value_1",
- "dest_ip_ranges_value_2",
- ],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": [
- "target_resources_value_1",
- "target_resources_value_2",
- ],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
- ],
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "short_name": "short_name_value",
- }
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3428,10 +3432,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get(request)
-def test_insert_unary_rest_flattened():
+def test_get_rest_flattened():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3440,46 +3444,40 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.FirewallPolicy()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "firewall_policy": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- firewall_policy_resource=compute.FirewallPolicy(
- associations=[
- compute.FirewallPolicyAssociation(
- attachment_target="attachment_target_value"
- )
- ]
- ),
+ firewall_policy="firewall_policy_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.FirewallPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/firewallPolicies"
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3488,20 +3486,14 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertNetworkFirewallPolicyRequest(),
+ client.get(
+ compute.GetNetworkFirewallPolicyRequest(),
project="project_value",
- firewall_policy_resource=compute.FirewallPolicy(
- associations=[
- compute.FirewallPolicyAssociation(
- attachment_target="attachment_target_value"
- )
- ]
- ),
+ firewall_policy="firewall_policy_value",
)
-def test_insert_unary_rest_error():
+def test_get_rest_error():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3510,50 +3502,55 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListNetworkFirewallPoliciesRequest,
+ compute.GetAssociationNetworkFirewallPolicyRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_get_association_rest(request_type):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyList(
- id="id_value",
- kind="kind_value",
- next_page_token="next_page_token_value",
+ return_value = compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value",
+ display_name="display_name_value",
+ firewall_policy_id="firewall_policy_id_value",
+ name="name_value",
+ short_name="short_name_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyList.to_json(return_value)
+ json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get_association(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert isinstance(response, compute.FirewallPolicyAssociation)
+ assert response.attachment_target == "attachment_target_value"
+ assert response.display_name == "display_name_value"
+ assert response.firewall_policy_id == "firewall_policy_id_value"
+ assert response.name == "name_value"
+ assert response.short_name == "short_name_value"
-def test_list_rest_required_fields(
- request_type=compute.ListNetworkFirewallPoliciesRequest,
+def test_get_association_rest_required_fields(
+ request_type=compute.GetAssociationNetworkFirewallPolicyRequest,
):
transport_class = transports.NetworkFirewallPoliciesRestTransport
request_init = {}
+ request_init["firewall_policy"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -3566,29 +3563,24 @@ def test_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).get_association._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).get_association._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("name",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -3599,7 +3591,7 @@ def test_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyList()
+ return_value = compute.FirewallPolicyAssociation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3617,18 +3609,1731 @@ def test_list_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyList.to_json(return_value)
+ json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get_association(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_get_association_rest_unset_required_fields():
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_association._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("name",))
+ & set(
+ (
+ "firewallPolicy",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_association_rest_interceptors(null_interceptor):
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = NetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_get_association"
+ ) as post, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_get_association"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.FirewallPolicyAssociation.to_json(
+ compute.FirewallPolicyAssociation()
+ )
+
+ request = compute.GetAssociationNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.FirewallPolicyAssociation
+
+ client.get_association(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_association_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.GetAssociationNetworkFirewallPolicyRequest,
+):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_association(request)
+
+
+def test_get_association_rest_flattened():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyAssociation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "firewall_policy": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ firewall_policy="firewall_policy_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_association(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/getAssociation"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_association_rest_flattened_error(transport: str = "rest"):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_association(
+ compute.GetAssociationNetworkFirewallPolicyRequest(),
+ project="project_value",
+ firewall_policy="firewall_policy_value",
+ )
+
+
+def test_get_association_rest_error():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetIamPolicyNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_get_iam_policy_rest(request_type):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicyNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.NetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["resource"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_iam_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_iam_policy_rest_unset_required_fields():
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("optionsRequestedPolicyVersion",))
+ & set(
+ (
+ "project",
+ "resource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_iam_policy_rest_interceptors(null_interceptor):
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = NetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_get_iam_policy"
+ ) as post, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_get_iam_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
+
+ request = compute.GetIamPolicyNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Policy
+
+ client.get_iam_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.GetIamPolicyNetworkFirewallPolicyRequest,
+):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_iam_policy(request)
+
+
+def test_get_iam_policy_rest_flattened():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "resource": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ resource="resource_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_iam_policy(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{resource}/getIamPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_iam_policy(
+ compute.GetIamPolicyNetworkFirewallPolicyRequest(),
+ project="project_value",
+ resource="resource_value",
+ )
+
+
+def test_get_iam_policy_rest_error():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetRuleNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_get_rule_rest(request_type):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyRule(
+ action="action_value",
+ description="description_value",
+ direction="direction_value",
+ disabled=True,
+ enable_logging=True,
+ kind="kind_value",
+ priority=898,
+ rule_name="rule_name_value",
+ rule_tuple_count=1737,
+ target_resources=["target_resources_value"],
+ target_service_accounts=["target_service_accounts_value"],
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_rule(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.FirewallPolicyRule)
+ assert response.action == "action_value"
+ assert response.description == "description_value"
+ assert response.direction == "direction_value"
+ assert response.disabled is True
+ assert response.enable_logging is True
+ assert response.kind == "kind_value"
+ assert response.priority == 898
+ assert response.rule_name == "rule_name_value"
+ assert response.rule_tuple_count == 1737
+ assert response.target_resources == ["target_resources_value"]
+ assert response.target_service_accounts == ["target_service_accounts_value"]
+
+
+def test_get_rule_rest_required_fields(
+ request_type=compute.GetRuleNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.NetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_rule._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_rule._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("priority",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyRule()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_rule(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rule_rest_unset_required_fields():
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_rule._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("priority",))
+ & set(
+ (
+ "firewallPolicy",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rule_rest_interceptors(null_interceptor):
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = NetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_get_rule"
+ ) as post, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_get_rule"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.FirewallPolicyRule.to_json(
+ compute.FirewallPolicyRule()
+ )
+
+ request = compute.GetRuleNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.FirewallPolicyRule
+
+ client.get_rule(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rule_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRuleNetworkFirewallPolicyRequest
+):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_rule(request)
+
+
+def test_get_rule_rest_flattened():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyRule()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "firewall_policy": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ firewall_policy="firewall_policy_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_rule(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/getRule"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rule_rest_flattened_error(transport: str = "rest"):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_rule(
+ compute.GetRuleNetworkFirewallPolicyRequest(),
+ project="project_value",
+ firewall_policy="firewall_policy_value",
+ )
+
+
+def test_get_rule_rest_error():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.NetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "firewallPolicyResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = NetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertNetworkFirewallPolicyRequest
+):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/firewallPolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertNetworkFirewallPolicyRequest(),
+ project="project_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.NetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "firewallPolicyResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = NetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertNetworkFirewallPolicyRequest
+):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/firewallPolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertNetworkFirewallPolicyRequest(),
+ project="project_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListNetworkFirewallPoliciesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+
+
+def test_list_rest_required_fields(
+ request_type=compute.ListNetworkFirewallPoliciesRequest,
+):
+ transport_class = transports.NetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -3637,19 +5342,1668 @@ def test_list_rest_unset_required_fields():
assert set(unset_fields) == (
set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = NetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.FirewallPolicyList.to_json(
+ compute.FirewallPolicyList()
+ )
+
+ request = compute.ListNetworkFirewallPoliciesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.FirewallPolicyList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListNetworkFirewallPoliciesRequest
+):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/firewallPolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListNetworkFirewallPoliciesRequest(),
+ project="project_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.FirewallPolicyList(
+ items=[
+ compute.FirewallPolicy(),
+ compute.FirewallPolicy(),
+ compute.FirewallPolicy(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.FirewallPolicyList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.FirewallPolicyList(
+ items=[
+ compute.FirewallPolicy(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.FirewallPolicyList(
+ items=[
+ compute.FirewallPolicy(),
+ compute.FirewallPolicy(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.FirewallPolicyList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.FirewallPolicy) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(
+ request_type=compute.PatchNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.NetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "firewallPolicy",
+ "firewallPolicyResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = NetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchNetworkFirewallPolicyRequest
+):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "firewall_policy": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchNetworkFirewallPolicyRequest(),
+ project="project_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_patch_rest_error():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.NetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_unary_rest_unset_required_fields():
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "firewallPolicy",
+ "firewallPolicyResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_unary_rest_interceptors(null_interceptor):
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = NetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchNetworkFirewallPolicyRequest
+):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_unary(request)
+
+
+def test_patch_unary_rest_flattened():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "firewall_policy": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_unary(
+ compute.PatchNetworkFirewallPolicyRequest(),
+ project="project_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_patch_unary_rest_error():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRuleNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_patch_rule_rest(request_type):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_rule(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rule_rest_required_fields(
+ request_type=compute.PatchRuleNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.NetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_rule._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_rule._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "priority",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_rule(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rule_rest_unset_required_fields():
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch_rule._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "priority",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "firewallPolicy",
+ "firewallPolicyRuleResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rule_rest_interceptors(null_interceptor):
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = NetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_patch_rule"
+ ) as post, mock.patch.object(
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_patch_rule"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchRuleNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_rule(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rule_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRuleNetworkFirewallPolicyRequest
+):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_rule(request)
+
+
+def test_patch_rule_rest_flattened():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "firewall_policy": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_rule(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/patchRule"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rule_rest_flattened_error(transport: str = "rest"):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_rule(
+ compute.PatchRuleNetworkFirewallPolicyRequest(),
+ project="project_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
+ )
+
+
+def test_patch_rule_rest_error():
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRuleNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_patch_rule_unary_rest(request_type):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_rule_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_rule_unary_rest_required_fields(
+ request_type=compute.PatchRuleNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.NetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_rule._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_rule._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "priority",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_rule_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rule_unary_rest_unset_required_fields():
+ transport = transports.NetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch_rule._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "priority",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "firewallPolicy",
+ "firewallPolicyRuleResource",
+ "project",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_rule_unary_rest_interceptors(null_interceptor):
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3662,9 +7016,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "post_list"
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_patch_rule"
) as post, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "pre_list"
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_patch_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3679,19 +7033,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.FirewallPolicyList.to_json(
- compute.FirewallPolicyList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListNetworkFirewallPoliciesRequest()
+ request = compute.PatchRuleNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.FirewallPolicyList
+ post.return_value = compute.Operation
- client.list(
+ client.patch_rule_unary(
request,
metadata=[
("key", "val"),
@@ -3703,8 +7055,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListNetworkFirewallPoliciesRequest
+def test_patch_rule_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRuleNetworkFirewallPolicyRequest
):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3712,7 +7064,35 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3724,10 +7104,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch_rule_unary(request)
-def test_list_rest_flattened():
+def test_patch_rule_unary_rest_flattened():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3736,39 +7116,43 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "firewall_policy": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch_rule_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/firewallPolicies"
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/patchRule"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3777,81 +7161,30 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListNetworkFirewallPoliciesRequest(),
+ client.patch_rule_unary(
+ compute.PatchRuleNetworkFirewallPolicyRequest(),
project="project_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_rule_unary_rest_error():
client = NetworkFirewallPoliciesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.FirewallPolicyList(
- items=[
- compute.FirewallPolicy(),
- compute.FirewallPolicy(),
- compute.FirewallPolicy(),
- ],
- next_page_token="abc",
- ),
- compute.FirewallPolicyList(
- items=[],
- next_page_token="def",
- ),
- compute.FirewallPolicyList(
- items=[
- compute.FirewallPolicy(),
- ],
- next_page_token="ghi",
- ),
- compute.FirewallPolicyList(
- items=[
- compute.FirewallPolicy(),
- compute.FirewallPolicy(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.FirewallPolicyList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.FirewallPolicy) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchNetworkFirewallPolicyRequest,
+ compute.RemoveAssociationNetworkFirewallPolicyRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_remove_association_rest(request_type):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3859,66 +7192,6 @@ def test_patch_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "firewall_policy": "sample2"}
- request_init["firewall_policy_resource"] = {
- "associations": [
- {
- "attachment_target": "attachment_target_value",
- "display_name": "display_name_value",
- "firewall_policy_id": "firewall_policy_id_value",
- "name": "name_value",
- "short_name": "short_name_value",
- }
- ],
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "display_name": "display_name_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "parent": "parent_value",
- "region": "region_value",
- "rule_tuple_count": 1737,
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": [
- "dest_ip_ranges_value_1",
- "dest_ip_ranges_value_2",
- ],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": [
- "target_resources_value_1",
- "target_resources_value_2",
- ],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
- ],
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "short_name": "short_name_value",
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -3955,10 +7228,10 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.remove_association(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -3983,8 +7256,8 @@ def test_patch_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchNetworkFirewallPolicyRequest,
+def test_remove_association_rest_required_fields(
+ request_type=compute.RemoveAssociationNetworkFirewallPolicyRequest,
):
transport_class = transports.NetworkFirewallPoliciesRestTransport
@@ -4002,7 +7275,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).remove_association._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4012,9 +7285,14 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).remove_association._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "name",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -4041,10 +7319,9 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -4053,25 +7330,29 @@ def test_patch_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.remove_association(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_remove_association_rest_unset_required_fields():
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.remove_association._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "name",
+ "requestId",
+ )
+ )
& set(
(
"firewallPolicy",
- "firewallPolicyResource",
"project",
)
)
@@ -4079,7 +7360,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_remove_association_rest_interceptors(null_interceptor):
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -4092,9 +7373,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "post_patch"
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_remove_association"
) as post, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "pre_patch"
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_remove_association"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4111,7 +7392,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchNetworkFirewallPolicyRequest()
+ request = compute.RemoveAssociationNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -4119,7 +7400,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.remove_association(
request,
metadata=[
("key", "val"),
@@ -4127,80 +7408,21 @@ def test_patch_unary_rest_interceptors(null_interceptor):
],
)
- pre.assert_called_once()
- post.assert_called_once()
-
-
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchNetworkFirewallPolicyRequest
-):
- client = NetworkFirewallPoliciesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
- )
-
- # send a request that will satisfy transcoding
- request_init = {"project": "sample1", "firewall_policy": "sample2"}
- request_init["firewall_policy_resource"] = {
- "associations": [
- {
- "attachment_target": "attachment_target_value",
- "display_name": "display_name_value",
- "firewall_policy_id": "firewall_policy_id_value",
- "name": "name_value",
- "short_name": "short_name_value",
- }
- ],
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "display_name": "display_name_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "parent": "parent_value",
- "region": "region_value",
- "rule_tuple_count": 1737,
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": [
- "dest_ip_ranges_value_1",
- "dest_ip_ranges_value_2",
- ],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": [
- "target_resources_value_1",
- "target_resources_value_2",
- ],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
- ],
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "short_name": "short_name_value",
- }
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_remove_association_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.RemoveAssociationNetworkFirewallPolicyRequest,
+):
+ client = NetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "firewall_policy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -4212,10 +7434,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.remove_association(request)
-def test_patch_unary_rest_flattened():
+def test_remove_association_rest_flattened():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4233,13 +7455,6 @@ def test_patch_unary_rest_flattened():
mock_args = dict(
project="project_value",
firewall_policy="firewall_policy_value",
- firewall_policy_resource=compute.FirewallPolicy(
- associations=[
- compute.FirewallPolicyAssociation(
- attachment_target="attachment_target_value"
- )
- ]
- ),
)
mock_args.update(sample_request)
@@ -4251,20 +7466,20 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.remove_association(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}"
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/removeAssociation"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_remove_association_rest_flattened_error(transport: str = "rest"):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4273,21 +7488,14 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchNetworkFirewallPolicyRequest(),
+ client.remove_association(
+ compute.RemoveAssociationNetworkFirewallPolicyRequest(),
project="project_value",
firewall_policy="firewall_policy_value",
- firewall_policy_resource=compute.FirewallPolicy(
- associations=[
- compute.FirewallPolicyAssociation(
- attachment_target="attachment_target_value"
- )
- ]
- ),
)
-def test_patch_unary_rest_error():
+def test_remove_association_rest_error():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4296,11 +7504,11 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchRuleNetworkFirewallPolicyRequest,
+ compute.RemoveAssociationNetworkFirewallPolicyRequest,
dict,
],
)
-def test_patch_rule_unary_rest(request_type):
+def test_remove_association_unary_rest(request_type):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4308,34 +7516,6 @@ def test_patch_rule_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "firewall_policy": "sample2"}
- request_init["firewall_policy_rule_resource"] = {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": ["target_resources_value_1", "target_resources_value_2"],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -4372,36 +7552,14 @@ def test_patch_rule_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_rule_unary(request)
+ response = client.remove_association_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_patch_rule_unary_rest_required_fields(
- request_type=compute.PatchRuleNetworkFirewallPolicyRequest,
+def test_remove_association_unary_rest_required_fields(
+ request_type=compute.RemoveAssociationNetworkFirewallPolicyRequest,
):
transport_class = transports.NetworkFirewallPoliciesRestTransport
@@ -4419,7 +7577,7 @@ def test_patch_rule_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch_rule._get_unset_required_fields(jsonified_request)
+ ).remove_association._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4429,11 +7587,11 @@ def test_patch_rule_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch_rule._get_unset_required_fields(jsonified_request)
+ ).remove_association._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "priority",
+ "name",
"request_id",
)
)
@@ -4466,7 +7624,6 @@ def test_patch_rule_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -4475,30 +7632,29 @@ def test_patch_rule_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_rule_unary(request)
+ response = client.remove_association_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_rule_unary_rest_unset_required_fields():
+def test_remove_association_unary_rest_unset_required_fields():
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch_rule._get_unset_required_fields({})
+ unset_fields = transport.remove_association._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
- "priority",
+ "name",
"requestId",
)
)
& set(
(
"firewallPolicy",
- "firewallPolicyRuleResource",
"project",
)
)
@@ -4506,7 +7662,7 @@ def test_patch_rule_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_rule_unary_rest_interceptors(null_interceptor):
+def test_remove_association_unary_rest_interceptors(null_interceptor):
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -4519,9 +7675,9 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "post_patch_rule"
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_remove_association"
) as post, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "pre_patch_rule"
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_remove_association"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4538,7 +7694,7 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchRuleNetworkFirewallPolicyRequest()
+ request = compute.RemoveAssociationNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -4546,7 +7702,7 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_rule_unary(
+ client.remove_association_unary(
request,
metadata=[
("key", "val"),
@@ -4558,8 +7714,9 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_rule_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchRuleNetworkFirewallPolicyRequest
+def test_remove_association_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.RemoveAssociationNetworkFirewallPolicyRequest,
):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4568,34 +7725,6 @@ def test_patch_rule_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "firewall_policy": "sample2"}
- request_init["firewall_policy_rule_resource"] = {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": ["target_resources_value_1", "target_resources_value_2"],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -4607,10 +7736,10 @@ def test_patch_rule_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_rule_unary(request)
+ client.remove_association_unary(request)
-def test_patch_rule_unary_rest_flattened():
+def test_remove_association_unary_rest_flattened():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4628,9 +7757,6 @@ def test_patch_rule_unary_rest_flattened():
mock_args = dict(
project="project_value",
firewall_policy="firewall_policy_value",
- firewall_policy_rule_resource=compute.FirewallPolicyRule(
- action="action_value"
- ),
)
mock_args.update(sample_request)
@@ -4642,20 +7768,20 @@ def test_patch_rule_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_rule_unary(**mock_args)
+ client.remove_association_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/patchRule"
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/removeAssociation"
% client.transport._host,
args[1],
)
-def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"):
+def test_remove_association_unary_rest_flattened_error(transport: str = "rest"):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4664,17 +7790,14 @@ def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_rule_unary(
- compute.PatchRuleNetworkFirewallPolicyRequest(),
+ client.remove_association_unary(
+ compute.RemoveAssociationNetworkFirewallPolicyRequest(),
project="project_value",
firewall_policy="firewall_policy_value",
- firewall_policy_rule_resource=compute.FirewallPolicyRule(
- action="action_value"
- ),
)
-def test_patch_rule_unary_rest_error():
+def test_remove_association_unary_rest_error():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4683,11 +7806,11 @@ def test_patch_rule_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.RemoveAssociationNetworkFirewallPolicyRequest,
+ compute.RemoveRuleNetworkFirewallPolicyRequest,
dict,
],
)
-def test_remove_association_unary_rest(request_type):
+def test_remove_rule_rest(request_type):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4731,10 +7854,10 @@ def test_remove_association_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_association_unary(request)
+ response = client.remove_rule(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -4759,8 +7882,8 @@ def test_remove_association_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_remove_association_unary_rest_required_fields(
- request_type=compute.RemoveAssociationNetworkFirewallPolicyRequest,
+def test_remove_rule_rest_required_fields(
+ request_type=compute.RemoveRuleNetworkFirewallPolicyRequest,
):
transport_class = transports.NetworkFirewallPoliciesRestTransport
@@ -4778,7 +7901,7 @@ def test_remove_association_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_association._get_unset_required_fields(jsonified_request)
+ ).remove_rule._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4788,11 +7911,11 @@ def test_remove_association_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_association._get_unset_required_fields(jsonified_request)
+ ).remove_rule._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "name",
+ "priority",
"request_id",
)
)
@@ -4833,23 +7956,23 @@ def test_remove_association_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_association_unary(request)
+ response = client.remove_rule(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_remove_association_unary_rest_unset_required_fields():
+def test_remove_rule_rest_unset_required_fields():
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.remove_association._get_unset_required_fields({})
+ unset_fields = transport.remove_rule._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
- "name",
+ "priority",
"requestId",
)
)
@@ -4863,7 +7986,7 @@ def test_remove_association_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_remove_association_unary_rest_interceptors(null_interceptor):
+def test_remove_rule_rest_interceptors(null_interceptor):
transport = transports.NetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -4876,9 +7999,9 @@ def test_remove_association_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "post_remove_association"
+ transports.NetworkFirewallPoliciesRestInterceptor, "post_remove_rule"
) as post, mock.patch.object(
- transports.NetworkFirewallPoliciesRestInterceptor, "pre_remove_association"
+ transports.NetworkFirewallPoliciesRestInterceptor, "pre_remove_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4895,7 +8018,7 @@ def test_remove_association_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.RemoveAssociationNetworkFirewallPolicyRequest()
+ request = compute.RemoveRuleNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -4903,7 +8026,7 @@ def test_remove_association_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.remove_association_unary(
+ client.remove_rule(
request,
metadata=[
("key", "val"),
@@ -4915,9 +8038,8 @@ def test_remove_association_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_remove_association_unary_rest_bad_request(
- transport: str = "rest",
- request_type=compute.RemoveAssociationNetworkFirewallPolicyRequest,
+def test_remove_rule_rest_bad_request(
+ transport: str = "rest", request_type=compute.RemoveRuleNetworkFirewallPolicyRequest
):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4937,10 +8059,10 @@ def test_remove_association_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.remove_association_unary(request)
+ client.remove_rule(request)
-def test_remove_association_unary_rest_flattened():
+def test_remove_rule_rest_flattened():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4969,20 +8091,20 @@ def test_remove_association_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.remove_association_unary(**mock_args)
+ client.remove_rule(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/removeAssociation"
+ "%s/compute/v1/projects/{project}/global/firewallPolicies/{firewall_policy}/removeRule"
% client.transport._host,
args[1],
)
-def test_remove_association_unary_rest_flattened_error(transport: str = "rest"):
+def test_remove_rule_rest_flattened_error(transport: str = "rest"):
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4991,14 +8113,14 @@ def test_remove_association_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.remove_association_unary(
- compute.RemoveAssociationNetworkFirewallPolicyRequest(),
+ client.remove_rule(
+ compute.RemoveRuleNetworkFirewallPolicyRequest(),
project="project_value",
firewall_policy="firewall_policy_value",
)
-def test_remove_association_unary_rest_error():
+def test_remove_rule_rest_error():
client = NetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -5059,28 +8181,6 @@ def test_remove_rule_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_remove_rule_unary_rest_required_fields(
@@ -6124,6 +9224,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = NetworkFirewallPoliciesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_network_firewall_policies_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -6170,6 +9283,14 @@ def test_network_firewall_policies_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_network_firewall_policies_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_networks.py b/tests/unit/gapic/compute_v1/test_networks.py
index c4dfe670c..dde7ef50e 100644
--- a/tests/unit/gapic/compute_v1/test_networks.py
+++ b/tests/unit/gapic/compute_v1/test_networks.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -512,7 +514,7 @@ def test_networks_client_client_options_credentials_file(
dict,
],
)
-def test_add_peering_unary_rest(request_type):
+def test_add_peering_rest(request_type):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -574,10 +576,10 @@ def test_add_peering_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_peering_unary(request)
+ response = client.add_peering(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -602,7 +604,7 @@ def test_add_peering_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_add_peering_unary_rest_required_fields(
+def test_add_peering_rest_required_fields(
request_type=compute.AddPeeringNetworkRequest,
):
transport_class = transports.NetworksRestTransport
@@ -672,14 +674,14 @@ def test_add_peering_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_peering_unary(request)
+ response = client.add_peering(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_add_peering_unary_rest_unset_required_fields():
+def test_add_peering_rest_unset_required_fields():
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -698,7 +700,7 @@ def test_add_peering_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_peering_unary_rest_interceptors(null_interceptor):
+def test_add_peering_rest_interceptors(null_interceptor):
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
@@ -736,7 +738,7 @@ def test_add_peering_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_peering_unary(
+ client.add_peering(
request,
metadata=[
("key", "val"),
@@ -748,7 +750,7 @@ def test_add_peering_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_peering_unary_rest_bad_request(
+def test_add_peering_rest_bad_request(
transport: str = "rest", request_type=compute.AddPeeringNetworkRequest
):
client = NetworksClient(
@@ -787,10 +789,10 @@ def test_add_peering_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_peering_unary(request)
+ client.add_peering(request)
-def test_add_peering_unary_rest_flattened():
+def test_add_peering_rest_flattened():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -822,7 +824,7 @@ def test_add_peering_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_peering_unary(**mock_args)
+ client.add_peering(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -835,7 +837,7 @@ def test_add_peering_unary_rest_flattened():
)
-def test_add_peering_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_peering_rest_flattened_error(transport: str = "rest"):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -844,7 +846,7 @@ def test_add_peering_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_peering_unary(
+ client.add_peering(
compute.AddPeeringNetworkRequest(),
project="project_value",
network="network_value",
@@ -854,7 +856,7 @@ def test_add_peering_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_add_peering_unary_rest_error():
+def test_add_peering_rest_error():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -863,11 +865,11 @@ def test_add_peering_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteNetworkRequest,
+ compute.AddPeeringNetworkRequest,
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_add_peering_unary_rest(request_type):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -875,6 +877,24 @@ def test_delete_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "network": "sample2"}
+ request_init["networks_add_peering_request_resource"] = {
+ "auto_create_routes": True,
+ "name": "name_value",
+ "network_peering": {
+ "auto_create_routes": True,
+ "exchange_subnet_routes": True,
+ "export_custom_routes": True,
+ "export_subnet_routes_with_public_ip": True,
+ "import_custom_routes": True,
+ "import_subnet_routes_with_public_ip": True,
+ "name": "name_value",
+ "network": "network_value",
+ "peer_mtu": 865,
+ "state": "state_value",
+ "state_details": "state_details_value",
+ },
+ "peer_network": "peer_network_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -911,35 +931,15 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.add_peering_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(request_type=compute.DeleteNetworkRequest):
+def test_add_peering_unary_rest_required_fields(
+ request_type=compute.AddPeeringNetworkRequest,
+):
transport_class = transports.NetworksRestTransport
request_init = {}
@@ -956,7 +956,7 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteNetworkReq
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).add_peering._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -966,7 +966,7 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteNetworkReq
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).add_peering._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -995,9 +995,10 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteNetworkReq
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1006,24 +1007,25 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteNetworkReq
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.add_peering_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_add_peering_unary_rest_unset_required_fields():
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.add_peering._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"network",
+ "networksAddPeeringRequestResource",
"project",
)
)
@@ -1031,7 +1033,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_add_peering_unary_rest_interceptors(null_interceptor):
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
@@ -1042,9 +1044,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworksRestInterceptor, "post_delete"
+ transports.NetworksRestInterceptor, "post_add_peering"
) as post, mock.patch.object(
- transports.NetworksRestInterceptor, "pre_delete"
+ transports.NetworksRestInterceptor, "pre_add_peering"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1061,7 +1063,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteNetworkRequest()
+ request = compute.AddPeeringNetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1069,7 +1071,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.add_peering_unary(
request,
metadata=[
("key", "val"),
@@ -1081,8 +1083,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteNetworkRequest
+def test_add_peering_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddPeeringNetworkRequest
):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1091,6 +1093,24 @@ def test_delete_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "network": "sample2"}
+ request_init["networks_add_peering_request_resource"] = {
+ "auto_create_routes": True,
+ "name": "name_value",
+ "network_peering": {
+ "auto_create_routes": True,
+ "exchange_subnet_routes": True,
+ "export_custom_routes": True,
+ "export_subnet_routes_with_public_ip": True,
+ "import_custom_routes": True,
+ "import_subnet_routes_with_public_ip": True,
+ "name": "name_value",
+ "network": "network_value",
+ "peer_mtu": 865,
+ "state": "state_value",
+ "state_details": "state_details_value",
+ },
+ "peer_network": "peer_network_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1102,10 +1122,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.add_peering_unary(request)
-def test_delete_unary_rest_flattened():
+def test_add_peering_unary_rest_flattened():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1123,6 +1143,9 @@ def test_delete_unary_rest_flattened():
mock_args = dict(
project="project_value",
network="network_value",
+ networks_add_peering_request_resource=compute.NetworksAddPeeringRequest(
+ auto_create_routes=True
+ ),
)
mock_args.update(sample_request)
@@ -1134,20 +1157,20 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.add_peering_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/networks/{network}"
+ "%s/compute/v1/projects/{project}/global/networks/{network}/addPeering"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_peering_unary_rest_flattened_error(transport: str = "rest"):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1156,14 +1179,17 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteNetworkRequest(),
+ client.add_peering_unary(
+ compute.AddPeeringNetworkRequest(),
project="project_value",
network="network_value",
+ networks_add_peering_request_resource=compute.NetworksAddPeeringRequest(
+ auto_create_routes=True
+ ),
)
-def test_delete_unary_rest_error():
+def test_add_peering_unary_rest_error():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1172,11 +1198,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetNetworkRequest,
+ compute.DeleteNetworkRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_rest(request_type):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1189,55 +1215,66 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Network(
- I_pv4_range="I_pv4_range_value",
- auto_create_subnetworks=True,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- enable_ula_internal_ipv6=True,
- gateway_i_pv4="gateway_i_pv4_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
- internal_ipv6_range="internal_ipv6_range_value",
+ insert_time="insert_time_value",
kind="kind_value",
- mtu=342,
name="name_value",
- network_firewall_policy_enforcement_order="network_firewall_policy_enforcement_order_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- self_link_with_id="self_link_with_id_value",
- subnetworks=["subnetworks_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Network.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Network)
- assert response.I_pv4_range == "I_pv4_range_value"
- assert response.auto_create_subnetworks is True
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.enable_ula_internal_ipv6 is True
- assert response.gateway_i_pv4 == "gateway_i_pv4_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
- assert response.internal_ipv6_range == "internal_ipv6_range_value"
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.mtu == 342
assert response.name == "name_value"
- assert (
- response.network_firewall_policy_enforcement_order
- == "network_firewall_policy_enforcement_order_value"
- )
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.self_link_with_id == "self_link_with_id_value"
- assert response.subnetworks == ["subnetworks_value"]
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_rest_required_fields(request_type=compute.GetNetworkRequest):
+def test_delete_rest_required_fields(request_type=compute.DeleteNetworkRequest):
transport_class = transports.NetworksRestTransport
request_init = {}
@@ -1254,7 +1291,7 @@ def test_get_rest_required_fields(request_type=compute.GetNetworkRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1264,7 +1301,9 @@ def test_get_rest_required_fields(request_type=compute.GetNetworkRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1280,7 +1319,7 @@ def test_get_rest_required_fields(request_type=compute.GetNetworkRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Network()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1291,32 +1330,32 @@ def test_get_rest_required_fields(request_type=compute.GetNetworkRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Network.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"network",
@@ -1327,7 +1366,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
@@ -1338,9 +1377,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworksRestInterceptor, "post_get"
+ transports.NetworksRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.NetworksRestInterceptor, "pre_get"
+ transports.NetworksRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1355,17 +1394,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Network.to_json(compute.Network())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetNetworkRequest()
+ request = compute.DeleteNetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Network
+ post.return_value = compute.Operation
- client.get(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1377,8 +1416,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetNetworkRequest
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteNetworkRequest
):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1398,10 +1437,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete(request)
-def test_get_rest_flattened():
+def test_delete_rest_flattened():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1410,7 +1449,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Network()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "network": "sample2"}
@@ -1425,12 +1464,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Network.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1443,7 +1482,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1452,14 +1491,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetNetworkRequest(),
+ client.delete(
+ compute.DeleteNetworkRequest(),
project="project_value",
network="network_value",
)
-def test_get_rest_error():
+def test_delete_rest_error():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1468,11 +1507,11 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetEffectiveFirewallsNetworkRequest,
+ compute.DeleteNetworkRequest,
dict,
],
)
-def test_get_effective_firewalls_rest(request_type):
+def test_delete_unary_rest(request_type):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1485,25 +1524,44 @@ def test_get_effective_firewalls_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NetworksGetEffectiveFirewallsResponse()
-
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 200
- json_return_value = compute.NetworksGetEffectiveFirewallsResponse.to_json(
- return_value
- )
- response_value._content = json_return_value.encode("UTF-8")
- req.return_value = response_value
- response = client.get_effective_firewalls(request)
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.NetworksGetEffectiveFirewallsResponse)
+ assert isinstance(response, compute.Operation)
-def test_get_effective_firewalls_rest_required_fields(
- request_type=compute.GetEffectiveFirewallsNetworkRequest,
-):
+def test_delete_unary_rest_required_fields(request_type=compute.DeleteNetworkRequest):
transport_class = transports.NetworksRestTransport
request_init = {}
@@ -1520,7 +1578,7 @@ def test_get_effective_firewalls_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_effective_firewalls._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1530,7 +1588,9 @@ def test_get_effective_firewalls_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_effective_firewalls._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1546,7 +1606,7 @@ def test_get_effective_firewalls_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.NetworksGetEffectiveFirewallsResponse()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1557,34 +1617,32 @@ def test_get_effective_firewalls_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworksGetEffectiveFirewallsResponse.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_effective_firewalls(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_effective_firewalls_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_effective_firewalls._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"network",
@@ -1595,7 +1653,7 @@ def test_get_effective_firewalls_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_effective_firewalls_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
@@ -1606,9 +1664,9 @@ def test_get_effective_firewalls_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworksRestInterceptor, "post_get_effective_firewalls"
+ transports.NetworksRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.NetworksRestInterceptor, "pre_get_effective_firewalls"
+ transports.NetworksRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1623,21 +1681,17 @@ def test_get_effective_firewalls_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = (
- compute.NetworksGetEffectiveFirewallsResponse.to_json(
- compute.NetworksGetEffectiveFirewallsResponse()
- )
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetEffectiveFirewallsNetworkRequest()
+ request = compute.DeleteNetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.NetworksGetEffectiveFirewallsResponse
+ post.return_value = compute.Operation
- client.get_effective_firewalls(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1649,8 +1703,8 @@ def test_get_effective_firewalls_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_effective_firewalls_rest_bad_request(
- transport: str = "rest", request_type=compute.GetEffectiveFirewallsNetworkRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteNetworkRequest
):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1670,10 +1724,10 @@ def test_get_effective_firewalls_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_effective_firewalls(request)
+ client.delete_unary(request)
-def test_get_effective_firewalls_rest_flattened():
+def test_delete_unary_rest_flattened():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1682,7 +1736,7 @@ def test_get_effective_firewalls_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NetworksGetEffectiveFirewallsResponse()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "network": "sample2"}
@@ -1697,27 +1751,25 @@ def test_get_effective_firewalls_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworksGetEffectiveFirewallsResponse.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_effective_firewalls(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/networks/{network}/getEffectiveFirewalls"
+ "%s/compute/v1/projects/{project}/global/networks/{network}"
% client.transport._host,
args[1],
)
-def test_get_effective_firewalls_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1726,14 +1778,14 @@ def test_get_effective_firewalls_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_effective_firewalls(
- compute.GetEffectiveFirewallsNetworkRequest(),
+ client.delete_unary(
+ compute.DeleteNetworkRequest(),
project="project_value",
network="network_value",
)
-def test_get_effective_firewalls_rest_error():
+def test_delete_unary_rest_error():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1742,119 +1794,76 @@ def test_get_effective_firewalls_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertNetworkRequest,
+ compute.GetNetworkRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["network_resource"] = {
- "I_pv4_range": "I_pv4_range_value",
- "auto_create_subnetworks": True,
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "enable_ula_internal_ipv6": True,
- "gateway_i_pv4": "gateway_i_pv4_value",
- "id": 205,
- "internal_ipv6_range": "internal_ipv6_range_value",
- "kind": "kind_value",
- "mtu": 342,
- "name": "name_value",
- "network_firewall_policy_enforcement_order": "network_firewall_policy_enforcement_order_value",
- "peerings": [
- {
- "auto_create_routes": True,
- "exchange_subnet_routes": True,
- "export_custom_routes": True,
- "export_subnet_routes_with_public_ip": True,
- "import_custom_routes": True,
- "import_subnet_routes_with_public_ip": True,
- "name": "name_value",
- "network": "network_value",
- "peer_mtu": 865,
- "state": "state_value",
- "state_details": "state_details_value",
- }
- ],
- "routing_config": {"routing_mode": "routing_mode_value"},
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "subnetworks": ["subnetworks_value_1", "subnetworks_value_2"],
- }
+ request_init = {"project": "sample1", "network": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.Network(
+ I_pv4_range="I_pv4_range_value",
+ auto_create_subnetworks=True,
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ enable_ula_internal_ipv6=True,
+ gateway_i_pv4="gateway_i_pv4_value",
id=205,
- insert_time="insert_time_value",
+ internal_ipv6_range="internal_ipv6_range_value",
kind="kind_value",
+ mtu=342,
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
+ network_firewall_policy_enforcement_order="network_firewall_policy_enforcement_order_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ self_link_with_id="self_link_with_id_value",
+ subnetworks=["subnetworks_value"],
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Network.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.Network)
+ assert response.I_pv4_range == "I_pv4_range_value"
+ assert response.auto_create_subnetworks is True
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.enable_ula_internal_ipv6 is True
+ assert response.gateway_i_pv4 == "gateway_i_pv4_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert response.internal_ipv6_range == "internal_ipv6_range_value"
assert response.kind == "kind_value"
+ assert response.mtu == 342
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
+ assert (
+ response.network_firewall_policy_enforcement_order
+ == "network_firewall_policy_enforcement_order_value"
+ )
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.self_link_with_id == "self_link_with_id_value"
+ assert response.subnetworks == ["subnetworks_value"]
-def test_insert_unary_rest_required_fields(request_type=compute.InsertNetworkRequest):
+def test_get_rest_required_fields(request_type=compute.GetNetworkRequest):
transport_class = transports.NetworksRestTransport
request_init = {}
+ request_init["network"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1867,21 +1876,22 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertNetworkReq
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["network"] = "network_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "network" in jsonified_request
+ assert jsonified_request["network"] == "network_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -1892,7 +1902,7 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertNetworkReq
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Network()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1903,36 +1913,35 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertNetworkReq
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Network.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
- "networkResource",
+ "network",
"project",
)
)
@@ -1940,7 +1949,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
@@ -1951,9 +1960,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworksRestInterceptor, "post_insert"
+ transports.NetworksRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.NetworksRestInterceptor, "pre_insert"
+ transports.NetworksRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1968,17 +1977,17 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.Network.to_json(compute.Network())
- request = compute.InsertNetworkRequest()
+ request = compute.GetNetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.Network
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1990,8 +1999,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertNetworkRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetNetworkRequest
):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1999,11 +2008,2394 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["network_resource"] = {
- "I_pv4_range": "I_pv4_range_value",
- "auto_create_subnetworks": True,
- "creation_timestamp": "creation_timestamp_value",
+ request_init = {"project": "sample1", "network": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Network()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "network": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ network="network_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Network.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/networks/{network}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetNetworkRequest(),
+ project="project_value",
+ network="network_value",
+ )
+
+
+def test_get_rest_error():
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetEffectiveFirewallsNetworkRequest,
+ dict,
+ ],
+)
+def test_get_effective_firewalls_rest(request_type):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NetworksGetEffectiveFirewallsResponse()
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NetworksGetEffectiveFirewallsResponse.to_json(
+ return_value
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_effective_firewalls(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.NetworksGetEffectiveFirewallsResponse)
+
+
+def test_get_effective_firewalls_rest_required_fields(
+ request_type=compute.GetEffectiveFirewallsNetworkRequest,
+):
+ transport_class = transports.NetworksRestTransport
+
+ request_init = {}
+ request_init["network"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_effective_firewalls._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["network"] = "network_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_effective_firewalls._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "network" in jsonified_request
+ assert jsonified_request["network"] == "network_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NetworksGetEffectiveFirewallsResponse()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NetworksGetEffectiveFirewallsResponse.to_json(
+ return_value
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_effective_firewalls(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_effective_firewalls_rest_unset_required_fields():
+ transport = transports.NetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_effective_firewalls._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "network",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_effective_firewalls_rest_interceptors(null_interceptor):
+ transport = transports.NetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
+ )
+ client = NetworksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworksRestInterceptor, "post_get_effective_firewalls"
+ ) as post, mock.patch.object(
+ transports.NetworksRestInterceptor, "pre_get_effective_firewalls"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = (
+ compute.NetworksGetEffectiveFirewallsResponse.to_json(
+ compute.NetworksGetEffectiveFirewallsResponse()
+ )
+ )
+
+ request = compute.GetEffectiveFirewallsNetworkRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.NetworksGetEffectiveFirewallsResponse
+
+ client.get_effective_firewalls(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_effective_firewalls_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetEffectiveFirewallsNetworkRequest
+):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_effective_firewalls(request)
+
+
+def test_get_effective_firewalls_rest_flattened():
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NetworksGetEffectiveFirewallsResponse()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "network": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ network="network_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NetworksGetEffectiveFirewallsResponse.to_json(
+ return_value
+ )
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_effective_firewalls(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/networks/{network}/getEffectiveFirewalls"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_effective_firewalls_rest_flattened_error(transport: str = "rest"):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_effective_firewalls(
+ compute.GetEffectiveFirewallsNetworkRequest(),
+ project="project_value",
+ network="network_value",
+ )
+
+
+def test_get_effective_firewalls_rest_error():
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertNetworkRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["network_resource"] = {
+ "I_pv4_range": "I_pv4_range_value",
+ "auto_create_subnetworks": True,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable_ula_internal_ipv6": True,
+ "gateway_i_pv4": "gateway_i_pv4_value",
+ "id": 205,
+ "internal_ipv6_range": "internal_ipv6_range_value",
+ "kind": "kind_value",
+ "mtu": 342,
+ "name": "name_value",
+ "network_firewall_policy_enforcement_order": "network_firewall_policy_enforcement_order_value",
+ "peerings": [
+ {
+ "auto_create_routes": True,
+ "exchange_subnet_routes": True,
+ "export_custom_routes": True,
+ "export_subnet_routes_with_public_ip": True,
+ "import_custom_routes": True,
+ "import_subnet_routes_with_public_ip": True,
+ "name": "name_value",
+ "network": "network_value",
+ "peer_mtu": 865,
+ "state": "state_value",
+ "state_details": "state_details_value",
+ }
+ ],
+ "routing_config": {"routing_mode": "routing_mode_value"},
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "subnetworks": ["subnetworks_value_1", "subnetworks_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertNetworkRequest):
+ transport_class = transports.NetworksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.NetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "networkResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.NetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
+ )
+ client = NetworksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworksRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.NetworksRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertNetworkRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertNetworkRequest
+):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["network_resource"] = {
+ "I_pv4_range": "I_pv4_range_value",
+ "auto_create_subnetworks": True,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable_ula_internal_ipv6": True,
+ "gateway_i_pv4": "gateway_i_pv4_value",
+ "id": 205,
+ "internal_ipv6_range": "internal_ipv6_range_value",
+ "kind": "kind_value",
+ "mtu": 342,
+ "name": "name_value",
+ "network_firewall_policy_enforcement_order": "network_firewall_policy_enforcement_order_value",
+ "peerings": [
+ {
+ "auto_create_routes": True,
+ "exchange_subnet_routes": True,
+ "export_custom_routes": True,
+ "export_subnet_routes_with_public_ip": True,
+ "import_custom_routes": True,
+ "import_subnet_routes_with_public_ip": True,
+ "name": "name_value",
+ "network": "network_value",
+ "peer_mtu": 865,
+ "state": "state_value",
+ "state_details": "state_details_value",
+ }
+ ],
+ "routing_config": {"routing_mode": "routing_mode_value"},
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "subnetworks": ["subnetworks_value_1", "subnetworks_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ network_resource=compute.Network(I_pv4_range="I_pv4_range_value"),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/networks" % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertNetworkRequest(),
+ project="project_value",
+ network_resource=compute.Network(I_pv4_range="I_pv4_range_value"),
+ )
+
+
+def test_insert_rest_error():
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertNetworkRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["network_resource"] = {
+ "I_pv4_range": "I_pv4_range_value",
+ "auto_create_subnetworks": True,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable_ula_internal_ipv6": True,
+ "gateway_i_pv4": "gateway_i_pv4_value",
+ "id": 205,
+ "internal_ipv6_range": "internal_ipv6_range_value",
+ "kind": "kind_value",
+ "mtu": 342,
+ "name": "name_value",
+ "network_firewall_policy_enforcement_order": "network_firewall_policy_enforcement_order_value",
+ "peerings": [
+ {
+ "auto_create_routes": True,
+ "exchange_subnet_routes": True,
+ "export_custom_routes": True,
+ "export_subnet_routes_with_public_ip": True,
+ "import_custom_routes": True,
+ "import_subnet_routes_with_public_ip": True,
+ "name": "name_value",
+ "network": "network_value",
+ "peer_mtu": 865,
+ "state": "state_value",
+ "state_details": "state_details_value",
+ }
+ ],
+ "routing_config": {"routing_mode": "routing_mode_value"},
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "subnetworks": ["subnetworks_value_1", "subnetworks_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(request_type=compute.InsertNetworkRequest):
+ transport_class = transports.NetworksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.NetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "networkResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.NetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
+ )
+ client = NetworksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworksRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.NetworksRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertNetworkRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertNetworkRequest
+):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["network_resource"] = {
+ "I_pv4_range": "I_pv4_range_value",
+ "auto_create_subnetworks": True,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable_ula_internal_ipv6": True,
+ "gateway_i_pv4": "gateway_i_pv4_value",
+ "id": 205,
+ "internal_ipv6_range": "internal_ipv6_range_value",
+ "kind": "kind_value",
+ "mtu": 342,
+ "name": "name_value",
+ "network_firewall_policy_enforcement_order": "network_firewall_policy_enforcement_order_value",
+ "peerings": [
+ {
+ "auto_create_routes": True,
+ "exchange_subnet_routes": True,
+ "export_custom_routes": True,
+ "export_subnet_routes_with_public_ip": True,
+ "import_custom_routes": True,
+ "import_subnet_routes_with_public_ip": True,
+ "name": "name_value",
+ "network": "network_value",
+ "peer_mtu": 865,
+ "state": "state_value",
+ "state_details": "state_details_value",
+ }
+ ],
+ "routing_config": {"routing_mode": "routing_mode_value"},
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "subnetworks": ["subnetworks_value_1", "subnetworks_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ network_resource=compute.Network(I_pv4_range="I_pv4_range_value"),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/networks" % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertNetworkRequest(),
+ project="project_value",
+ network_resource=compute.Network(I_pv4_range="I_pv4_range_value"),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListNetworksRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NetworkList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NetworkList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListNetworksRequest):
+ transport_class = transports.NetworksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NetworkList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NetworkList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.NetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.NetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
+ )
+ client = NetworksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworksRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.NetworksRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.NetworkList.to_json(compute.NetworkList())
+
+ request = compute.ListNetworksRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.NetworkList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListNetworksRequest
+):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NetworkList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NetworkList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/networks" % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListNetworksRequest(),
+ project="project_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.NetworkList(
+ items=[
+ compute.Network(),
+ compute.Network(),
+ compute.Network(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.NetworkList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.NetworkList(
+ items=[
+ compute.Network(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.NetworkList(
+ items=[
+ compute.Network(),
+ compute.Network(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.NetworkList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Network) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListPeeringRoutesNetworksRequest,
+ dict,
+ ],
+)
+def test_list_peering_routes_rest(request_type):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ExchangedPeeringRoutesList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ExchangedPeeringRoutesList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list_peering_routes(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPeeringRoutesPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_peering_routes_rest_required_fields(
+ request_type=compute.ListPeeringRoutesNetworksRequest,
+):
+ transport_class = transports.NetworksRestTransport
+
+ request_init = {}
+ request_init["network"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_peering_routes._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["network"] = "network_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_peering_routes._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "direction",
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "peering_name",
+ "region",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "network" in jsonified_request
+ assert jsonified_request["network"] == "network_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ExchangedPeeringRoutesList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ExchangedPeeringRoutesList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list_peering_routes(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_peering_routes_rest_unset_required_fields():
+ transport = transports.NetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list_peering_routes._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "direction",
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "peeringName",
+ "region",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "network",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_peering_routes_rest_interceptors(null_interceptor):
+ transport = transports.NetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
+ )
+ client = NetworksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworksRestInterceptor, "post_list_peering_routes"
+ ) as post, mock.patch.object(
+ transports.NetworksRestInterceptor, "pre_list_peering_routes"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.ExchangedPeeringRoutesList.to_json(
+ compute.ExchangedPeeringRoutesList()
+ )
+
+ request = compute.ListPeeringRoutesNetworksRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.ExchangedPeeringRoutesList
+
+ client.list_peering_routes(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_peering_routes_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListPeeringRoutesNetworksRequest
+):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list_peering_routes(request)
+
+
+def test_list_peering_routes_rest_flattened():
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ExchangedPeeringRoutesList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "network": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ network="network_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ExchangedPeeringRoutesList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list_peering_routes(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/networks/{network}/listPeeringRoutes"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_peering_routes_rest_flattened_error(transport: str = "rest"):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list_peering_routes(
+ compute.ListPeeringRoutesNetworksRequest(),
+ project="project_value",
+ network="network_value",
+ )
+
+
+def test_list_peering_routes_rest_pager(transport: str = "rest"):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.ExchangedPeeringRoutesList(
+ items=[
+ compute.ExchangedPeeringRoute(),
+ compute.ExchangedPeeringRoute(),
+ compute.ExchangedPeeringRoute(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.ExchangedPeeringRoutesList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.ExchangedPeeringRoutesList(
+ items=[
+ compute.ExchangedPeeringRoute(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.ExchangedPeeringRoutesList(
+ items=[
+ compute.ExchangedPeeringRoute(),
+ compute.ExchangedPeeringRoute(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.ExchangedPeeringRoutesList.to_json(x) for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "network": "sample2"}
+
+ pager = client.list_peering_routes(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.ExchangedPeeringRoute) for i in results)
+
+ pages = list(client.list_peering_routes(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchNetworkRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network": "sample2"}
+ request_init["network_resource"] = {
+ "I_pv4_range": "I_pv4_range_value",
+ "auto_create_subnetworks": True,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable_ula_internal_ipv6": True,
+ "gateway_i_pv4": "gateway_i_pv4_value",
+ "id": 205,
+ "internal_ipv6_range": "internal_ipv6_range_value",
+ "kind": "kind_value",
+ "mtu": 342,
+ "name": "name_value",
+ "network_firewall_policy_enforcement_order": "network_firewall_policy_enforcement_order_value",
+ "peerings": [
+ {
+ "auto_create_routes": True,
+ "exchange_subnet_routes": True,
+ "export_custom_routes": True,
+ "export_subnet_routes_with_public_ip": True,
+ "import_custom_routes": True,
+ "import_subnet_routes_with_public_ip": True,
+ "name": "name_value",
+ "network": "network_value",
+ "peer_mtu": 865,
+ "state": "state_value",
+ "state_details": "state_details_value",
+ }
+ ],
+ "routing_config": {"routing_mode": "routing_mode_value"},
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "subnetworks": ["subnetworks_value_1", "subnetworks_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchNetworkRequest):
+ transport_class = transports.NetworksRestTransport
+
+ request_init = {}
+ request_init["network"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["network"] = "network_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "network" in jsonified_request
+ assert jsonified_request["network"] == "network_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.NetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "network",
+ "networkResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.NetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
+ )
+ client = NetworksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworksRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.NetworksRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchNetworkRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchNetworkRequest
+):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network": "sample2"}
+ request_init["network_resource"] = {
+ "I_pv4_range": "I_pv4_range_value",
+ "auto_create_subnetworks": True,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable_ula_internal_ipv6": True,
+ "gateway_i_pv4": "gateway_i_pv4_value",
+ "id": 205,
+ "internal_ipv6_range": "internal_ipv6_range_value",
+ "kind": "kind_value",
+ "mtu": 342,
+ "name": "name_value",
+ "network_firewall_policy_enforcement_order": "network_firewall_policy_enforcement_order_value",
+ "peerings": [
+ {
+ "auto_create_routes": True,
+ "exchange_subnet_routes": True,
+ "export_custom_routes": True,
+ "export_subnet_routes_with_public_ip": True,
+ "import_custom_routes": True,
+ "import_subnet_routes_with_public_ip": True,
+ "name": "name_value",
+ "network": "network_value",
+ "peer_mtu": 865,
+ "state": "state_value",
+ "state_details": "state_details_value",
+ }
+ ],
+ "routing_config": {"routing_mode": "routing_mode_value"},
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "subnetworks": ["subnetworks_value_1", "subnetworks_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "network": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ network="network_value",
+ network_resource=compute.Network(I_pv4_range="I_pv4_range_value"),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/networks/{network}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchNetworkRequest(),
+ project="project_value",
+ network="network_value",
+ network_resource=compute.Network(I_pv4_range="I_pv4_range_value"),
+ )
+
+
+def test_patch_rest_error():
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchNetworkRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network": "sample2"}
+ request_init["network_resource"] = {
+ "I_pv4_range": "I_pv4_range_value",
+ "auto_create_subnetworks": True,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable_ula_internal_ipv6": True,
+ "gateway_i_pv4": "gateway_i_pv4_value",
+ "id": 205,
+ "internal_ipv6_range": "internal_ipv6_range_value",
+ "kind": "kind_value",
+ "mtu": 342,
+ "name": "name_value",
+ "network_firewall_policy_enforcement_order": "network_firewall_policy_enforcement_order_value",
+ "peerings": [
+ {
+ "auto_create_routes": True,
+ "exchange_subnet_routes": True,
+ "export_custom_routes": True,
+ "export_subnet_routes_with_public_ip": True,
+ "import_custom_routes": True,
+ "import_subnet_routes_with_public_ip": True,
+ "name": "name_value",
+ "network": "network_value",
+ "peer_mtu": 865,
+ "state": "state_value",
+ "state_details": "state_details_value",
+ }
+ ],
+ "routing_config": {"routing_mode": "routing_mode_value"},
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "subnetworks": ["subnetworks_value_1", "subnetworks_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(request_type=compute.PatchNetworkRequest):
+ transport_class = transports.NetworksRestTransport
+
+ request_init = {}
+ request_init["network"] = ""
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["network"] = "network_value"
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "network" in jsonified_request
+ assert jsonified_request["network"] == "network_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_unary_rest_unset_required_fields():
+ transport = transports.NetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "network",
+ "networkResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_unary_rest_interceptors(null_interceptor):
+ transport = transports.NetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
+ )
+ client = NetworksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NetworksRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.NetworksRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchNetworkRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchNetworkRequest
+):
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "network": "sample2"}
+ request_init["network_resource"] = {
+ "I_pv4_range": "I_pv4_range_value",
+ "auto_create_subnetworks": True,
+ "creation_timestamp": "creation_timestamp_value",
"description": "description_value",
"enable_ula_internal_ipv6": True,
"gateway_i_pv4": "gateway_i_pv4_value",
@@ -2044,10 +4436,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.patch_unary(request)
-def test_insert_unary_rest_flattened():
+def test_patch_unary_rest_flattened():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2059,11 +4451,12 @@ def test_insert_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "network": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ network="network_value",
network_resource=compute.Network(I_pv4_range="I_pv4_range_value"),
)
mock_args.update(sample_request)
@@ -2076,19 +4469,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.patch_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/networks" % client.transport._host,
+ "%s/compute/v1/projects/{project}/global/networks/{network}"
+ % client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2097,14 +4491,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertNetworkRequest(),
+ client.patch_unary(
+ compute.PatchNetworkRequest(),
project="project_value",
+ network="network_value",
network_resource=compute.Network(I_pv4_range="I_pv4_range_value"),
)
-def test_insert_unary_rest_error():
+def test_patch_unary_rest_error():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2113,50 +4508,90 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListNetworksRequest,
+ compute.RemovePeeringNetworkRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_remove_peering_rest(request_type):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "network": "sample2"}
+ request_init["networks_remove_peering_request_resource"] = {"name": "name_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NetworkList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworkList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.remove_peering(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(request_type=compute.ListNetworksRequest):
+def test_remove_peering_rest_required_fields(
+ request_type=compute.RemovePeeringNetworkRequest,
+):
transport_class = transports.NetworksRestTransport
request_init = {}
+ request_init["network"] = ""
request_init["project"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -2169,29 +4604,24 @@ def test_list_rest_required_fields(request_type=compute.ListNetworksRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).remove_peering._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["network"] = "network_value"
jsonified_request["project"] = "project_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).remove_peering._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "network" in jsonified_request
+ assert jsonified_request["network"] == "network_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
@@ -2202,7 +4632,7 @@ def test_list_rest_required_fields(request_type=compute.ListNetworksRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.NetworkList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2213,46 +4643,45 @@ def test_list_rest_required_fields(request_type=compute.ListNetworksRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworkList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.remove_peering(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_remove_peering_rest_unset_required_fields():
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.remove_peering._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "network",
+ "networksRemovePeeringRequestResource",
+ "project",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_remove_peering_rest_interceptors(null_interceptor):
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
@@ -2263,9 +4692,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworksRestInterceptor, "post_list"
+ transports.NetworksRestInterceptor, "post_remove_peering"
) as post, mock.patch.object(
- transports.NetworksRestInterceptor, "pre_list"
+ transports.NetworksRestInterceptor, "pre_remove_peering"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2280,17 +4709,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.NetworkList.to_json(compute.NetworkList())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListNetworksRequest()
+ request = compute.RemovePeeringNetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.NetworkList
+ post.return_value = compute.Operation
- client.list(
+ client.remove_peering(
request,
metadata=[
("key", "val"),
@@ -2302,8 +4731,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListNetworksRequest
+def test_remove_peering_rest_bad_request(
+ transport: str = "rest", request_type=compute.RemovePeeringNetworkRequest
):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2311,7 +4740,8 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "network": "sample2"}
+ request_init["networks_remove_peering_request_resource"] = {"name": "name_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2323,10 +4753,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.remove_peering(request)
-def test_list_rest_flattened():
+def test_remove_peering_rest_flattened():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2335,38 +4765,43 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NetworkList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "network": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ network="network_value",
+ networks_remove_peering_request_resource=compute.NetworksRemovePeeringRequest(
+ name="name_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworkList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.remove_peering(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/networks" % client.transport._host,
+ "%s/compute/v1/projects/{project}/global/networks/{network}/removePeering"
+ % client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_remove_peering_rest_flattened_error(transport: str = "rest"):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2375,81 +4810,30 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListNetworksRequest(),
- project="project_value",
- )
-
-
-def test_list_rest_pager(transport: str = "rest"):
- client = NetworksClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
- )
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.NetworkList(
- items=[
- compute.Network(),
- compute.Network(),
- compute.Network(),
- ],
- next_page_token="abc",
- ),
- compute.NetworkList(
- items=[],
- next_page_token="def",
- ),
- compute.NetworkList(
- items=[
- compute.Network(),
- ],
- next_page_token="ghi",
- ),
- compute.NetworkList(
- items=[
- compute.Network(),
- compute.Network(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.NetworkList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list(request=sample_request)
+ client.remove_peering(
+ compute.RemovePeeringNetworkRequest(),
+ project="project_value",
+ network="network_value",
+ networks_remove_peering_request_resource=compute.NetworksRemovePeeringRequest(
+ name="name_value"
+ ),
+ )
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Network) for i in results)
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
+def test_remove_peering_rest_error():
+ client = NetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
@pytest.mark.parametrize(
"request_type",
[
- compute.ListPeeringRoutesNetworksRequest,
+ compute.RemovePeeringNetworkRequest,
dict,
],
)
-def test_list_peering_routes_rest(request_type):
+def test_remove_peering_unary_rest(request_type):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2457,36 +4841,51 @@ def test_list_peering_routes_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "network": "sample2"}
+ request_init["networks_remove_peering_request_resource"] = {"name": "name_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ExchangedPeeringRoutesList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ExchangedPeeringRoutesList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_peering_routes(request)
+ response = client.remove_peering_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPeeringRoutesPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_list_peering_routes_rest_required_fields(
- request_type=compute.ListPeeringRoutesNetworksRequest,
+def test_remove_peering_unary_rest_required_fields(
+ request_type=compute.RemovePeeringNetworkRequest,
):
transport_class = transports.NetworksRestTransport
@@ -2504,7 +4903,7 @@ def test_list_peering_routes_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_peering_routes._get_unset_required_fields(jsonified_request)
+ ).remove_peering._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2514,20 +4913,9 @@ def test_list_peering_routes_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_peering_routes._get_unset_required_fields(jsonified_request)
+ ).remove_peering._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "direction",
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "peering_name",
- "region",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2543,7 +4931,7 @@ def test_list_peering_routes_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.ExchangedPeeringRoutesList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2554,46 +4942,37 @@ def test_list_peering_routes_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ExchangedPeeringRoutesList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_peering_routes(request)
+ response = client.remove_peering_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_peering_routes_rest_unset_required_fields():
+def test_remove_peering_unary_rest_unset_required_fields():
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list_peering_routes._get_unset_required_fields({})
+ unset_fields = transport.remove_peering._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "direction",
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "peeringName",
- "region",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
"network",
+ "networksRemovePeeringRequestResource",
"project",
)
)
@@ -2601,7 +4980,7 @@ def test_list_peering_routes_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_peering_routes_rest_interceptors(null_interceptor):
+def test_remove_peering_unary_rest_interceptors(null_interceptor):
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
@@ -2612,9 +4991,9 @@ def test_list_peering_routes_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworksRestInterceptor, "post_list_peering_routes"
+ transports.NetworksRestInterceptor, "post_remove_peering"
) as post, mock.patch.object(
- transports.NetworksRestInterceptor, "pre_list_peering_routes"
+ transports.NetworksRestInterceptor, "pre_remove_peering"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2629,19 +5008,17 @@ def test_list_peering_routes_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.ExchangedPeeringRoutesList.to_json(
- compute.ExchangedPeeringRoutesList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListPeeringRoutesNetworksRequest()
+ request = compute.RemovePeeringNetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.ExchangedPeeringRoutesList
+ post.return_value = compute.Operation
- client.list_peering_routes(
+ client.remove_peering_unary(
request,
metadata=[
("key", "val"),
@@ -2653,8 +5030,8 @@ def test_list_peering_routes_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_peering_routes_rest_bad_request(
- transport: str = "rest", request_type=compute.ListPeeringRoutesNetworksRequest
+def test_remove_peering_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.RemovePeeringNetworkRequest
):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2663,6 +5040,7 @@ def test_list_peering_routes_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "network": "sample2"}
+ request_init["networks_remove_peering_request_resource"] = {"name": "name_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2674,10 +5052,10 @@ def test_list_peering_routes_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list_peering_routes(request)
+ client.remove_peering_unary(request)
-def test_list_peering_routes_rest_flattened():
+def test_remove_peering_unary_rest_flattened():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2686,7 +5064,7 @@ def test_list_peering_routes_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ExchangedPeeringRoutesList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "network": "sample2"}
@@ -2695,31 +5073,34 @@ def test_list_peering_routes_rest_flattened():
mock_args = dict(
project="project_value",
network="network_value",
+ networks_remove_peering_request_resource=compute.NetworksRemovePeeringRequest(
+ name="name_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ExchangedPeeringRoutesList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list_peering_routes(**mock_args)
+ client.remove_peering_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/networks/{network}/listPeeringRoutes"
+ "%s/compute/v1/projects/{project}/global/networks/{network}/removePeering"
% client.transport._host,
args[1],
)
-def test_list_peering_routes_rest_flattened_error(transport: str = "rest"):
+def test_remove_peering_unary_rest_flattened_error(transport: str = "rest"):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2728,84 +5109,30 @@ def test_list_peering_routes_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list_peering_routes(
- compute.ListPeeringRoutesNetworksRequest(),
+ client.remove_peering_unary(
+ compute.RemovePeeringNetworkRequest(),
project="project_value",
network="network_value",
+ networks_remove_peering_request_resource=compute.NetworksRemovePeeringRequest(
+ name="name_value"
+ ),
)
-def test_list_peering_routes_rest_pager(transport: str = "rest"):
+def test_remove_peering_unary_rest_error():
client = NetworksClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.ExchangedPeeringRoutesList(
- items=[
- compute.ExchangedPeeringRoute(),
- compute.ExchangedPeeringRoute(),
- compute.ExchangedPeeringRoute(),
- ],
- next_page_token="abc",
- ),
- compute.ExchangedPeeringRoutesList(
- items=[],
- next_page_token="def",
- ),
- compute.ExchangedPeeringRoutesList(
- items=[
- compute.ExchangedPeeringRoute(),
- ],
- next_page_token="ghi",
- ),
- compute.ExchangedPeeringRoutesList(
- items=[
- compute.ExchangedPeeringRoute(),
- compute.ExchangedPeeringRoute(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(
- compute.ExchangedPeeringRoutesList.to_json(x) for x in response
- )
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "network": "sample2"}
-
- pager = client.list_peering_routes(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.ExchangedPeeringRoute) for i in results)
-
- pages = list(client.list_peering_routes(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchNetworkRequest,
+ compute.SwitchToCustomModeNetworkRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_switch_to_custom_mode_rest(request_type):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2813,39 +5140,6 @@ def test_patch_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "network": "sample2"}
- request_init["network_resource"] = {
- "I_pv4_range": "I_pv4_range_value",
- "auto_create_subnetworks": True,
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "enable_ula_internal_ipv6": True,
- "gateway_i_pv4": "gateway_i_pv4_value",
- "id": 205,
- "internal_ipv6_range": "internal_ipv6_range_value",
- "kind": "kind_value",
- "mtu": 342,
- "name": "name_value",
- "network_firewall_policy_enforcement_order": "network_firewall_policy_enforcement_order_value",
- "peerings": [
- {
- "auto_create_routes": True,
- "exchange_subnet_routes": True,
- "export_custom_routes": True,
- "export_subnet_routes_with_public_ip": True,
- "import_custom_routes": True,
- "import_subnet_routes_with_public_ip": True,
- "name": "name_value",
- "network": "network_value",
- "peer_mtu": 865,
- "state": "state_value",
- "state_details": "state_details_value",
- }
- ],
- "routing_config": {"routing_mode": "routing_mode_value"},
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "subnetworks": ["subnetworks_value_1", "subnetworks_value_2"],
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -2882,10 +5176,10 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.switch_to_custom_mode(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2910,7 +5204,9 @@ def test_patch_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(request_type=compute.PatchNetworkRequest):
+def test_switch_to_custom_mode_rest_required_fields(
+ request_type=compute.SwitchToCustomModeNetworkRequest,
+):
transport_class = transports.NetworksRestTransport
request_init = {}
@@ -2927,7 +5223,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchNetworkReque
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).switch_to_custom_mode._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2937,7 +5233,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchNetworkReque
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).switch_to_custom_mode._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -2966,10 +5262,9 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchNetworkReque
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -2978,25 +5273,24 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchNetworkReque
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.switch_to_custom_mode(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_switch_to_custom_mode_rest_unset_required_fields():
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.switch_to_custom_mode._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"network",
- "networkResource",
"project",
)
)
@@ -3004,7 +5298,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_switch_to_custom_mode_rest_interceptors(null_interceptor):
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
@@ -3015,9 +5309,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworksRestInterceptor, "post_patch"
+ transports.NetworksRestInterceptor, "post_switch_to_custom_mode"
) as post, mock.patch.object(
- transports.NetworksRestInterceptor, "pre_patch"
+ transports.NetworksRestInterceptor, "pre_switch_to_custom_mode"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3034,7 +5328,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchNetworkRequest()
+ request = compute.SwitchToCustomModeNetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3042,7 +5336,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.switch_to_custom_mode(
request,
metadata=[
("key", "val"),
@@ -3054,8 +5348,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchNetworkRequest
+def test_switch_to_custom_mode_rest_bad_request(
+ transport: str = "rest", request_type=compute.SwitchToCustomModeNetworkRequest
):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3064,39 +5358,6 @@ def test_patch_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "network": "sample2"}
- request_init["network_resource"] = {
- "I_pv4_range": "I_pv4_range_value",
- "auto_create_subnetworks": True,
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "enable_ula_internal_ipv6": True,
- "gateway_i_pv4": "gateway_i_pv4_value",
- "id": 205,
- "internal_ipv6_range": "internal_ipv6_range_value",
- "kind": "kind_value",
- "mtu": 342,
- "name": "name_value",
- "network_firewall_policy_enforcement_order": "network_firewall_policy_enforcement_order_value",
- "peerings": [
- {
- "auto_create_routes": True,
- "exchange_subnet_routes": True,
- "export_custom_routes": True,
- "export_subnet_routes_with_public_ip": True,
- "import_custom_routes": True,
- "import_subnet_routes_with_public_ip": True,
- "name": "name_value",
- "network": "network_value",
- "peer_mtu": 865,
- "state": "state_value",
- "state_details": "state_details_value",
- }
- ],
- "routing_config": {"routing_mode": "routing_mode_value"},
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "subnetworks": ["subnetworks_value_1", "subnetworks_value_2"],
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3108,10 +5369,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.switch_to_custom_mode(request)
-def test_patch_unary_rest_flattened():
+def test_switch_to_custom_mode_rest_flattened():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3129,7 +5390,6 @@ def test_patch_unary_rest_flattened():
mock_args = dict(
project="project_value",
network="network_value",
- network_resource=compute.Network(I_pv4_range="I_pv4_range_value"),
)
mock_args.update(sample_request)
@@ -3141,20 +5401,20 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.switch_to_custom_mode(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/networks/{network}"
+ "%s/compute/v1/projects/{project}/global/networks/{network}/switchToCustomMode"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_switch_to_custom_mode_rest_flattened_error(transport: str = "rest"):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3163,15 +5423,14 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchNetworkRequest(),
+ client.switch_to_custom_mode(
+ compute.SwitchToCustomModeNetworkRequest(),
project="project_value",
network="network_value",
- network_resource=compute.Network(I_pv4_range="I_pv4_range_value"),
)
-def test_patch_unary_rest_error():
+def test_switch_to_custom_mode_rest_error():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3180,11 +5439,11 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.RemovePeeringNetworkRequest,
+ compute.SwitchToCustomModeNetworkRequest,
dict,
],
)
-def test_remove_peering_unary_rest(request_type):
+def test_switch_to_custom_mode_unary_rest(request_type):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3192,7 +5451,6 @@ def test_remove_peering_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "network": "sample2"}
- request_init["networks_remove_peering_request_resource"] = {"name": "name_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -3229,36 +5487,14 @@ def test_remove_peering_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_peering_unary(request)
+ response = client.switch_to_custom_mode_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_remove_peering_unary_rest_required_fields(
- request_type=compute.RemovePeeringNetworkRequest,
+def test_switch_to_custom_mode_unary_rest_required_fields(
+ request_type=compute.SwitchToCustomModeNetworkRequest,
):
transport_class = transports.NetworksRestTransport
@@ -3276,7 +5512,7 @@ def test_remove_peering_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_peering._get_unset_required_fields(jsonified_request)
+ ).switch_to_custom_mode._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3286,7 +5522,7 @@ def test_remove_peering_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_peering._get_unset_required_fields(jsonified_request)
+ ).switch_to_custom_mode._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -3318,7 +5554,6 @@ def test_remove_peering_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -3327,25 +5562,24 @@ def test_remove_peering_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_peering_unary(request)
+ response = client.switch_to_custom_mode_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_remove_peering_unary_rest_unset_required_fields():
+def test_switch_to_custom_mode_unary_rest_unset_required_fields():
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.remove_peering._get_unset_required_fields({})
+ unset_fields = transport.switch_to_custom_mode._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"network",
- "networksRemovePeeringRequestResource",
"project",
)
)
@@ -3353,7 +5587,7 @@ def test_remove_peering_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_remove_peering_unary_rest_interceptors(null_interceptor):
+def test_switch_to_custom_mode_unary_rest_interceptors(null_interceptor):
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
@@ -3364,9 +5598,9 @@ def test_remove_peering_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworksRestInterceptor, "post_remove_peering"
+ transports.NetworksRestInterceptor, "post_switch_to_custom_mode"
) as post, mock.patch.object(
- transports.NetworksRestInterceptor, "pre_remove_peering"
+ transports.NetworksRestInterceptor, "pre_switch_to_custom_mode"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3383,7 +5617,7 @@ def test_remove_peering_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.RemovePeeringNetworkRequest()
+ request = compute.SwitchToCustomModeNetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3391,7 +5625,7 @@ def test_remove_peering_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.remove_peering_unary(
+ client.switch_to_custom_mode_unary(
request,
metadata=[
("key", "val"),
@@ -3403,8 +5637,8 @@ def test_remove_peering_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_remove_peering_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.RemovePeeringNetworkRequest
+def test_switch_to_custom_mode_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SwitchToCustomModeNetworkRequest
):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3413,7 +5647,6 @@ def test_remove_peering_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "network": "sample2"}
- request_init["networks_remove_peering_request_resource"] = {"name": "name_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3425,10 +5658,10 @@ def test_remove_peering_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.remove_peering_unary(request)
+ client.switch_to_custom_mode_unary(request)
-def test_remove_peering_unary_rest_flattened():
+def test_switch_to_custom_mode_unary_rest_flattened():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3446,9 +5679,6 @@ def test_remove_peering_unary_rest_flattened():
mock_args = dict(
project="project_value",
network="network_value",
- networks_remove_peering_request_resource=compute.NetworksRemovePeeringRequest(
- name="name_value"
- ),
)
mock_args.update(sample_request)
@@ -3460,20 +5690,20 @@ def test_remove_peering_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.remove_peering_unary(**mock_args)
+ client.switch_to_custom_mode_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/networks/{network}/removePeering"
+ "%s/compute/v1/projects/{project}/global/networks/{network}/switchToCustomMode"
% client.transport._host,
args[1],
)
-def test_remove_peering_unary_rest_flattened_error(transport: str = "rest"):
+def test_switch_to_custom_mode_unary_rest_flattened_error(transport: str = "rest"):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3482,17 +5712,14 @@ def test_remove_peering_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.remove_peering_unary(
- compute.RemovePeeringNetworkRequest(),
+ client.switch_to_custom_mode_unary(
+ compute.SwitchToCustomModeNetworkRequest(),
project="project_value",
network="network_value",
- networks_remove_peering_request_resource=compute.NetworksRemovePeeringRequest(
- name="name_value"
- ),
)
-def test_remove_peering_unary_rest_error():
+def test_switch_to_custom_mode_unary_rest_error():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3501,11 +5728,11 @@ def test_remove_peering_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SwitchToCustomModeNetworkRequest,
+ compute.UpdatePeeringNetworkRequest,
dict,
],
)
-def test_switch_to_custom_mode_unary_rest(request_type):
+def test_update_peering_rest(request_type):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3513,6 +5740,21 @@ def test_switch_to_custom_mode_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "network": "sample2"}
+ request_init["networks_update_peering_request_resource"] = {
+ "network_peering": {
+ "auto_create_routes": True,
+ "exchange_subnet_routes": True,
+ "export_custom_routes": True,
+ "export_subnet_routes_with_public_ip": True,
+ "import_custom_routes": True,
+ "import_subnet_routes_with_public_ip": True,
+ "name": "name_value",
+ "network": "network_value",
+ "peer_mtu": 865,
+ "state": "state_value",
+ "state_details": "state_details_value",
+ }
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -3549,10 +5791,10 @@ def test_switch_to_custom_mode_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.switch_to_custom_mode_unary(request)
+ response = client.update_peering(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -3577,8 +5819,8 @@ def test_switch_to_custom_mode_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_switch_to_custom_mode_unary_rest_required_fields(
- request_type=compute.SwitchToCustomModeNetworkRequest,
+def test_update_peering_rest_required_fields(
+ request_type=compute.UpdatePeeringNetworkRequest,
):
transport_class = transports.NetworksRestTransport
@@ -3596,7 +5838,7 @@ def test_switch_to_custom_mode_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).switch_to_custom_mode._get_unset_required_fields(jsonified_request)
+ ).update_peering._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3606,7 +5848,7 @@ def test_switch_to_custom_mode_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).switch_to_custom_mode._get_unset_required_fields(jsonified_request)
+ ).update_peering._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -3635,9 +5877,10 @@ def test_switch_to_custom_mode_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -3646,24 +5889,25 @@ def test_switch_to_custom_mode_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.switch_to_custom_mode_unary(request)
+ response = client.update_peering(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_switch_to_custom_mode_unary_rest_unset_required_fields():
+def test_update_peering_rest_unset_required_fields():
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.switch_to_custom_mode._get_unset_required_fields({})
+ unset_fields = transport.update_peering._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"network",
+ "networksUpdatePeeringRequestResource",
"project",
)
)
@@ -3671,7 +5915,7 @@ def test_switch_to_custom_mode_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_switch_to_custom_mode_unary_rest_interceptors(null_interceptor):
+def test_update_peering_rest_interceptors(null_interceptor):
transport = transports.NetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.NetworksRestInterceptor(),
@@ -3682,9 +5926,9 @@ def test_switch_to_custom_mode_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NetworksRestInterceptor, "post_switch_to_custom_mode"
+ transports.NetworksRestInterceptor, "post_update_peering"
) as post, mock.patch.object(
- transports.NetworksRestInterceptor, "pre_switch_to_custom_mode"
+ transports.NetworksRestInterceptor, "pre_update_peering"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3701,7 +5945,7 @@ def test_switch_to_custom_mode_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SwitchToCustomModeNetworkRequest()
+ request = compute.UpdatePeeringNetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3709,7 +5953,7 @@ def test_switch_to_custom_mode_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.switch_to_custom_mode_unary(
+ client.update_peering(
request,
metadata=[
("key", "val"),
@@ -3721,8 +5965,8 @@ def test_switch_to_custom_mode_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_switch_to_custom_mode_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SwitchToCustomModeNetworkRequest
+def test_update_peering_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdatePeeringNetworkRequest
):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3731,6 +5975,21 @@ def test_switch_to_custom_mode_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "network": "sample2"}
+ request_init["networks_update_peering_request_resource"] = {
+ "network_peering": {
+ "auto_create_routes": True,
+ "exchange_subnet_routes": True,
+ "export_custom_routes": True,
+ "export_subnet_routes_with_public_ip": True,
+ "import_custom_routes": True,
+ "import_subnet_routes_with_public_ip": True,
+ "name": "name_value",
+ "network": "network_value",
+ "peer_mtu": 865,
+ "state": "state_value",
+ "state_details": "state_details_value",
+ }
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3742,10 +6001,10 @@ def test_switch_to_custom_mode_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.switch_to_custom_mode_unary(request)
+ client.update_peering(request)
-def test_switch_to_custom_mode_unary_rest_flattened():
+def test_update_peering_rest_flattened():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3763,6 +6022,9 @@ def test_switch_to_custom_mode_unary_rest_flattened():
mock_args = dict(
project="project_value",
network="network_value",
+ networks_update_peering_request_resource=compute.NetworksUpdatePeeringRequest(
+ network_peering=compute.NetworkPeering(auto_create_routes=True)
+ ),
)
mock_args.update(sample_request)
@@ -3774,20 +6036,20 @@ def test_switch_to_custom_mode_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.switch_to_custom_mode_unary(**mock_args)
+ client.update_peering(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/networks/{network}/switchToCustomMode"
+ "%s/compute/v1/projects/{project}/global/networks/{network}/updatePeering"
% client.transport._host,
args[1],
)
-def test_switch_to_custom_mode_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_peering_rest_flattened_error(transport: str = "rest"):
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3796,14 +6058,17 @@ def test_switch_to_custom_mode_unary_rest_flattened_error(transport: str = "rest
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.switch_to_custom_mode_unary(
- compute.SwitchToCustomModeNetworkRequest(),
+ client.update_peering(
+ compute.UpdatePeeringNetworkRequest(),
project="project_value",
network="network_value",
+ networks_update_peering_request_resource=compute.NetworksUpdatePeeringRequest(
+ network_peering=compute.NetworkPeering(auto_create_routes=True)
+ ),
)
-def test_switch_to_custom_mode_unary_rest_error():
+def test_update_peering_rest_error():
client = NetworksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3879,28 +6144,6 @@ def test_update_peering_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_peering_unary_rest_required_fields(
@@ -4233,6 +6476,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = NetworksClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_networks_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -4274,6 +6530,14 @@ def test_networks_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_networks_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_node_groups.py b/tests/unit/gapic/compute_v1/test_node_groups.py
index 6d1be053f..2a017d2a6 100644
--- a/tests/unit/gapic/compute_v1/test_node_groups.py
+++ b/tests/unit/gapic/compute_v1/test_node_groups.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -516,7 +518,7 @@ def test_node_groups_client_client_options_credentials_file(
dict,
],
)
-def test_add_nodes_unary_rest(request_type):
+def test_add_nodes_rest(request_type):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -563,10 +565,10 @@ def test_add_nodes_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_nodes_unary(request)
+ response = client.add_nodes(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -591,9 +593,7 @@ def test_add_nodes_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_add_nodes_unary_rest_required_fields(
- request_type=compute.AddNodesNodeGroupRequest,
-):
+def test_add_nodes_rest_required_fields(request_type=compute.AddNodesNodeGroupRequest):
transport_class = transports.NodeGroupsRestTransport
request_init = {}
@@ -665,14 +665,14 @@ def test_add_nodes_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_nodes_unary(request)
+ response = client.add_nodes(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_add_nodes_unary_rest_unset_required_fields():
+def test_add_nodes_rest_unset_required_fields():
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -692,7 +692,7 @@ def test_add_nodes_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_nodes_unary_rest_interceptors(null_interceptor):
+def test_add_nodes_rest_interceptors(null_interceptor):
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -732,7 +732,7 @@ def test_add_nodes_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_nodes_unary(
+ client.add_nodes(
request,
metadata=[
("key", "val"),
@@ -744,7 +744,7 @@ def test_add_nodes_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_nodes_unary_rest_bad_request(
+def test_add_nodes_rest_bad_request(
transport: str = "rest", request_type=compute.AddNodesNodeGroupRequest
):
client = NodeGroupsClient(
@@ -768,10 +768,10 @@ def test_add_nodes_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_nodes_unary(request)
+ client.add_nodes(request)
-def test_add_nodes_unary_rest_flattened():
+def test_add_nodes_rest_flattened():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -808,7 +808,7 @@ def test_add_nodes_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_nodes_unary(**mock_args)
+ client.add_nodes(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -821,7 +821,7 @@ def test_add_nodes_unary_rest_flattened():
)
-def test_add_nodes_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_nodes_rest_flattened_error(transport: str = "rest"):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -830,7 +830,7 @@ def test_add_nodes_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_nodes_unary(
+ client.add_nodes(
compute.AddNodesNodeGroupRequest(),
project="project_value",
zone="zone_value",
@@ -841,7 +841,7 @@ def test_add_nodes_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_add_nodes_unary_rest_error():
+def test_add_nodes_rest_error():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -850,55 +850,72 @@ def test_add_nodes_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.AggregatedListNodeGroupsRequest,
+ compute.AddNodesNodeGroupRequest,
dict,
],
)
-def test_aggregated_list_rest(request_type):
+def test_add_nodes_unary_rest(request_type):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init["node_groups_add_nodes_request_resource"] = {
+ "additional_node_count": 2214
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NodeGroupAggregatedList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- unreachables=["unreachables_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NodeGroupAggregatedList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.aggregated_list(request)
+ response = client.add_nodes_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.AggregatedListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
- assert response.unreachables == ["unreachables_value"]
+ assert isinstance(response, compute.Operation)
-def test_aggregated_list_rest_required_fields(
- request_type=compute.AggregatedListNodeGroupsRequest,
+def test_add_nodes_unary_rest_required_fields(
+ request_type=compute.AddNodesNodeGroupRequest,
):
transport_class = transports.NodeGroupsRestTransport
request_init = {}
+ request_init["node_group"] = ""
request_init["project"] = ""
+ request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -910,32 +927,29 @@ def test_aggregated_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).aggregated_list._get_unset_required_fields(jsonified_request)
+ ).add_nodes._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["nodeGroup"] = "node_group_value"
jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).aggregated_list._get_unset_required_fields(jsonified_request)
+ ).add_nodes._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "include_all_scopes",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "nodeGroup" in jsonified_request
+ assert jsonified_request["nodeGroup"] == "node_group_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -944,7 +958,7 @@ def test_aggregated_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.NodeGroupAggregatedList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -955,47 +969,46 @@ def test_aggregated_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NodeGroupAggregatedList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.aggregated_list(request)
+ response = client.add_nodes_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_aggregated_list_rest_unset_required_fields():
+def test_add_nodes_unary_rest_unset_required_fields():
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.aggregated_list._get_unset_required_fields({})
+ unset_fields = transport.add_nodes._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "includeAllScopes",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "nodeGroup",
+ "nodeGroupsAddNodesRequestResource",
+ "project",
+ "zone",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_aggregated_list_rest_interceptors(null_interceptor):
+def test_add_nodes_unary_rest_interceptors(null_interceptor):
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1008,9 +1021,9 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "post_aggregated_list"
+ transports.NodeGroupsRestInterceptor, "post_add_nodes"
) as post, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "pre_aggregated_list"
+ transports.NodeGroupsRestInterceptor, "pre_add_nodes"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1025,19 +1038,17 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.NodeGroupAggregatedList.to_json(
- compute.NodeGroupAggregatedList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.AggregatedListNodeGroupsRequest()
+ request = compute.AddNodesNodeGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.NodeGroupAggregatedList
+ post.return_value = compute.Operation
- client.aggregated_list(
+ client.add_nodes_unary(
request,
metadata=[
("key", "val"),
@@ -1049,8 +1060,8 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_aggregated_list_rest_bad_request(
- transport: str = "rest", request_type=compute.AggregatedListNodeGroupsRequest
+def test_add_nodes_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddNodesNodeGroupRequest
):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1058,7 +1069,10 @@ def test_aggregated_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init["node_groups_add_nodes_request_resource"] = {
+ "additional_node_count": 2214
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1070,10 +1084,10 @@ def test_aggregated_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.aggregated_list(request)
+ client.add_nodes_unary(request)
-def test_aggregated_list_rest_flattened():
+def test_add_nodes_unary_rest_flattened():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1082,39 +1096,48 @@ def test_aggregated_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NodeGroupAggregatedList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "node_group": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ zone="zone_value",
+ node_group="node_group_value",
+ node_groups_add_nodes_request_resource=compute.NodeGroupsAddNodesRequest(
+ additional_node_count=2214
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NodeGroupAggregatedList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.aggregated_list(**mock_args)
+ client.add_nodes_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/aggregated/nodeGroups"
+ "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{node_group}/addNodes"
% client.transport._host,
args[1],
)
-def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
+def test_add_nodes_unary_rest_flattened_error(transport: str = "rest"):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1123,168 +1146,75 @@ def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.aggregated_list(
- compute.AggregatedListNodeGroupsRequest(),
+ client.add_nodes_unary(
+ compute.AddNodesNodeGroupRequest(),
project="project_value",
+ zone="zone_value",
+ node_group="node_group_value",
+ node_groups_add_nodes_request_resource=compute.NodeGroupsAddNodesRequest(
+ additional_node_count=2214
+ ),
)
-def test_aggregated_list_rest_pager(transport: str = "rest"):
+def test_add_nodes_unary_rest_error():
client = NodeGroupsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.NodeGroupAggregatedList(
- items={
- "a": compute.NodeGroupsScopedList(),
- "b": compute.NodeGroupsScopedList(),
- "c": compute.NodeGroupsScopedList(),
- },
- next_page_token="abc",
- ),
- compute.NodeGroupAggregatedList(
- items={},
- next_page_token="def",
- ),
- compute.NodeGroupAggregatedList(
- items={
- "g": compute.NodeGroupsScopedList(),
- },
- next_page_token="ghi",
- ),
- compute.NodeGroupAggregatedList(
- items={
- "h": compute.NodeGroupsScopedList(),
- "i": compute.NodeGroupsScopedList(),
- },
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.NodeGroupAggregatedList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.aggregated_list(request=sample_request)
-
- assert isinstance(pager.get("a"), compute.NodeGroupsScopedList)
- assert pager.get("h") is None
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, tuple) for i in results)
- for result in results:
- assert isinstance(result, tuple)
- assert tuple(type(t) for t in result) == (str, compute.NodeGroupsScopedList)
-
- assert pager.get("a") is None
- assert isinstance(pager.get("h"), compute.NodeGroupsScopedList)
-
- pages = list(client.aggregated_list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteNodeGroupRequest,
+ compute.AggregatedListNodeGroupsRequest,
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_aggregated_list_rest(request_type):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init = {"project": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
+ return_value = compute.NodeGroupAggregatedList(
+ id="id_value",
kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
+ next_page_token="next_page_token_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ unreachables=["unreachables_value"],
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.NodeGroupAggregatedList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.aggregated_list(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert isinstance(response, pagers.AggregatedListPager)
+ assert response.id == "id_value"
assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
+ assert response.next_page_token == "next_page_token_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.unreachables == ["unreachables_value"]
-def test_delete_unary_rest_required_fields(request_type=compute.DeleteNodeGroupRequest):
+def test_aggregated_list_rest_required_fields(
+ request_type=compute.AggregatedListNodeGroupsRequest,
+):
transport_class = transports.NodeGroupsRestTransport
request_init = {}
- request_init["node_group"] = ""
request_init["project"] = ""
- request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1296,29 +1226,32 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteNodeGroupR
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).aggregated_list._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["nodeGroup"] = "node_group_value"
jsonified_request["project"] = "project_value"
- jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).aggregated_list._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "include_all_scopes",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "nodeGroup" in jsonified_request
- assert jsonified_request["nodeGroup"] == "node_group_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "zone" in jsonified_request
- assert jsonified_request["zone"] == "zone_value"
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1327,7 +1260,7 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteNodeGroupR
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.NodeGroupAggregatedList()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1338,44 +1271,47 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteNodeGroupR
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "get",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.NodeGroupAggregatedList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.aggregated_list(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_aggregated_list_rest_unset_required_fields():
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.aggregated_list._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
- & set(
+ set(
(
- "nodeGroup",
- "project",
- "zone",
+ "filter",
+ "includeAllScopes",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
)
)
+ & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_aggregated_list_rest_interceptors(null_interceptor):
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1388,9 +1324,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "post_delete"
+ transports.NodeGroupsRestInterceptor, "post_aggregated_list"
) as post, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "pre_delete"
+ transports.NodeGroupsRestInterceptor, "pre_aggregated_list"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1405,17 +1341,19 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.NodeGroupAggregatedList.to_json(
+ compute.NodeGroupAggregatedList()
+ )
- request = compute.DeleteNodeGroupRequest()
+ request = compute.AggregatedListNodeGroupsRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.NodeGroupAggregatedList
- client.delete_unary(
+ client.aggregated_list(
request,
metadata=[
("key", "val"),
@@ -1427,8 +1365,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteNodeGroupRequest
+def test_aggregated_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.AggregatedListNodeGroupsRequest
):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1436,7 +1374,7 @@ def test_delete_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init = {"project": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1448,10 +1386,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.aggregated_list(request)
-def test_delete_unary_rest_flattened():
+def test_aggregated_list_rest_flattened():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1460,45 +1398,39 @@ def test_delete_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.NodeGroupAggregatedList()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "zone": "sample2",
- "node_group": "sample3",
- }
+ sample_request = {"project": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- zone="zone_value",
- node_group="node_group_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.NodeGroupAggregatedList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.aggregated_list(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{node_group}"
+ "%s/compute/v1/projects/{project}/aggregated/nodeGroups"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1507,28 +1439,90 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteNodeGroupRequest(),
+ client.aggregated_list(
+ compute.AggregatedListNodeGroupsRequest(),
project="project_value",
- zone="zone_value",
- node_group="node_group_value",
)
-def test_delete_unary_rest_error():
+def test_aggregated_list_rest_pager(transport: str = "rest"):
client = NodeGroupsClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
)
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.NodeGroupAggregatedList(
+ items={
+ "a": compute.NodeGroupsScopedList(),
+ "b": compute.NodeGroupsScopedList(),
+ "c": compute.NodeGroupsScopedList(),
+ },
+ next_page_token="abc",
+ ),
+ compute.NodeGroupAggregatedList(
+ items={},
+ next_page_token="def",
+ ),
+ compute.NodeGroupAggregatedList(
+ items={
+ "g": compute.NodeGroupsScopedList(),
+ },
+ next_page_token="ghi",
+ ),
+ compute.NodeGroupAggregatedList(
+ items={
+ "h": compute.NodeGroupsScopedList(),
+ "i": compute.NodeGroupsScopedList(),
+ },
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.NodeGroupAggregatedList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.aggregated_list(request=sample_request)
+
+ assert isinstance(pager.get("a"), compute.NodeGroupsScopedList)
+ assert pager.get("h") is None
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, tuple) for i in results)
+ for result in results:
+ assert isinstance(result, tuple)
+ assert tuple(type(t) for t in result) == (str, compute.NodeGroupsScopedList)
+
+ assert pager.get("a") is None
+ assert isinstance(pager.get("h"), compute.NodeGroupsScopedList)
+
+ pages = list(client.aggregated_list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteNodesNodeGroupRequest,
+ compute.DeleteNodeGroupRequest,
dict,
],
)
-def test_delete_nodes_unary_rest(request_type):
+def test_delete_rest(request_type):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1536,9 +1530,6 @@ def test_delete_nodes_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
- request_init["node_groups_delete_nodes_request_resource"] = {
- "nodes": ["nodes_value_1", "nodes_value_2"]
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1575,10 +1566,10 @@ def test_delete_nodes_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_nodes_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1603,9 +1594,7 @@ def test_delete_nodes_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_nodes_unary_rest_required_fields(
- request_type=compute.DeleteNodesNodeGroupRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteNodeGroupRequest):
transport_class = transports.NodeGroupsRestTransport
request_init = {}
@@ -1623,7 +1612,7 @@ def test_delete_nodes_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_nodes._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1634,7 +1623,7 @@ def test_delete_nodes_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_nodes._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -1665,10 +1654,9 @@ def test_delete_nodes_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "delete",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1677,25 +1665,24 @@ def test_delete_nodes_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_nodes_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_nodes_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete_nodes._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"nodeGroup",
- "nodeGroupsDeleteNodesRequestResource",
"project",
"zone",
)
@@ -1704,7 +1691,7 @@ def test_delete_nodes_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_nodes_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1717,9 +1704,9 @@ def test_delete_nodes_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "post_delete_nodes"
+ transports.NodeGroupsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "pre_delete_nodes"
+ transports.NodeGroupsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1736,7 +1723,7 @@ def test_delete_nodes_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteNodesNodeGroupRequest()
+ request = compute.DeleteNodeGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1744,7 +1731,7 @@ def test_delete_nodes_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_nodes_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1756,8 +1743,8 @@ def test_delete_nodes_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_nodes_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteNodesNodeGroupRequest
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteNodeGroupRequest
):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1766,9 +1753,6 @@ def test_delete_nodes_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
- request_init["node_groups_delete_nodes_request_resource"] = {
- "nodes": ["nodes_value_1", "nodes_value_2"]
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1780,10 +1764,10 @@ def test_delete_nodes_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_nodes_unary(request)
+ client.delete(request)
-def test_delete_nodes_unary_rest_flattened():
+def test_delete_rest_flattened():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1806,9 +1790,6 @@ def test_delete_nodes_unary_rest_flattened():
project="project_value",
zone="zone_value",
node_group="node_group_value",
- node_groups_delete_nodes_request_resource=compute.NodeGroupsDeleteNodesRequest(
- nodes=["nodes_value"]
- ),
)
mock_args.update(sample_request)
@@ -1820,20 +1801,20 @@ def test_delete_nodes_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_nodes_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{node_group}/deleteNodes"
+ "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{node_group}"
% client.transport._host,
args[1],
)
-def test_delete_nodes_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1842,18 +1823,15 @@ def test_delete_nodes_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_nodes_unary(
- compute.DeleteNodesNodeGroupRequest(),
+ client.delete(
+ compute.DeleteNodeGroupRequest(),
project="project_value",
zone="zone_value",
node_group="node_group_value",
- node_groups_delete_nodes_request_resource=compute.NodeGroupsDeleteNodesRequest(
- nodes=["nodes_value"]
- ),
)
-def test_delete_nodes_unary_rest_error():
+def test_delete_rest_error():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1862,11 +1840,11 @@ def test_delete_nodes_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetNodeGroupRequest,
+ compute.DeleteNodeGroupRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1879,48 +1857,44 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NodeGroup(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- location_hint="location_hint_value",
- maintenance_policy="maintenance_policy_value",
name="name_value",
- node_template="node_template_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- size=443,
- status="status_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NodeGroup.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.NodeGroup)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.location_hint == "location_hint_value"
- assert response.maintenance_policy == "maintenance_policy_value"
- assert response.name == "name_value"
- assert response.node_template == "node_template_value"
- assert response.self_link == "self_link_value"
- assert response.size == 443
- assert response.status == "status_value"
- assert response.zone == "zone_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetNodeGroupRequest):
+def test_delete_unary_rest_required_fields(request_type=compute.DeleteNodeGroupRequest):
transport_class = transports.NodeGroupsRestTransport
request_init = {}
@@ -1938,7 +1912,7 @@ def test_get_rest_required_fields(request_type=compute.GetNodeGroupRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1949,7 +1923,9 @@ def test_get_rest_required_fields(request_type=compute.GetNodeGroupRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1967,7 +1943,7 @@ def test_get_rest_required_fields(request_type=compute.GetNodeGroupRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.NodeGroup()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1978,32 +1954,32 @@ def test_get_rest_required_fields(request_type=compute.GetNodeGroupRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NodeGroup.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"nodeGroup",
@@ -2015,7 +1991,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2028,9 +2004,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "post_get"
+ transports.NodeGroupsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "pre_get"
+ transports.NodeGroupsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2045,17 +2021,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.NodeGroup.to_json(compute.NodeGroup())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetNodeGroupRequest()
+ request = compute.DeleteNodeGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.NodeGroup
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -2067,8 +2043,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetNodeGroupRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteNodeGroupRequest
):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2088,10 +2064,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2100,7 +2076,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NodeGroup()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -2120,12 +2096,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NodeGroup.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -2138,7 +2114,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2147,15 +2123,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetNodeGroupRequest(),
+ client.delete_unary(
+ compute.DeleteNodeGroupRequest(),
project="project_value",
zone="zone_value",
node_group="node_group_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2164,52 +2140,93 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicyNodeGroupRequest,
+ compute.DeleteNodesNodeGroupRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_delete_nodes_rest(request_type):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init["node_groups_delete_nodes_request_resource"] = {
+ "nodes": ["nodes_value_1", "nodes_value_2"]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.delete_nodes(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicyNodeGroupRequest,
+def test_delete_nodes_rest_required_fields(
+ request_type=compute.DeleteNodesNodeGroupRequest,
):
transport_class = transports.NodeGroupsRestTransport
request_init = {}
+ request_init["node_group"] = ""
request_init["project"] = ""
- request_init["resource"] = ""
request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -2222,27 +2239,27 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).delete_nodes._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["nodeGroup"] = "node_group_value"
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).delete_nodes._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "nodeGroup" in jsonified_request
+ assert jsonified_request["nodeGroup"] == "node_group_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
assert "zone" in jsonified_request
assert jsonified_request["zone"] == "zone_value"
@@ -2253,7 +2270,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2264,36 +2281,38 @@ def test_get_iam_policy_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.delete_nodes(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_delete_nodes_rest_unset_required_fields():
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.delete_nodes._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
+ set(("requestId",))
& set(
(
+ "nodeGroup",
+ "nodeGroupsDeleteNodesRequestResource",
"project",
- "resource",
"zone",
)
)
@@ -2301,7 +2320,7 @@ def test_get_iam_policy_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_delete_nodes_rest_interceptors(null_interceptor):
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2314,9 +2333,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "post_get_iam_policy"
+ transports.NodeGroupsRestInterceptor, "post_delete_nodes"
) as post, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "pre_get_iam_policy"
+ transports.NodeGroupsRestInterceptor, "pre_delete_nodes"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2331,17 +2350,17 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetIamPolicyNodeGroupRequest()
+ request = compute.DeleteNodesNodeGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.get_iam_policy(
+ client.delete_nodes(
request,
metadata=[
("key", "val"),
@@ -2353,8 +2372,8 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.GetIamPolicyNodeGroupRequest
+def test_delete_nodes_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteNodesNodeGroupRequest
):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2362,7 +2381,10 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init["node_groups_delete_nodes_request_resource"] = {
+ "nodes": ["nodes_value_1", "nodes_value_2"]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2374,10 +2396,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.delete_nodes(request)
-def test_get_iam_policy_rest_flattened():
+def test_delete_nodes_rest_flattened():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2386,45 +2408,48 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
"project": "sample1",
"zone": "sample2",
- "resource": "sample3",
+ "node_group": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- resource="resource_value",
+ node_group="node_group_value",
+ node_groups_delete_nodes_request_resource=compute.NodeGroupsDeleteNodesRequest(
+ nodes=["nodes_value"]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.delete_nodes(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{resource}/getIamPolicy"
+ "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{node_group}/deleteNodes"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_delete_nodes_rest_flattened_error(transport: str = "rest"):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2433,15 +2458,18 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicyNodeGroupRequest(),
+ client.delete_nodes(
+ compute.DeleteNodesNodeGroupRequest(),
project="project_value",
zone="zone_value",
- resource="resource_value",
+ node_group="node_group_value",
+ node_groups_delete_nodes_request_resource=compute.NodeGroupsDeleteNodesRequest(
+ nodes=["nodes_value"]
+ ),
)
-def test_get_iam_policy_rest_error():
+def test_delete_nodes_rest_error():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2450,41 +2478,20 @@ def test_get_iam_policy_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertNodeGroupRequest,
+ compute.DeleteNodesNodeGroupRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_delete_nodes_unary_rest(request_type):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
- request_init["node_group_resource"] = {
- "autoscaling_policy": {
- "max_nodes": 958,
- "min_nodes": 956,
- "mode": "mode_value",
- },
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "location_hint": "location_hint_value",
- "maintenance_policy": "maintenance_policy_value",
- "maintenance_window": {
- "maintenance_duration": {"nanos": 543, "seconds": 751},
- "start_time": "start_time_value",
- },
- "name": "name_value",
- "node_template": "node_template_value",
- "self_link": "self_link_value",
- "size": 443,
- "status": "status_value",
- "zone": "zone_value",
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init["node_groups_delete_nodes_request_resource"] = {
+ "nodes": ["nodes_value_1", "nodes_value_2"]
}
request = request_type(request_init)
@@ -2522,39 +2529,19 @@ def test_insert_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_nodes_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(request_type=compute.InsertNodeGroupRequest):
+def test_delete_nodes_unary_rest_required_fields(
+ request_type=compute.DeleteNodesNodeGroupRequest,
+):
transport_class = transports.NodeGroupsRestTransport
request_init = {}
- request_init["initial_node_count"] = 0
+ request_init["node_group"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -2565,36 +2552,28 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertNodeGroupR
)
# verify fields with default values are dropped
- assert "initialNodeCount" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete_nodes._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- assert "initialNodeCount" in jsonified_request
- assert jsonified_request["initialNodeCount"] == request_init["initial_node_count"]
- jsonified_request["initialNodeCount"] = 1911
+ jsonified_request["nodeGroup"] = "node_group_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete_nodes._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "initial_node_count",
- "request_id",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "initialNodeCount" in jsonified_request
- assert jsonified_request["initialNodeCount"] == 1911
+ assert "nodeGroup" in jsonified_request
+ assert jsonified_request["nodeGroup"] == "node_group_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -2630,35 +2609,25 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertNodeGroupR
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_nodes_unary(request)
- expected_params = [
- (
- "initialNodeCount",
- 0,
- ),
- ]
+ expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_delete_nodes_unary_rest_unset_required_fields():
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.delete_nodes._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "initialNodeCount",
- "requestId",
- )
- )
+ set(("requestId",))
& set(
(
- "initialNodeCount",
- "nodeGroupResource",
+ "nodeGroup",
+ "nodeGroupsDeleteNodesRequestResource",
"project",
"zone",
)
@@ -2667,7 +2636,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_delete_nodes_unary_rest_interceptors(null_interceptor):
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2680,9 +2649,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "post_insert"
+ transports.NodeGroupsRestInterceptor, "post_delete_nodes"
) as post, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "pre_insert"
+ transports.NodeGroupsRestInterceptor, "pre_delete_nodes"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2699,7 +2668,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.InsertNodeGroupRequest()
+ request = compute.DeleteNodesNodeGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2707,7 +2676,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.insert_unary(
+ client.delete_nodes_unary(
request,
metadata=[
("key", "val"),
@@ -2719,8 +2688,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertNodeGroupRequest
+def test_delete_nodes_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteNodesNodeGroupRequest
):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2728,30 +2697,9 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
- request_init["node_group_resource"] = {
- "autoscaling_policy": {
- "max_nodes": 958,
- "min_nodes": 956,
- "mode": "mode_value",
- },
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "location_hint": "location_hint_value",
- "maintenance_policy": "maintenance_policy_value",
- "maintenance_window": {
- "maintenance_duration": {"nanos": 543, "seconds": 751},
- "start_time": "start_time_value",
- },
- "name": "name_value",
- "node_template": "node_template_value",
- "self_link": "self_link_value",
- "size": 443,
- "status": "status_value",
- "zone": "zone_value",
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init["node_groups_delete_nodes_request_resource"] = {
+ "nodes": ["nodes_value_1", "nodes_value_2"]
}
request = request_type(request_init)
@@ -2764,10 +2712,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.delete_nodes_unary(request)
-def test_insert_unary_rest_flattened():
+def test_delete_nodes_unary_rest_flattened():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2779,15 +2727,19 @@ def test_insert_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "zone": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "node_group": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- initial_node_count=1911,
- node_group_resource=compute.NodeGroup(
- autoscaling_policy=compute.NodeGroupAutoscalingPolicy(max_nodes=958)
+ node_group="node_group_value",
+ node_groups_delete_nodes_request_resource=compute.NodeGroupsDeleteNodesRequest(
+ nodes=["nodes_value"]
),
)
mock_args.update(sample_request)
@@ -2800,20 +2752,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.delete_nodes_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups"
+ "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{node_group}/deleteNodes"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_nodes_unary_rest_flattened_error(transport: str = "rest"):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2822,18 +2774,18 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertNodeGroupRequest(),
+ client.delete_nodes_unary(
+ compute.DeleteNodesNodeGroupRequest(),
project="project_value",
zone="zone_value",
- initial_node_count=1911,
- node_group_resource=compute.NodeGroup(
- autoscaling_policy=compute.NodeGroupAutoscalingPolicy(max_nodes=958)
+ node_group="node_group_value",
+ node_groups_delete_nodes_request_resource=compute.NodeGroupsDeleteNodesRequest(
+ nodes=["nodes_value"]
),
)
-def test_insert_unary_rest_error():
+def test_delete_nodes_unary_rest_error():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2842,50 +2794,69 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListNodeGroupsRequest,
+ compute.GetNodeGroupRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_get_rest(request_type):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NodeGroupList(
- id="id_value",
+ return_value = compute.NodeGroup(
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ fingerprint="fingerprint_value",
+ id=205,
kind="kind_value",
- next_page_token="next_page_token_value",
+ location_hint="location_hint_value",
+ maintenance_policy="maintenance_policy_value",
+ name="name_value",
+ node_template="node_template_value",
self_link="self_link_value",
+ size=443,
+ status="status_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NodeGroupList.to_json(return_value)
+ json_return_value = compute.NodeGroup.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, compute.NodeGroup)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.fingerprint == "fingerprint_value"
+ assert response.id == 205
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.location_hint == "location_hint_value"
+ assert response.maintenance_policy == "maintenance_policy_value"
+ assert response.name == "name_value"
+ assert response.node_template == "node_template_value"
assert response.self_link == "self_link_value"
+ assert response.size == 443
+ assert response.status == "status_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(request_type=compute.ListNodeGroupsRequest):
+def test_get_rest_required_fields(request_type=compute.GetNodeGroupRequest):
transport_class = transports.NodeGroupsRestTransport
request_init = {}
+ request_init["node_group"] = ""
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -2899,30 +2870,23 @@ def test_list_rest_required_fields(request_type=compute.ListNodeGroupsRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["nodeGroup"] = "node_group_value"
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "nodeGroup" in jsonified_request
+ assert jsonified_request["nodeGroup"] == "node_group_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -2935,7 +2899,7 @@ def test_list_rest_required_fields(request_type=compute.ListNodeGroupsRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.NodeGroupList()
+ return_value = compute.NodeGroup()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2953,35 +2917,28 @@ def test_list_rest_required_fields(request_type=compute.ListNodeGroupsRequest):
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NodeGroupList.to_json(return_value)
+ json_return_value = compute.NodeGroup.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(())
& set(
(
+ "nodeGroup",
"project",
"zone",
)
@@ -2990,7 +2947,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3003,9 +2960,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "post_list"
+ transports.NodeGroupsRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "pre_list"
+ transports.NodeGroupsRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3020,19 +2977,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.NodeGroupList.to_json(
- compute.NodeGroupList()
- )
+ req.return_value._content = compute.NodeGroup.to_json(compute.NodeGroup())
- request = compute.ListNodeGroupsRequest()
+ request = compute.GetNodeGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.NodeGroupList
+ post.return_value = compute.NodeGroup
- client.list(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -3044,8 +2999,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListNodeGroupsRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetNodeGroupRequest
):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3053,7 +3008,7 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3065,10 +3020,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.get(request)
-def test_list_rest_flattened():
+def test_get_rest_flattened():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3077,40 +3032,45 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NodeGroupList()
+ return_value = compute.NodeGroup()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "zone": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "node_group": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
+ node_group="node_group_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NodeGroupList.to_json(return_value)
+ json_return_value = compute.NodeGroup.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups"
+ "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{node_group}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3119,125 +3079,69 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListNodeGroupsRequest(),
+ client.get(
+ compute.GetNodeGroupRequest(),
project="project_value",
zone="zone_value",
+ node_group="node_group_value",
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_get_rest_error():
client = NodeGroupsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.NodeGroupList(
- items=[
- compute.NodeGroup(),
- compute.NodeGroup(),
- compute.NodeGroup(),
- ],
- next_page_token="abc",
- ),
- compute.NodeGroupList(
- items=[],
- next_page_token="def",
- ),
- compute.NodeGroupList(
- items=[
- compute.NodeGroup(),
- ],
- next_page_token="ghi",
- ),
- compute.NodeGroupList(
- items=[
- compute.NodeGroup(),
- compute.NodeGroup(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.NodeGroupList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "zone": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.NodeGroup) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.ListNodesNodeGroupsRequest,
+ compute.GetIamPolicyNodeGroupRequest,
dict,
],
)
-def test_list_nodes_rest(request_type):
+def test_get_iam_policy_rest(request_type):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NodeGroupsListNodes(
- id="id_value",
- kind="kind_value",
- next_page_token="next_page_token_value",
- self_link="self_link_value",
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NodeGroupsListNodes.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_nodes(request)
+ response = client.get_iam_policy(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListNodesPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
-def test_list_nodes_rest_required_fields(
- request_type=compute.ListNodesNodeGroupsRequest,
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicyNodeGroupRequest,
):
transport_class = transports.NodeGroupsRestTransport
request_init = {}
- request_init["node_group"] = ""
request_init["project"] = ""
+ request_init["resource"] = ""
request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -3250,35 +3154,27 @@ def test_list_nodes_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_nodes._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["nodeGroup"] = "node_group_value"
jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_nodes._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "nodeGroup" in jsonified_request
- assert jsonified_request["nodeGroup"] == "node_group_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
assert "zone" in jsonified_request
assert jsonified_request["zone"] == "zone_value"
@@ -3289,7 +3185,7 @@ def test_list_nodes_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.NodeGroupsListNodes()
+ return_value = compute.Policy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3300,44 +3196,36 @@ def test_list_nodes_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NodeGroupsListNodes.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_nodes(request)
+ response = client.get_iam_policy(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_nodes_rest_unset_required_fields():
+def test_get_iam_policy_rest_unset_required_fields():
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list_nodes._get_unset_required_fields({})
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("optionsRequestedPolicyVersion",))
& set(
(
- "nodeGroup",
"project",
+ "resource",
"zone",
)
)
@@ -3345,7 +3233,7 @@ def test_list_nodes_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_nodes_rest_interceptors(null_interceptor):
+def test_get_iam_policy_rest_interceptors(null_interceptor):
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3358,9 +3246,9 @@ def test_list_nodes_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "post_list_nodes"
+ transports.NodeGroupsRestInterceptor, "post_get_iam_policy"
) as post, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "pre_list_nodes"
+ transports.NodeGroupsRestInterceptor, "pre_get_iam_policy"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3375,19 +3263,17 @@ def test_list_nodes_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.NodeGroupsListNodes.to_json(
- compute.NodeGroupsListNodes()
- )
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
- request = compute.ListNodesNodeGroupsRequest()
+ request = compute.GetIamPolicyNodeGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.NodeGroupsListNodes
+ post.return_value = compute.Policy
- client.list_nodes(
+ client.get_iam_policy(
request,
metadata=[
("key", "val"),
@@ -3399,8 +3285,8 @@ def test_list_nodes_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_nodes_rest_bad_request(
- transport: str = "rest", request_type=compute.ListNodesNodeGroupsRequest
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetIamPolicyNodeGroupRequest
):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3408,7 +3294,7 @@ def test_list_nodes_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3420,10 +3306,10 @@ def test_list_nodes_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list_nodes(request)
+ client.get_iam_policy(request)
-def test_list_nodes_rest_flattened():
+def test_get_iam_policy_rest_flattened():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3432,45 +3318,45 @@ def test_list_nodes_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NodeGroupsListNodes()
+ return_value = compute.Policy()
# get arguments that satisfy an http rule for this method
sample_request = {
"project": "sample1",
"zone": "sample2",
- "node_group": "sample3",
+ "resource": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- node_group="node_group_value",
+ resource="resource_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NodeGroupsListNodes.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list_nodes(**mock_args)
+ client.get_iam_policy(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{node_group}/listNodes"
+ "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{resource}/getIamPolicy"
% client.transport._host,
args[1],
)
-def test_list_nodes_rest_flattened_error(transport: str = "rest"):
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3479,94 +3365,35 @@ def test_list_nodes_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list_nodes(
- compute.ListNodesNodeGroupsRequest(),
+ client.get_iam_policy(
+ compute.GetIamPolicyNodeGroupRequest(),
project="project_value",
zone="zone_value",
- node_group="node_group_value",
+ resource="resource_value",
)
-def test_list_nodes_rest_pager(transport: str = "rest"):
+def test_get_iam_policy_rest_error():
client = NodeGroupsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.NodeGroupsListNodes(
- items=[
- compute.NodeGroupNode(),
- compute.NodeGroupNode(),
- compute.NodeGroupNode(),
- ],
- next_page_token="abc",
- ),
- compute.NodeGroupsListNodes(
- items=[],
- next_page_token="def",
- ),
- compute.NodeGroupsListNodes(
- items=[
- compute.NodeGroupNode(),
- ],
- next_page_token="ghi",
- ),
- compute.NodeGroupsListNodes(
- items=[
- compute.NodeGroupNode(),
- compute.NodeGroupNode(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.NodeGroupsListNodes.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {
- "project": "sample1",
- "zone": "sample2",
- "node_group": "sample3",
- }
-
- pager = client.list_nodes(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.NodeGroupNode) for i in results)
-
- pages = list(client.list_nodes(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchNodeGroupRequest,
+ compute.InsertNodeGroupRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_insert_rest(request_type):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2"}
request_init["node_group_resource"] = {
"autoscaling_policy": {
"max_nodes": 958,
@@ -3627,10 +3454,10 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -3655,11 +3482,11 @@ def test_patch_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(request_type=compute.PatchNodeGroupRequest):
+def test_insert_rest_required_fields(request_type=compute.InsertNodeGroupRequest):
transport_class = transports.NodeGroupsRestTransport
request_init = {}
- request_init["node_group"] = ""
+ request_init["initial_node_count"] = 0
request_init["project"] = ""
request_init["zone"] = ""
request = request_type(request_init)
@@ -3670,28 +3497,36 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchNodeGroupReq
)
# verify fields with default values are dropped
+ assert "initialNodeCount" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ assert "initialNodeCount" in jsonified_request
+ assert jsonified_request["initialNodeCount"] == request_init["initial_node_count"]
- jsonified_request["nodeGroup"] = "node_group_value"
+ jsonified_request["initialNodeCount"] = 1911
jsonified_request["project"] = "project_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "initial_node_count",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "nodeGroup" in jsonified_request
- assert jsonified_request["nodeGroup"] == "node_group_value"
+ assert "initialNodeCount" in jsonified_request
+ assert jsonified_request["initialNodeCount"] == 1911
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "zone" in jsonified_request
@@ -3715,7 +3550,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchNodeGroupReq
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -3727,24 +3562,34 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchNodeGroupReq
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.insert(request)
- expected_params = []
+ expected_params = [
+ (
+ "initialNodeCount",
+ 0,
+ ),
+ ]
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "initialNodeCount",
+ "requestId",
+ )
+ )
& set(
(
- "nodeGroup",
+ "initialNodeCount",
"nodeGroupResource",
"project",
"zone",
@@ -3754,7 +3599,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3767,9 +3612,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "post_patch"
+ transports.NodeGroupsRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "pre_patch"
+ transports.NodeGroupsRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3786,7 +3631,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchNodeGroupRequest()
+ request = compute.InsertNodeGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3794,7 +3639,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -3806,8 +3651,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchNodeGroupRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertNodeGroupRequest
):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3815,7 +3660,7 @@ def test_patch_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2"}
request_init["node_group_resource"] = {
"autoscaling_policy": {
"max_nodes": 958,
@@ -3851,10 +3696,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.insert(request)
-def test_patch_unary_rest_flattened():
+def test_insert_rest_flattened():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3866,17 +3711,13 @@ def test_patch_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "zone": "sample2",
- "node_group": "sample3",
- }
+ sample_request = {"project": "sample1", "zone": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- node_group="node_group_value",
+ initial_node_count=1911,
node_group_resource=compute.NodeGroup(
autoscaling_policy=compute.NodeGroupAutoscalingPolicy(max_nodes=958)
),
@@ -3891,20 +3732,20 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{node_group}"
+ "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3913,18 +3754,18 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchNodeGroupRequest(),
+ client.insert(
+ compute.InsertNodeGroupRequest(),
project="project_value",
zone="zone_value",
- node_group="node_group_value",
+ initial_node_count=1911,
node_group_resource=compute.NodeGroup(
autoscaling_policy=compute.NodeGroupAutoscalingPolicy(max_nodes=958)
),
)
-def test_patch_unary_rest_error():
+def test_insert_rest_error():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3933,129 +3774,2356 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetIamPolicyNodeGroupRequest,
+ compute.InsertNodeGroupRequest,
dict,
],
)
-def test_set_iam_policy_rest(request_type):
+def test_insert_unary_rest(request_type):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
- request_init["zone_set_policy_request_resource"] = {
- "bindings": [
- {
- "binding_id": "binding_id_value",
- "condition": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "members": ["members_value_1", "members_value_2"],
- "role": "role_value",
- }
- ],
- "etag": "etag_value",
- "policy": {
- "audit_configs": [
- {
- "audit_log_configs": [
- {
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "ignore_child_exemptions": True,
- "log_type": "log_type_value",
- }
- ],
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "service": "service_value",
- }
- ],
- "bindings": {},
- "etag": "etag_value",
- "iam_owned": True,
- "rules": [
- {
- "action": "action_value",
- "conditions": [
- {
- "iam": "iam_value",
- "op": "op_value",
- "svc": "svc_value",
- "sys": "sys_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "description": "description_value",
- "ins": ["ins_value_1", "ins_value_2"],
- "log_configs": [
- {
- "cloud_audit": {
- "authorization_logging_options": {
- "permission_type": "permission_type_value"
- },
- "log_name": "log_name_value",
- },
- "counter": {
- "custom_fields": [
- {"name": "name_value", "value": "value_value"}
- ],
- "field": "field_value",
- "metric": "metric_value",
- },
- "data_access": {"log_mode": "log_mode_value"},
- }
- ],
- "not_ins": ["not_ins_value_1", "not_ins_value_2"],
- "permissions": ["permissions_value_1", "permissions_value_2"],
- }
- ],
- "version": 774,
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["node_group_resource"] = {
+ "autoscaling_policy": {
+ "max_nodes": 958,
+ "min_nodes": 956,
+ "mode": "mode_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "location_hint": "location_hint_value",
+ "maintenance_policy": "maintenance_policy_value",
+ "maintenance_window": {
+ "maintenance_duration": {"nanos": 543, "seconds": 751},
+ "start_time": "start_time_value",
},
+ "name": "name_value",
+ "node_template": "node_template_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "status": "status_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(request_type=compute.InsertNodeGroupRequest):
+ transport_class = transports.NodeGroupsRestTransport
+
+ request_init = {}
+ request_init["initial_node_count"] = 0
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+ assert "initialNodeCount" not in jsonified_request
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+ assert "initialNodeCount" in jsonified_request
+ assert jsonified_request["initialNodeCount"] == request_init["initial_node_count"]
+
+ jsonified_request["initialNodeCount"] = 1911
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "initial_node_count",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "initialNodeCount" in jsonified_request
+ assert jsonified_request["initialNodeCount"] == 1911
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = [
+ (
+ "initialNodeCount",
+ 0,
+ ),
+ ]
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.NodeGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "initialNodeCount",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "initialNodeCount",
+ "nodeGroupResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.NodeGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NodeGroupsRestInterceptor(),
+ )
+ client = NodeGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NodeGroupsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.NodeGroupsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertNodeGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertNodeGroupRequest
+):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["node_group_resource"] = {
+ "autoscaling_policy": {
+ "max_nodes": 958,
+ "min_nodes": 956,
+ "mode": "mode_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "location_hint": "location_hint_value",
+ "maintenance_policy": "maintenance_policy_value",
+ "maintenance_window": {
+ "maintenance_duration": {"nanos": 543, "seconds": 751},
+ "start_time": "start_time_value",
+ },
+ "name": "name_value",
+ "node_template": "node_template_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "status": "status_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ initial_node_count=1911,
+ node_group_resource=compute.NodeGroup(
+ autoscaling_policy=compute.NodeGroupAutoscalingPolicy(max_nodes=958)
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertNodeGroupRequest(),
+ project="project_value",
+ zone="zone_value",
+ initial_node_count=1911,
+ node_group_resource=compute.NodeGroup(
+ autoscaling_policy=compute.NodeGroupAutoscalingPolicy(max_nodes=958)
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListNodeGroupsRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NodeGroupList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NodeGroupList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListNodeGroupsRequest):
+ transport_class = transports.NodeGroupsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NodeGroupList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NodeGroupList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.NodeGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.NodeGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NodeGroupsRestInterceptor(),
+ )
+ client = NodeGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NodeGroupsRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.NodeGroupsRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.NodeGroupList.to_json(
+ compute.NodeGroupList()
+ )
+
+ request = compute.ListNodeGroupsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.NodeGroupList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListNodeGroupsRequest
+):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NodeGroupList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NodeGroupList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListNodeGroupsRequest(),
+ project="project_value",
+ zone="zone_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.NodeGroupList(
+ items=[
+ compute.NodeGroup(),
+ compute.NodeGroup(),
+ compute.NodeGroup(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.NodeGroupList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.NodeGroupList(
+ items=[
+ compute.NodeGroup(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.NodeGroupList(
+ items=[
+ compute.NodeGroup(),
+ compute.NodeGroup(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.NodeGroupList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.NodeGroup) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListNodesNodeGroupsRequest,
+ dict,
+ ],
+)
+def test_list_nodes_rest(request_type):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NodeGroupsListNodes(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NodeGroupsListNodes.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list_nodes(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListNodesPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_nodes_rest_required_fields(
+ request_type=compute.ListNodesNodeGroupsRequest,
+):
+ transport_class = transports.NodeGroupsRestTransport
+
+ request_init = {}
+ request_init["node_group"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_nodes._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["nodeGroup"] = "node_group_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_nodes._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "nodeGroup" in jsonified_request
+ assert jsonified_request["nodeGroup"] == "node_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NodeGroupsListNodes()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NodeGroupsListNodes.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list_nodes(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_nodes_rest_unset_required_fields():
+ transport = transports.NodeGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list_nodes._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "nodeGroup",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_nodes_rest_interceptors(null_interceptor):
+ transport = transports.NodeGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NodeGroupsRestInterceptor(),
+ )
+ client = NodeGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NodeGroupsRestInterceptor, "post_list_nodes"
+ ) as post, mock.patch.object(
+ transports.NodeGroupsRestInterceptor, "pre_list_nodes"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.NodeGroupsListNodes.to_json(
+ compute.NodeGroupsListNodes()
+ )
+
+ request = compute.ListNodesNodeGroupsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.NodeGroupsListNodes
+
+ client.list_nodes(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_nodes_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListNodesNodeGroupsRequest
+):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list_nodes(request)
+
+
+def test_list_nodes_rest_flattened():
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NodeGroupsListNodes()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "node_group": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ node_group="node_group_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NodeGroupsListNodes.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list_nodes(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{node_group}/listNodes"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_nodes_rest_flattened_error(transport: str = "rest"):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list_nodes(
+ compute.ListNodesNodeGroupsRequest(),
+ project="project_value",
+ zone="zone_value",
+ node_group="node_group_value",
+ )
+
+
+def test_list_nodes_rest_pager(transport: str = "rest"):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.NodeGroupsListNodes(
+ items=[
+ compute.NodeGroupNode(),
+ compute.NodeGroupNode(),
+ compute.NodeGroupNode(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.NodeGroupsListNodes(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.NodeGroupsListNodes(
+ items=[
+ compute.NodeGroupNode(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.NodeGroupsListNodes(
+ items=[
+ compute.NodeGroupNode(),
+ compute.NodeGroupNode(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.NodeGroupsListNodes.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "node_group": "sample3",
+ }
+
+ pager = client.list_nodes(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.NodeGroupNode) for i in results)
+
+ pages = list(client.list_nodes(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchNodeGroupRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init["node_group_resource"] = {
+ "autoscaling_policy": {
+ "max_nodes": 958,
+ "min_nodes": 956,
+ "mode": "mode_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "location_hint": "location_hint_value",
+ "maintenance_policy": "maintenance_policy_value",
+ "maintenance_window": {
+ "maintenance_duration": {"nanos": 543, "seconds": 751},
+ "start_time": "start_time_value",
+ },
+ "name": "name_value",
+ "node_template": "node_template_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "status": "status_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchNodeGroupRequest):
+ transport_class = transports.NodeGroupsRestTransport
+
+ request_init = {}
+ request_init["node_group"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["nodeGroup"] = "node_group_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "nodeGroup" in jsonified_request
+ assert jsonified_request["nodeGroup"] == "node_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.NodeGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "nodeGroup",
+ "nodeGroupResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.NodeGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NodeGroupsRestInterceptor(),
+ )
+ client = NodeGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NodeGroupsRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.NodeGroupsRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchNodeGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchNodeGroupRequest
+):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init["node_group_resource"] = {
+ "autoscaling_policy": {
+ "max_nodes": 958,
+ "min_nodes": 956,
+ "mode": "mode_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "location_hint": "location_hint_value",
+ "maintenance_policy": "maintenance_policy_value",
+ "maintenance_window": {
+ "maintenance_duration": {"nanos": 543, "seconds": 751},
+ "start_time": "start_time_value",
+ },
+ "name": "name_value",
+ "node_template": "node_template_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "status": "status_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "node_group": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ node_group="node_group_value",
+ node_group_resource=compute.NodeGroup(
+ autoscaling_policy=compute.NodeGroupAutoscalingPolicy(max_nodes=958)
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{node_group}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchNodeGroupRequest(),
+ project="project_value",
+ zone="zone_value",
+ node_group="node_group_value",
+ node_group_resource=compute.NodeGroup(
+ autoscaling_policy=compute.NodeGroupAutoscalingPolicy(max_nodes=958)
+ ),
+ )
+
+
+def test_patch_rest_error():
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchNodeGroupRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init["node_group_resource"] = {
+ "autoscaling_policy": {
+ "max_nodes": 958,
+ "min_nodes": 956,
+ "mode": "mode_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "location_hint": "location_hint_value",
+ "maintenance_policy": "maintenance_policy_value",
+ "maintenance_window": {
+ "maintenance_duration": {"nanos": 543, "seconds": 751},
+ "start_time": "start_time_value",
+ },
+ "name": "name_value",
+ "node_template": "node_template_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "status": "status_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(request_type=compute.PatchNodeGroupRequest):
+ transport_class = transports.NodeGroupsRestTransport
+
+ request_init = {}
+ request_init["node_group"] = ""
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["nodeGroup"] = "node_group_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "nodeGroup" in jsonified_request
+ assert jsonified_request["nodeGroup"] == "node_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_unary_rest_unset_required_fields():
+ transport = transports.NodeGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "nodeGroup",
+ "nodeGroupResource",
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_unary_rest_interceptors(null_interceptor):
+ transport = transports.NodeGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NodeGroupsRestInterceptor(),
+ )
+ client = NodeGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NodeGroupsRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.NodeGroupsRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchNodeGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchNodeGroupRequest
+):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init["node_group_resource"] = {
+ "autoscaling_policy": {
+ "max_nodes": 958,
+ "min_nodes": 956,
+ "mode": "mode_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "location_hint": "location_hint_value",
+ "maintenance_policy": "maintenance_policy_value",
+ "maintenance_window": {
+ "maintenance_duration": {"nanos": 543, "seconds": 751},
+ "start_time": "start_time_value",
+ },
+ "name": "name_value",
+ "node_template": "node_template_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "status": "status_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_unary(request)
+
+
+def test_patch_unary_rest_flattened():
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "node_group": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ node_group="node_group_value",
+ node_group_resource=compute.NodeGroup(
+ autoscaling_policy=compute.NodeGroupAutoscalingPolicy(max_nodes=958)
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{node_group}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_unary(
+ compute.PatchNodeGroupRequest(),
+ project="project_value",
+ zone="zone_value",
+ node_group="node_group_value",
+ node_group_resource=compute.NodeGroup(
+ autoscaling_policy=compute.NodeGroupAutoscalingPolicy(max_nodes=958)
+ ),
+ )
+
+
+def test_patch_unary_rest_error():
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetIamPolicyNodeGroupRequest,
+ dict,
+ ],
+)
+def test_set_iam_policy_rest(request_type):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init["zone_set_policy_request_resource"] = {
+ "bindings": [
+ {
+ "binding_id": "binding_id_value",
+ "condition": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "members": ["members_value_1", "members_value_2"],
+ "role": "role_value",
+ }
+ ],
+ "etag": "etag_value",
+ "policy": {
+ "audit_configs": [
+ {
+ "audit_log_configs": [
+ {
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "ignore_child_exemptions": True,
+ "log_type": "log_type_value",
+ }
+ ],
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "service": "service_value",
+ }
+ ],
+ "bindings": {},
+ "etag": "etag_value",
+ "iam_owned": True,
+ "rules": [
+ {
+ "action": "action_value",
+ "conditions": [
+ {
+ "iam": "iam_value",
+ "op": "op_value",
+ "svc": "svc_value",
+ "sys": "sys_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "ins": ["ins_value_1", "ins_value_2"],
+ "log_configs": [
+ {
+ "cloud_audit": {
+ "authorization_logging_options": {
+ "permission_type": "permission_type_value"
+ },
+ "log_name": "log_name_value",
+ },
+ "counter": {
+ "custom_fields": [
+ {"name": "name_value", "value": "value_value"}
+ ],
+ "field": "field_value",
+ "metric": "metric_value",
+ },
+ "data_access": {"log_mode": "log_mode_value"},
+ }
+ ],
+ "not_ins": ["not_ins_value_1", "not_ins_value_2"],
+ "permissions": ["permissions_value_1", "permissions_value_2"],
+ }
+ ],
+ "version": 774,
+ },
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_set_iam_policy_rest_required_fields(
+ request_type=compute.SetIamPolicyNodeGroupRequest,
+):
+ transport_class = transports.NodeGroupsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["resource"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_iam_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_iam_policy_rest_unset_required_fields():
+ transport = transports.NodeGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "project",
+ "resource",
+ "zone",
+ "zoneSetPolicyRequestResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_iam_policy_rest_interceptors(null_interceptor):
+ transport = transports.NodeGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NodeGroupsRestInterceptor(),
+ )
+ client = NodeGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NodeGroupsRestInterceptor, "post_set_iam_policy"
+ ) as post, mock.patch.object(
+ transports.NodeGroupsRestInterceptor, "pre_set_iam_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
+
+ request = compute.SetIamPolicyNodeGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Policy
+
+ client.set_iam_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetIamPolicyNodeGroupRequest
+):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init["zone_set_policy_request_resource"] = {
+ "bindings": [
+ {
+ "binding_id": "binding_id_value",
+ "condition": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "members": ["members_value_1", "members_value_2"],
+ "role": "role_value",
+ }
+ ],
+ "etag": "etag_value",
+ "policy": {
+ "audit_configs": [
+ {
+ "audit_log_configs": [
+ {
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "ignore_child_exemptions": True,
+ "log_type": "log_type_value",
+ }
+ ],
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "service": "service_value",
+ }
+ ],
+ "bindings": {},
+ "etag": "etag_value",
+ "iam_owned": True,
+ "rules": [
+ {
+ "action": "action_value",
+ "conditions": [
+ {
+ "iam": "iam_value",
+ "op": "op_value",
+ "svc": "svc_value",
+ "sys": "sys_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "ins": ["ins_value_1", "ins_value_2"],
+ "log_configs": [
+ {
+ "cloud_audit": {
+ "authorization_logging_options": {
+ "permission_type": "permission_type_value"
+ },
+ "log_name": "log_name_value",
+ },
+ "counter": {
+ "custom_fields": [
+ {"name": "name_value", "value": "value_value"}
+ ],
+ "field": "field_value",
+ "metric": "metric_value",
+ },
+ "data_access": {"log_mode": "log_mode_value"},
+ }
+ ],
+ "not_ins": ["not_ins_value_1", "not_ins_value_2"],
+ "permissions": ["permissions_value_1", "permissions_value_2"],
+ }
+ ],
+ "version": 774,
+ },
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_iam_policy(request)
+
+
+def test_set_iam_policy_rest_flattened():
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "resource": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ resource="resource_value",
+ zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_iam_policy(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{resource}/setIamPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_iam_policy(
+ compute.SetIamPolicyNodeGroupRequest(),
+ project="project_value",
+ zone="zone_value",
+ resource="resource_value",
+ zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
+ ),
+ )
+
+
+def test_set_iam_policy_rest_error():
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetNodeTemplateNodeGroupRequest,
+ dict,
+ ],
+)
+def test_set_node_template_rest(request_type):
+ client = NodeGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init["node_groups_set_node_template_request_resource"] = {
+ "node_template": "node_template_value"
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.set_node_template(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_set_iam_policy_rest_required_fields(
- request_type=compute.SetIamPolicyNodeGroupRequest,
+def test_set_node_template_rest_required_fields(
+ request_type=compute.SetNodeTemplateNodeGroupRequest,
):
transport_class = transports.NodeGroupsRestTransport
request_init = {}
+ request_init["node_group"] = ""
request_init["project"] = ""
- request_init["resource"] = ""
request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -4068,25 +6136,27 @@ def test_set_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).set_node_template._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["nodeGroup"] = "node_group_value"
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).set_node_template._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "nodeGroup" in jsonified_request
+ assert jsonified_request["nodeGroup"] == "node_group_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
assert "zone" in jsonified_request
assert jsonified_request["zone"] == "zone_value"
@@ -4097,7 +6167,7 @@ def test_set_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -4116,38 +6186,38 @@ def test_set_iam_policy_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.set_node_template(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_iam_policy_rest_unset_required_fields():
+def test_set_node_template_rest_unset_required_fields():
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.set_node_template._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
+ "nodeGroup",
+ "nodeGroupsSetNodeTemplateRequestResource",
"project",
- "resource",
"zone",
- "zoneSetPolicyRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_iam_policy_rest_interceptors(null_interceptor):
+def test_set_node_template_rest_interceptors(null_interceptor):
transport = transports.NodeGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -4160,9 +6230,9 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "post_set_iam_policy"
+ transports.NodeGroupsRestInterceptor, "post_set_node_template"
) as post, mock.patch.object(
- transports.NodeGroupsRestInterceptor, "pre_set_iam_policy"
+ transports.NodeGroupsRestInterceptor, "pre_set_node_template"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4177,17 +6247,17 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetIamPolicyNodeGroupRequest()
+ request = compute.SetNodeTemplateNodeGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.set_iam_policy(
+ client.set_node_template(
request,
metadata=[
("key", "val"),
@@ -4199,8 +6269,8 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.SetIamPolicyNodeGroupRequest
+def test_set_node_template_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetNodeTemplateNodeGroupRequest
):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4208,83 +6278,9 @@ def test_set_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
- request_init["zone_set_policy_request_resource"] = {
- "bindings": [
- {
- "binding_id": "binding_id_value",
- "condition": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "members": ["members_value_1", "members_value_2"],
- "role": "role_value",
- }
- ],
- "etag": "etag_value",
- "policy": {
- "audit_configs": [
- {
- "audit_log_configs": [
- {
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "ignore_child_exemptions": True,
- "log_type": "log_type_value",
- }
- ],
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "service": "service_value",
- }
- ],
- "bindings": {},
- "etag": "etag_value",
- "iam_owned": True,
- "rules": [
- {
- "action": "action_value",
- "conditions": [
- {
- "iam": "iam_value",
- "op": "op_value",
- "svc": "svc_value",
- "sys": "sys_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "description": "description_value",
- "ins": ["ins_value_1", "ins_value_2"],
- "log_configs": [
- {
- "cloud_audit": {
- "authorization_logging_options": {
- "permission_type": "permission_type_value"
- },
- "log_name": "log_name_value",
- },
- "counter": {
- "custom_fields": [
- {"name": "name_value", "value": "value_value"}
- ],
- "field": "field_value",
- "metric": "metric_value",
- },
- "data_access": {"log_mode": "log_mode_value"},
- }
- ],
- "not_ins": ["not_ins_value_1", "not_ins_value_2"],
- "permissions": ["permissions_value_1", "permissions_value_2"],
- }
- ],
- "version": 774,
- },
+ request_init = {"project": "sample1", "zone": "sample2", "node_group": "sample3"}
+ request_init["node_groups_set_node_template_request_resource"] = {
+ "node_template": "node_template_value"
}
request = request_type(request_init)
@@ -4297,10 +6293,10 @@ def test_set_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_iam_policy(request)
+ client.set_node_template(request)
-def test_set_iam_policy_rest_flattened():
+def test_set_node_template_rest_flattened():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4309,22 +6305,22 @@ def test_set_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
"project": "sample1",
"zone": "sample2",
- "resource": "sample3",
+ "node_group": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- resource="resource_value",
- zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
+ node_group="node_group_value",
+ node_groups_set_node_template_request_resource=compute.NodeGroupsSetNodeTemplateRequest(
+ node_template="node_template_value"
),
)
mock_args.update(sample_request)
@@ -4332,25 +6328,25 @@ def test_set_iam_policy_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_iam_policy(**mock_args)
+ client.set_node_template(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{resource}/setIamPolicy"
+ "%s/compute/v1/projects/{project}/zones/{zone}/nodeGroups/{node_group}/setNodeTemplate"
% client.transport._host,
args[1],
)
-def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_set_node_template_rest_flattened_error(transport: str = "rest"):
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4359,18 +6355,18 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_iam_policy(
- compute.SetIamPolicyNodeGroupRequest(),
+ client.set_node_template(
+ compute.SetNodeTemplateNodeGroupRequest(),
project="project_value",
zone="zone_value",
- resource="resource_value",
- zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
+ node_group="node_group_value",
+ node_groups_set_node_template_request_resource=compute.NodeGroupsSetNodeTemplateRequest(
+ node_template="node_template_value"
),
)
-def test_set_iam_policy_rest_error():
+def test_set_node_template_rest_error():
client = NodeGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4434,28 +6430,6 @@ def test_set_node_template_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_set_node_template_unary_rest_required_fields(
@@ -5085,6 +7059,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = NodeGroupsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_node_groups_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -5128,6 +7115,14 @@ def test_node_groups_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_node_groups_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_node_templates.py b/tests/unit/gapic/compute_v1/test_node_templates.py
index f0531d7d9..901f96887 100644
--- a/tests/unit/gapic/compute_v1/test_node_templates.py
+++ b/tests/unit/gapic/compute_v1/test_node_templates.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -882,7 +884,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = NodeTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -930,10 +932,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -958,9 +960,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteNodeTemplateRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteNodeTemplateRequest):
transport_class = transports.NodeTemplatesRestTransport
request_init = {}
@@ -1031,14 +1031,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.NodeTemplatesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1057,7 +1057,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.NodeTemplatesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1097,7 +1097,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1109,7 +1109,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteNodeTemplateRequest
):
client = NodeTemplatesClient(
@@ -1134,10 +1134,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = NodeTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1171,7 +1171,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1184,7 +1184,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = NodeTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1193,7 +1193,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteNodeTemplateRequest(),
project="project_value",
region="region_value",
@@ -1201,7 +1201,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = NodeTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1210,11 +1210,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetNodeTemplateRequest,
+ compute.DeleteNodeTemplateRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = NodeTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1231,44 +1231,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NodeTemplate(
- cpu_overcommit_type="cpu_overcommit_type_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- node_type="node_type_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- status="status_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NodeTemplate.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.NodeTemplate)
- assert response.cpu_overcommit_type == "cpu_overcommit_type_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.node_type == "node_type_value"
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.status == "status_value"
- assert response.status_message == "status_message_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetNodeTemplateRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteNodeTemplateRequest,
+):
transport_class = transports.NodeTemplatesRestTransport
request_init = {}
@@ -1286,7 +1288,7 @@ def test_get_rest_required_fields(request_type=compute.GetNodeTemplateRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1297,7 +1299,9 @@ def test_get_rest_required_fields(request_type=compute.GetNodeTemplateRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1315,7 +1319,7 @@ def test_get_rest_required_fields(request_type=compute.GetNodeTemplateRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.NodeTemplate()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1326,32 +1330,32 @@ def test_get_rest_required_fields(request_type=compute.GetNodeTemplateRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NodeTemplate.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.NodeTemplatesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"nodeTemplate",
@@ -1363,7 +1367,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.NodeTemplatesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1376,9 +1380,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NodeTemplatesRestInterceptor, "post_get"
+ transports.NodeTemplatesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.NodeTemplatesRestInterceptor, "pre_get"
+ transports.NodeTemplatesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1393,17 +1397,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.NodeTemplate.to_json(compute.NodeTemplate())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetNodeTemplateRequest()
+ request = compute.DeleteNodeTemplateRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.NodeTemplate
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1415,8 +1419,604 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetNodeTemplateRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteNodeTemplateRequest
+):
+ client = NodeTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "node_template": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete_unary(request)
+
+
+def test_delete_unary_rest_flattened():
+ client = NodeTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "node_template": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ node_template="node_template_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/nodeTemplates/{node_template}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+ client = NodeTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete_unary(
+ compute.DeleteNodeTemplateRequest(),
+ project="project_value",
+ region="region_value",
+ node_template="node_template_value",
+ )
+
+
+def test_delete_unary_rest_error():
+ client = NodeTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetNodeTemplateRequest,
+ dict,
+ ],
+)
+def test_get_rest(request_type):
+ client = NodeTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "node_template": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NodeTemplate(
+ cpu_overcommit_type="cpu_overcommit_type_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ node_type="node_type_value",
+ region="region_value",
+ self_link="self_link_value",
+ status="status_value",
+ status_message="status_message_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NodeTemplate.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.NodeTemplate)
+ assert response.cpu_overcommit_type == "cpu_overcommit_type_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.node_type == "node_type_value"
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.status == "status_value"
+ assert response.status_message == "status_message_value"
+
+
+def test_get_rest_required_fields(request_type=compute.GetNodeTemplateRequest):
+ transport_class = transports.NodeTemplatesRestTransport
+
+ request_init = {}
+ request_init["node_template"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["nodeTemplate"] = "node_template_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "nodeTemplate" in jsonified_request
+ assert jsonified_request["nodeTemplate"] == "node_template_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = NodeTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NodeTemplate()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NodeTemplate.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.NodeTemplatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "nodeTemplate",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.NodeTemplatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NodeTemplatesRestInterceptor(),
+ )
+ client = NodeTemplatesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NodeTemplatesRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.NodeTemplatesRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.NodeTemplate.to_json(compute.NodeTemplate())
+
+ request = compute.GetNodeTemplateRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.NodeTemplate
+
+ client.get(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetNodeTemplateRequest
+):
+ client = NodeTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "node_template": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = NodeTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NodeTemplate()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "node_template": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ node_template="node_template_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NodeTemplate.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/nodeTemplates/{node_template}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = NodeTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetNodeTemplateRequest(),
+ project="project_value",
+ region="region_value",
+ node_template="node_template_value",
+ )
+
+
+def test_get_rest_error():
+ client = NodeTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetIamPolicyNodeTemplateRequest,
+ dict,
+ ],
+)
+def test_get_iam_policy_rest(request_type):
+ client = NodeTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicyNodeTemplateRequest,
+):
+ transport_class = transports.NodeTemplatesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["resource"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["resource"] = "resource_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+
+ client = NodeTemplatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_iam_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_iam_policy_rest_unset_required_fields():
+ transport = transports.NodeTemplatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("optionsRequestedPolicyVersion",))
+ & set(
+ (
+ "project",
+ "region",
+ "resource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_iam_policy_rest_interceptors(null_interceptor):
+ transport = transports.NodeTemplatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.NodeTemplatesRestInterceptor(),
+ )
+ client = NodeTemplatesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.NodeTemplatesRestInterceptor, "post_get_iam_policy"
+ ) as post, mock.patch.object(
+ transports.NodeTemplatesRestInterceptor, "pre_get_iam_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
+
+ request = compute.GetIamPolicyNodeTemplateRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Policy
+
+ client.get_iam_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetIamPolicyNodeTemplateRequest
):
client = NodeTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1424,11 +2024,7 @@ def test_get_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "region": "sample2",
- "node_template": "sample3",
- }
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1440,10 +2036,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.get_iam_policy(request)
-def test_get_rest_flattened():
+def test_get_iam_policy_rest_flattened():
client = NodeTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1452,45 +2048,45 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NodeTemplate()
+ return_value = compute.Policy()
# get arguments that satisfy an http rule for this method
sample_request = {
"project": "sample1",
"region": "sample2",
- "node_template": "sample3",
+ "resource": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- node_template="node_template_value",
+ resource="resource_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NodeTemplate.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.get_iam_policy(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/nodeTemplates/{node_template}"
+ "%s/compute/v1/projects/{project}/regions/{region}/nodeTemplates/{resource}/getIamPolicy"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
client = NodeTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1499,15 +2095,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetNodeTemplateRequest(),
+ client.get_iam_policy(
+ compute.GetIamPolicyNodeTemplateRequest(),
project="project_value",
region="region_value",
- node_template="node_template_value",
+ resource="resource_value",
)
-def test_get_rest_error():
+def test_get_iam_policy_rest_error():
client = NodeTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1516,53 +2112,114 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicyNodeTemplateRequest,
+ compute.InsertNodeTemplateRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_insert_rest(request_type):
client = NodeTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["node_template_resource"] = {
+ "accelerators": [
+ {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
+ ],
+ "cpu_overcommit_type": "cpu_overcommit_type_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disks": [
+ {"disk_count": 1075, "disk_size_gb": 1261, "disk_type": "disk_type_value"}
+ ],
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "node_affinity_labels": {},
+ "node_type": "node_type_value",
+ "node_type_flexibility": {
+ "cpus": "cpus_value",
+ "local_ssd": "local_ssd_value",
+ "memory": "memory_value",
+ },
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_binding": {"type_": "type__value"},
+ "status": "status_value",
+ "status_message": "status_message_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicyNodeTemplateRequest,
-):
+def test_insert_rest_required_fields(request_type=compute.InsertNodeTemplateRequest):
transport_class = transports.NodeTemplatesRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
- request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1574,20 +2231,19 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
- jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1595,8 +2251,6 @@ def test_get_iam_policy_rest_required_fields(
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
client = NodeTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1605,7 +2259,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1616,44 +2270,45 @@ def test_get_iam_policy_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.NodeTemplatesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
+ set(("requestId",))
& set(
(
+ "nodeTemplateResource",
"project",
"region",
- "resource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.NodeTemplatesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1666,9 +2321,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.NodeTemplatesRestInterceptor, "post_get_iam_policy"
+ transports.NodeTemplatesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.NodeTemplatesRestInterceptor, "pre_get_iam_policy"
+ transports.NodeTemplatesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1683,17 +2338,17 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetIamPolicyNodeTemplateRequest()
+ request = compute.InsertNodeTemplateRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.get_iam_policy(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1705,8 +2360,8 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.GetIamPolicyNodeTemplateRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertNodeTemplateRequest
):
client = NodeTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1714,7 +2369,33 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["node_template_resource"] = {
+ "accelerators": [
+ {"accelerator_count": 1805, "accelerator_type": "accelerator_type_value"}
+ ],
+ "cpu_overcommit_type": "cpu_overcommit_type_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disks": [
+ {"disk_count": 1075, "disk_size_gb": 1261, "disk_type": "disk_type_value"}
+ ],
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "node_affinity_labels": {},
+ "node_type": "node_type_value",
+ "node_type_flexibility": {
+ "cpus": "cpus_value",
+ "local_ssd": "local_ssd_value",
+ "memory": "memory_value",
+ },
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_binding": {"type_": "type__value"},
+ "status": "status_value",
+ "status_message": "status_message_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1726,10 +2407,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.insert(request)
-def test_get_iam_policy_rest_flattened():
+def test_insert_rest_flattened():
client = NodeTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1738,45 +2419,43 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "region": "sample2",
- "resource": "sample3",
- }
+ sample_request = {"project": "sample1", "region": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- resource="resource_value",
+ node_template_resource=compute.NodeTemplate(
+ accelerators=[compute.AcceleratorConfig(accelerator_count=1805)]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/nodeTemplates/{resource}/getIamPolicy"
+ "%s/compute/v1/projects/{project}/regions/{region}/nodeTemplates"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = NodeTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1785,15 +2464,17 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicyNodeTemplateRequest(),
+ client.insert(
+ compute.InsertNodeTemplateRequest(),
project="project_value",
region="region_value",
- resource="resource_value",
+ node_template_resource=compute.NodeTemplate(
+ accelerators=[compute.AcceleratorConfig(accelerator_count=1805)]
+ ),
)
-def test_get_iam_policy_rest_error():
+def test_insert_rest_error():
client = NodeTemplatesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1880,28 +2561,6 @@ def test_insert_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_insert_unary_rest_required_fields(
@@ -3337,6 +3996,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = NodeTemplatesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_node_templates_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3375,6 +4047,14 @@ def test_node_templates_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_node_templates_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_node_types.py b/tests/unit/gapic/compute_v1/test_node_types.py
index 0b71b2fe5..0b0ef4d60 100644
--- a/tests/unit/gapic/compute_v1/test_node_types.py
+++ b/tests/unit/gapic/compute_v1/test_node_types.py
@@ -1572,6 +1572,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = NodeTypesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_node_types_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -1605,6 +1618,14 @@ def test_node_types_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_node_types_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_packet_mirrorings.py b/tests/unit/gapic/compute_v1/test_packet_mirrorings.py
index 80151400a..53262d158 100644
--- a/tests/unit/gapic/compute_v1/test_packet_mirrorings.py
+++ b/tests/unit/gapic/compute_v1/test_packet_mirrorings.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -904,7 +906,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -952,10 +954,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -980,9 +982,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeletePacketMirroringRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeletePacketMirroringRequest):
transport_class = transports.PacketMirroringsRestTransport
request_init = {}
@@ -1053,14 +1053,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.PacketMirroringsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1079,7 +1079,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.PacketMirroringsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1119,7 +1119,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1131,7 +1131,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeletePacketMirroringRequest
):
client = PacketMirroringsClient(
@@ -1156,10 +1156,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1193,7 +1193,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1206,7 +1206,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1215,7 +1215,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeletePacketMirroringRequest(),
project="project_value",
region="region_value",
@@ -1223,7 +1223,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1232,11 +1232,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetPacketMirroringRequest,
+ compute.DeletePacketMirroringRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1253,40 +1253,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PacketMirroring(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- enable="enable_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- priority=898,
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PacketMirroring.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.PacketMirroring)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.enable == "enable_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.priority == 898
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetPacketMirroringRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeletePacketMirroringRequest,
+):
transport_class = transports.PacketMirroringsRestTransport
request_init = {}
@@ -1304,7 +1310,7 @@ def test_get_rest_required_fields(request_type=compute.GetPacketMirroringRequest
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1315,7 +1321,9 @@ def test_get_rest_required_fields(request_type=compute.GetPacketMirroringRequest
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1333,7 +1341,7 @@ def test_get_rest_required_fields(request_type=compute.GetPacketMirroringRequest
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.PacketMirroring()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1344,32 +1352,32 @@ def test_get_rest_required_fields(request_type=compute.GetPacketMirroringRequest
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PacketMirroring.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.PacketMirroringsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"packetMirroring",
@@ -1381,7 +1389,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.PacketMirroringsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1394,9 +1402,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.PacketMirroringsRestInterceptor, "post_get"
+ transports.PacketMirroringsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.PacketMirroringsRestInterceptor, "pre_get"
+ transports.PacketMirroringsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1411,19 +1419,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.PacketMirroring.to_json(
- compute.PacketMirroring()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetPacketMirroringRequest()
+ request = compute.DeletePacketMirroringRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.PacketMirroring
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1435,8 +1441,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetPacketMirroringRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeletePacketMirroringRequest
):
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1460,10 +1466,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1472,7 +1478,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PacketMirroring()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1492,12 +1498,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PacketMirroring.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1510,7 +1516,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1519,15 +1525,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetPacketMirroringRequest(),
+ client.delete_unary(
+ compute.DeletePacketMirroringRequest(),
project="project_value",
region="region_value",
packet_mirroring="packet_mirroring_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1536,113 +1542,65 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertPacketMirroringRequest,
+ compute.GetPacketMirroringRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["packet_mirroring_resource"] = {
- "collector_ilb": {"canonical_url": "canonical_url_value", "url": "url_value"},
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "enable": "enable_value",
- "filter": {
- "I_p_protocols": ["I_p_protocols_value_1", "I_p_protocols_value_2"],
- "cidr_ranges": ["cidr_ranges_value_1", "cidr_ranges_value_2"],
- "direction": "direction_value",
- },
- "id": 205,
- "kind": "kind_value",
- "mirrored_resources": {
- "instances": [{"canonical_url": "canonical_url_value", "url": "url_value"}],
- "subnetworks": [
- {"canonical_url": "canonical_url_value", "url": "url_value"}
- ],
- "tags": ["tags_value_1", "tags_value_2"],
- },
- "name": "name_value",
- "network": {"canonical_url": "canonical_url_value", "url": "url_value"},
- "priority": 898,
- "region": "region_value",
- "self_link": "self_link_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "packet_mirroring": "sample3",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.PacketMirroring(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ enable="enable_value",
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ priority=898,
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.PacketMirroring.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.PacketMirroring)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.enable == "enable_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.priority == 898
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertPacketMirroringRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetPacketMirroringRequest):
transport_class = transports.PacketMirroringsRestTransport
request_init = {}
+ request_init["packet_mirroring"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -1656,22 +1614,23 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["packetMirroring"] = "packet_mirroring_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "packetMirroring" in jsonified_request
+ assert jsonified_request["packetMirroring"] == "packet_mirroring_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -1684,7 +1643,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.PacketMirroring()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1695,36 +1654,35 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.PacketMirroring.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.PacketMirroringsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
- "packetMirroringResource",
+ "packetMirroring",
"project",
"region",
)
@@ -1733,7 +1691,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.PacketMirroringsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1746,9 +1704,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.PacketMirroringsRestInterceptor, "post_insert"
+ transports.PacketMirroringsRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.PacketMirroringsRestInterceptor, "pre_insert"
+ transports.PacketMirroringsRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1763,17 +1721,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.PacketMirroring.to_json(
+ compute.PacketMirroring()
+ )
- request = compute.InsertPacketMirroringRequest()
+ request = compute.GetPacketMirroringRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.PacketMirroring
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1785,8 +1745,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertPacketMirroringRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetPacketMirroringRequest
):
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1794,32 +1754,1036 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["packet_mirroring_resource"] = {
- "collector_ilb": {"canonical_url": "canonical_url_value", "url": "url_value"},
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "enable": "enable_value",
- "filter": {
- "I_p_protocols": ["I_p_protocols_value_1", "I_p_protocols_value_2"],
- "cidr_ranges": ["cidr_ranges_value_1", "cidr_ranges_value_2"],
- "direction": "direction_value",
- },
- "id": 205,
- "kind": "kind_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "packet_mirroring": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.PacketMirroring()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "packet_mirroring": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ packet_mirroring="packet_mirroring_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.PacketMirroring.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/packetMirrorings/{packet_mirroring}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetPacketMirroringRequest(),
+ project="project_value",
+ region="region_value",
+ packet_mirroring="packet_mirroring_value",
+ )
+
+
+def test_get_rest_error():
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertPacketMirroringRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["packet_mirroring_resource"] = {
+ "collector_ilb": {"canonical_url": "canonical_url_value", "url": "url_value"},
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable": "enable_value",
+ "filter": {
+ "I_p_protocols": ["I_p_protocols_value_1", "I_p_protocols_value_2"],
+ "cidr_ranges": ["cidr_ranges_value_1", "cidr_ranges_value_2"],
+ "direction": "direction_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "mirrored_resources": {
+ "instances": [{"canonical_url": "canonical_url_value", "url": "url_value"}],
+ "subnetworks": [
+ {"canonical_url": "canonical_url_value", "url": "url_value"}
+ ],
+ "tags": ["tags_value_1", "tags_value_2"],
+ },
+ "name": "name_value",
+ "network": {"canonical_url": "canonical_url_value", "url": "url_value"},
+ "priority": 898,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertPacketMirroringRequest):
+ transport_class = transports.PacketMirroringsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.PacketMirroringsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "packetMirroringResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.PacketMirroringsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.PacketMirroringsRestInterceptor(),
+ )
+ client = PacketMirroringsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.PacketMirroringsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.PacketMirroringsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertPacketMirroringRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertPacketMirroringRequest
+):
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["packet_mirroring_resource"] = {
+ "collector_ilb": {"canonical_url": "canonical_url_value", "url": "url_value"},
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable": "enable_value",
+ "filter": {
+ "I_p_protocols": ["I_p_protocols_value_1", "I_p_protocols_value_2"],
+ "cidr_ranges": ["cidr_ranges_value_1", "cidr_ranges_value_2"],
+ "direction": "direction_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "mirrored_resources": {
+ "instances": [{"canonical_url": "canonical_url_value", "url": "url_value"}],
+ "subnetworks": [
+ {"canonical_url": "canonical_url_value", "url": "url_value"}
+ ],
+ "tags": ["tags_value_1", "tags_value_2"],
+ },
+ "name": "name_value",
+ "network": {"canonical_url": "canonical_url_value", "url": "url_value"},
+ "priority": 898,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ packet_mirroring_resource=compute.PacketMirroring(
+ collector_ilb=compute.PacketMirroringForwardingRuleInfo(
+ canonical_url="canonical_url_value"
+ )
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/packetMirrorings"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertPacketMirroringRequest(),
+ project="project_value",
+ region="region_value",
+ packet_mirroring_resource=compute.PacketMirroring(
+ collector_ilb=compute.PacketMirroringForwardingRuleInfo(
+ canonical_url="canonical_url_value"
+ )
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertPacketMirroringRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["packet_mirroring_resource"] = {
+ "collector_ilb": {"canonical_url": "canonical_url_value", "url": "url_value"},
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable": "enable_value",
+ "filter": {
+ "I_p_protocols": ["I_p_protocols_value_1", "I_p_protocols_value_2"],
+ "cidr_ranges": ["cidr_ranges_value_1", "cidr_ranges_value_2"],
+ "direction": "direction_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "mirrored_resources": {
+ "instances": [{"canonical_url": "canonical_url_value", "url": "url_value"}],
+ "subnetworks": [
+ {"canonical_url": "canonical_url_value", "url": "url_value"}
+ ],
+ "tags": ["tags_value_1", "tags_value_2"],
+ },
+ "name": "name_value",
+ "network": {"canonical_url": "canonical_url_value", "url": "url_value"},
+ "priority": 898,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertPacketMirroringRequest,
+):
+ transport_class = transports.PacketMirroringsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.PacketMirroringsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "packetMirroringResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.PacketMirroringsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.PacketMirroringsRestInterceptor(),
+ )
+ client = PacketMirroringsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.PacketMirroringsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.PacketMirroringsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertPacketMirroringRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertPacketMirroringRequest
+):
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["packet_mirroring_resource"] = {
+ "collector_ilb": {"canonical_url": "canonical_url_value", "url": "url_value"},
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable": "enable_value",
+ "filter": {
+ "I_p_protocols": ["I_p_protocols_value_1", "I_p_protocols_value_2"],
+ "cidr_ranges": ["cidr_ranges_value_1", "cidr_ranges_value_2"],
+ "direction": "direction_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
"mirrored_resources": {
"instances": [{"canonical_url": "canonical_url_value", "url": "url_value"}],
"subnetworks": [
{"canonical_url": "canonical_url_value", "url": "url_value"}
],
- "tags": ["tags_value_1", "tags_value_2"],
- },
- "name": "name_value",
- "network": {"canonical_url": "canonical_url_value", "url": "url_value"},
- "priority": 898,
- "region": "region_value",
- "self_link": "self_link_value",
- }
+ "tags": ["tags_value_1", "tags_value_2"],
+ },
+ "name": "name_value",
+ "network": {"canonical_url": "canonical_url_value", "url": "url_value"},
+ "priority": 898,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ packet_mirroring_resource=compute.PacketMirroring(
+ collector_ilb=compute.PacketMirroringForwardingRuleInfo(
+ canonical_url="canonical_url_value"
+ )
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/packetMirrorings"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertPacketMirroringRequest(),
+ project="project_value",
+ region="region_value",
+ packet_mirroring_resource=compute.PacketMirroring(
+ collector_ilb=compute.PacketMirroringForwardingRuleInfo(
+ canonical_url="canonical_url_value"
+ )
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListPacketMirroringsRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.PacketMirroringList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.PacketMirroringList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListPacketMirroringsRequest):
+ transport_class = transports.PacketMirroringsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.PacketMirroringList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.PacketMirroringList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.PacketMirroringsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.PacketMirroringsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.PacketMirroringsRestInterceptor(),
+ )
+ client = PacketMirroringsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.PacketMirroringsRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.PacketMirroringsRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.PacketMirroringList.to_json(
+ compute.PacketMirroringList()
+ )
+
+ request = compute.ListPacketMirroringsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.PacketMirroringList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListPacketMirroringsRequest
+):
+ client = PacketMirroringsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1831,10 +2795,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.list(request)
-def test_insert_unary_rest_flattened():
+def test_list_rest_flattened():
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1843,7 +2807,7 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.PacketMirroringList()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "region": "sample2"}
@@ -1852,23 +2816,18 @@ def test_insert_unary_rest_flattened():
mock_args = dict(
project="project_value",
region="region_value",
- packet_mirroring_resource=compute.PacketMirroring(
- collector_ilb=compute.PacketMirroringForwardingRuleInfo(
- canonical_url="canonical_url_value"
- )
- ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.PacketMirroringList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.list(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1881,7 +2840,7 @@ def test_insert_unary_rest_flattened():
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_list_rest_flattened_error(transport: str = "rest"):
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1890,71 +2849,187 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertPacketMirroringRequest(),
+ client.list(
+ compute.ListPacketMirroringsRequest(),
project="project_value",
region="region_value",
- packet_mirroring_resource=compute.PacketMirroring(
- collector_ilb=compute.PacketMirroringForwardingRuleInfo(
- canonical_url="canonical_url_value"
- )
- ),
)
-def test_insert_unary_rest_error():
+def test_list_rest_pager(transport: str = "rest"):
client = PacketMirroringsClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
)
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.PacketMirroringList(
+ items=[
+ compute.PacketMirroring(),
+ compute.PacketMirroring(),
+ compute.PacketMirroring(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.PacketMirroringList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.PacketMirroringList(
+ items=[
+ compute.PacketMirroring(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.PacketMirroringList(
+ items=[
+ compute.PacketMirroring(),
+ compute.PacketMirroring(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.PacketMirroringList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.PacketMirroring) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
@pytest.mark.parametrize(
"request_type",
[
- compute.ListPacketMirroringsRequest,
+ compute.PatchPacketMirroringRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_patch_rest(request_type):
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "packet_mirroring": "sample3",
+ }
+ request_init["packet_mirroring_resource"] = {
+ "collector_ilb": {"canonical_url": "canonical_url_value", "url": "url_value"},
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable": "enable_value",
+ "filter": {
+ "I_p_protocols": ["I_p_protocols_value_1", "I_p_protocols_value_2"],
+ "cidr_ranges": ["cidr_ranges_value_1", "cidr_ranges_value_2"],
+ "direction": "direction_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "mirrored_resources": {
+ "instances": [{"canonical_url": "canonical_url_value", "url": "url_value"}],
+ "subnetworks": [
+ {"canonical_url": "canonical_url_value", "url": "url_value"}
+ ],
+ "tags": ["tags_value_1", "tags_value_2"],
+ },
+ "name": "name_value",
+ "network": {"canonical_url": "canonical_url_value", "url": "url_value"},
+ "priority": 898,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PacketMirroringList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PacketMirroringList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(request_type=compute.ListPacketMirroringsRequest):
+def test_patch_rest_required_fields(request_type=compute.PatchPacketMirroringRequest):
transport_class = transports.PacketMirroringsRestTransport
request_init = {}
+ request_init["packet_mirroring"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -1968,30 +3043,25 @@ def test_list_rest_required_fields(request_type=compute.ListPacketMirroringsRequ
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["packetMirroring"] = "packet_mirroring_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "packetMirroring" in jsonified_request
+ assert jsonified_request["packetMirroring"] == "packet_mirroring_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -2004,7 +3074,7 @@ def test_list_rest_required_fields(request_type=compute.ListPacketMirroringsRequ
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.PacketMirroringList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2015,42 +3085,37 @@ def test_list_rest_required_fields(request_type=compute.ListPacketMirroringsRequ
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PacketMirroringList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_rest_unset_required_fields():
transport = transports.PacketMirroringsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
+ "packetMirroring",
+ "packetMirroringResource",
"project",
"region",
)
@@ -2059,7 +3124,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.PacketMirroringsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2072,9 +3137,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.PacketMirroringsRestInterceptor, "post_list"
+ transports.PacketMirroringsRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.PacketMirroringsRestInterceptor, "pre_list"
+ transports.PacketMirroringsRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2089,19 +3154,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.PacketMirroringList.to_json(
- compute.PacketMirroringList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListPacketMirroringsRequest()
+ request = compute.PatchPacketMirroringRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.PacketMirroringList
+ post.return_value = compute.Operation
- client.list(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -2113,8 +3176,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListPacketMirroringsRequest
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchPacketMirroringRequest
):
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2122,7 +3185,36 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "packet_mirroring": "sample3",
+ }
+ request_init["packet_mirroring_resource"] = {
+ "collector_ilb": {"canonical_url": "canonical_url_value", "url": "url_value"},
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable": "enable_value",
+ "filter": {
+ "I_p_protocols": ["I_p_protocols_value_1", "I_p_protocols_value_2"],
+ "cidr_ranges": ["cidr_ranges_value_1", "cidr_ranges_value_2"],
+ "direction": "direction_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "mirrored_resources": {
+ "instances": [{"canonical_url": "canonical_url_value", "url": "url_value"}],
+ "subnetworks": [
+ {"canonical_url": "canonical_url_value", "url": "url_value"}
+ ],
+ "tags": ["tags_value_1", "tags_value_2"],
+ },
+ "name": "name_value",
+ "network": {"canonical_url": "canonical_url_value", "url": "url_value"},
+ "priority": 898,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2134,10 +3226,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch(request)
-def test_list_rest_flattened():
+def test_patch_rest_flattened():
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2146,40 +3238,50 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PacketMirroringList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "packet_mirroring": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ packet_mirroring="packet_mirroring_value",
+ packet_mirroring_resource=compute.PacketMirroring(
+ collector_ilb=compute.PacketMirroringForwardingRuleInfo(
+ canonical_url="canonical_url_value"
+ )
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PacketMirroringList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/packetMirrorings"
+ "%s/compute/v1/projects/{project}/regions/{region}/packetMirrorings/{packet_mirroring}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = PacketMirroringsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2188,73 +3290,24 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListPacketMirroringsRequest(),
+ client.patch(
+ compute.PatchPacketMirroringRequest(),
project="project_value",
region="region_value",
+ packet_mirroring="packet_mirroring_value",
+ packet_mirroring_resource=compute.PacketMirroring(
+ collector_ilb=compute.PacketMirroringForwardingRuleInfo(
+ canonical_url="canonical_url_value"
+ )
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_rest_error():
client = PacketMirroringsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.PacketMirroringList(
- items=[
- compute.PacketMirroring(),
- compute.PacketMirroring(),
- compute.PacketMirroring(),
- ],
- next_page_token="abc",
- ),
- compute.PacketMirroringList(
- items=[],
- next_page_token="def",
- ),
- compute.PacketMirroringList(
- items=[
- compute.PacketMirroring(),
- ],
- next_page_token="ghi",
- ),
- compute.PacketMirroringList(
- items=[
- compute.PacketMirroring(),
- compute.PacketMirroring(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.PacketMirroringList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.PacketMirroring) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
@@ -2340,28 +3393,6 @@ def test_patch_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_patch_unary_rest_required_fields(
@@ -3022,6 +4053,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = PacketMirroringsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_packet_mirrorings_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3059,6 +4103,14 @@ def test_packet_mirrorings_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_packet_mirrorings_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_projects.py b/tests/unit/gapic/compute_v1/test_projects.py
index d62e29f39..b1cd9eae1 100644
--- a/tests/unit/gapic/compute_v1/test_projects.py
+++ b/tests/unit/gapic/compute_v1/test_projects.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -512,7 +514,7 @@ def test_projects_client_client_options_credentials_file(
dict,
],
)
-def test_disable_xpn_host_unary_rest(request_type):
+def test_disable_xpn_host_rest(request_type):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -556,10 +558,10 @@ def test_disable_xpn_host_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.disable_xpn_host_unary(request)
+ response = client.disable_xpn_host(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -584,7 +586,7 @@ def test_disable_xpn_host_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_disable_xpn_host_unary_rest_required_fields(
+def test_disable_xpn_host_rest_required_fields(
request_type=compute.DisableXpnHostProjectRequest,
):
transport_class = transports.ProjectsRestTransport
@@ -649,14 +651,14 @@ def test_disable_xpn_host_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.disable_xpn_host_unary(request)
+ response = client.disable_xpn_host(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_disable_xpn_host_unary_rest_unset_required_fields():
+def test_disable_xpn_host_rest_unset_required_fields():
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -666,7 +668,7 @@ def test_disable_xpn_host_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_disable_xpn_host_unary_rest_interceptors(null_interceptor):
+def test_disable_xpn_host_rest_interceptors(null_interceptor):
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
@@ -704,7 +706,7 @@ def test_disable_xpn_host_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.disable_xpn_host_unary(
+ client.disable_xpn_host(
request,
metadata=[
("key", "val"),
@@ -716,7 +718,7 @@ def test_disable_xpn_host_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_disable_xpn_host_unary_rest_bad_request(
+def test_disable_xpn_host_rest_bad_request(
transport: str = "rest", request_type=compute.DisableXpnHostProjectRequest
):
client = ProjectsClient(
@@ -737,10 +739,10 @@ def test_disable_xpn_host_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.disable_xpn_host_unary(request)
+ client.disable_xpn_host(request)
-def test_disable_xpn_host_unary_rest_flattened():
+def test_disable_xpn_host_rest_flattened():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -768,7 +770,7 @@ def test_disable_xpn_host_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.disable_xpn_host_unary(**mock_args)
+ client.disable_xpn_host(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -780,7 +782,7 @@ def test_disable_xpn_host_unary_rest_flattened():
)
-def test_disable_xpn_host_unary_rest_flattened_error(transport: str = "rest"):
+def test_disable_xpn_host_rest_flattened_error(transport: str = "rest"):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -789,13 +791,13 @@ def test_disable_xpn_host_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.disable_xpn_host_unary(
+ client.disable_xpn_host(
compute.DisableXpnHostProjectRequest(),
project="project_value",
)
-def test_disable_xpn_host_unary_rest_error():
+def test_disable_xpn_host_rest_error():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -804,11 +806,11 @@ def test_disable_xpn_host_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DisableXpnResourceProjectRequest,
+ compute.DisableXpnHostProjectRequest,
dict,
],
)
-def test_disable_xpn_resource_unary_rest(request_type):
+def test_disable_xpn_host_unary_rest(request_type):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -816,9 +818,6 @@ def test_disable_xpn_resource_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request_init["projects_disable_xpn_resource_request_resource"] = {
- "xpn_resource": {"id": "id_value", "type_": "type__value"}
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -855,36 +854,14 @@ def test_disable_xpn_resource_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.disable_xpn_resource_unary(request)
+ response = client.disable_xpn_host_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_disable_xpn_resource_unary_rest_required_fields(
- request_type=compute.DisableXpnResourceProjectRequest,
+def test_disable_xpn_host_unary_rest_required_fields(
+ request_type=compute.DisableXpnHostProjectRequest,
):
transport_class = transports.ProjectsRestTransport
@@ -901,7 +878,7 @@ def test_disable_xpn_resource_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).disable_xpn_resource._get_unset_required_fields(jsonified_request)
+ ).disable_xpn_host._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -910,7 +887,7 @@ def test_disable_xpn_resource_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).disable_xpn_resource._get_unset_required_fields(jsonified_request)
+ ).disable_xpn_host._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -940,7 +917,6 @@ def test_disable_xpn_resource_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -949,32 +925,24 @@ def test_disable_xpn_resource_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.disable_xpn_resource_unary(request)
+ response = client.disable_xpn_host_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_disable_xpn_resource_unary_rest_unset_required_fields():
+def test_disable_xpn_host_unary_rest_unset_required_fields():
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.disable_xpn_resource._get_unset_required_fields({})
- assert set(unset_fields) == (
- set(("requestId",))
- & set(
- (
- "project",
- "projectsDisableXpnResourceRequestResource",
- )
- )
- )
+ unset_fields = transport.disable_xpn_host._get_unset_required_fields({})
+ assert set(unset_fields) == (set(("requestId",)) & set(("project",)))
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_disable_xpn_resource_unary_rest_interceptors(null_interceptor):
+def test_disable_xpn_host_unary_rest_interceptors(null_interceptor):
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
@@ -985,9 +953,9 @@ def test_disable_xpn_resource_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ProjectsRestInterceptor, "post_disable_xpn_resource"
+ transports.ProjectsRestInterceptor, "post_disable_xpn_host"
) as post, mock.patch.object(
- transports.ProjectsRestInterceptor, "pre_disable_xpn_resource"
+ transports.ProjectsRestInterceptor, "pre_disable_xpn_host"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1004,7 +972,7 @@ def test_disable_xpn_resource_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DisableXpnResourceProjectRequest()
+ request = compute.DisableXpnHostProjectRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1012,7 +980,7 @@ def test_disable_xpn_resource_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.disable_xpn_resource_unary(
+ client.disable_xpn_host_unary(
request,
metadata=[
("key", "val"),
@@ -1024,8 +992,8 @@ def test_disable_xpn_resource_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_disable_xpn_resource_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DisableXpnResourceProjectRequest
+def test_disable_xpn_host_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DisableXpnHostProjectRequest
):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1034,9 +1002,6 @@ def test_disable_xpn_resource_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request_init["projects_disable_xpn_resource_request_resource"] = {
- "xpn_resource": {"id": "id_value", "type_": "type__value"}
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1048,10 +1013,10 @@ def test_disable_xpn_resource_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.disable_xpn_resource_unary(request)
+ client.disable_xpn_host_unary(request)
-def test_disable_xpn_resource_unary_rest_flattened():
+def test_disable_xpn_host_unary_rest_flattened():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1068,9 +1033,6 @@ def test_disable_xpn_resource_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- projects_disable_xpn_resource_request_resource=compute.ProjectsDisableXpnResourceRequest(
- xpn_resource=compute.XpnResourceId(id="id_value")
- ),
)
mock_args.update(sample_request)
@@ -1082,20 +1044,19 @@ def test_disable_xpn_resource_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.disable_xpn_resource_unary(**mock_args)
+ client.disable_xpn_host_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/disableXpnResource"
- % client.transport._host,
+ "%s/compute/v1/projects/{project}/disableXpnHost" % client.transport._host,
args[1],
)
-def test_disable_xpn_resource_unary_rest_flattened_error(transport: str = "rest"):
+def test_disable_xpn_host_unary_rest_flattened_error(transport: str = "rest"):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1104,16 +1065,13 @@ def test_disable_xpn_resource_unary_rest_flattened_error(transport: str = "rest"
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.disable_xpn_resource_unary(
- compute.DisableXpnResourceProjectRequest(),
+ client.disable_xpn_host_unary(
+ compute.DisableXpnHostProjectRequest(),
project="project_value",
- projects_disable_xpn_resource_request_resource=compute.ProjectsDisableXpnResourceRequest(
- xpn_resource=compute.XpnResourceId(id="id_value")
- ),
)
-def test_disable_xpn_resource_unary_rest_error():
+def test_disable_xpn_host_unary_rest_error():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1122,11 +1080,11 @@ def test_disable_xpn_resource_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.EnableXpnHostProjectRequest,
+ compute.DisableXpnResourceProjectRequest,
dict,
],
)
-def test_enable_xpn_host_unary_rest(request_type):
+def test_disable_xpn_resource_rest(request_type):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1134,6 +1092,9 @@ def test_enable_xpn_host_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
+ request_init["projects_disable_xpn_resource_request_resource"] = {
+ "xpn_resource": {"id": "id_value", "type_": "type__value"}
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1170,10 +1131,10 @@ def test_enable_xpn_host_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.enable_xpn_host_unary(request)
+ response = client.disable_xpn_resource(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1198,8 +1159,8 @@ def test_enable_xpn_host_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_enable_xpn_host_unary_rest_required_fields(
- request_type=compute.EnableXpnHostProjectRequest,
+def test_disable_xpn_resource_rest_required_fields(
+ request_type=compute.DisableXpnResourceProjectRequest,
):
transport_class = transports.ProjectsRestTransport
@@ -1216,7 +1177,7 @@ def test_enable_xpn_host_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).enable_xpn_host._get_unset_required_fields(jsonified_request)
+ ).disable_xpn_resource._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1225,7 +1186,7 @@ def test_enable_xpn_host_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).enable_xpn_host._get_unset_required_fields(jsonified_request)
+ ).disable_xpn_resource._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -1255,6 +1216,7 @@ def test_enable_xpn_host_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1263,24 +1225,32 @@ def test_enable_xpn_host_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.enable_xpn_host_unary(request)
+ response = client.disable_xpn_resource(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_enable_xpn_host_unary_rest_unset_required_fields():
+def test_disable_xpn_resource_rest_unset_required_fields():
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.enable_xpn_host._get_unset_required_fields({})
- assert set(unset_fields) == (set(("requestId",)) & set(("project",)))
+ unset_fields = transport.disable_xpn_resource._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "projectsDisableXpnResourceRequestResource",
+ )
+ )
+ )
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_enable_xpn_host_unary_rest_interceptors(null_interceptor):
+def test_disable_xpn_resource_rest_interceptors(null_interceptor):
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
@@ -1291,9 +1261,9 @@ def test_enable_xpn_host_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ProjectsRestInterceptor, "post_enable_xpn_host"
+ transports.ProjectsRestInterceptor, "post_disable_xpn_resource"
) as post, mock.patch.object(
- transports.ProjectsRestInterceptor, "pre_enable_xpn_host"
+ transports.ProjectsRestInterceptor, "pre_disable_xpn_resource"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1310,7 +1280,7 @@ def test_enable_xpn_host_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.EnableXpnHostProjectRequest()
+ request = compute.DisableXpnResourceProjectRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1318,7 +1288,7 @@ def test_enable_xpn_host_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.enable_xpn_host_unary(
+ client.disable_xpn_resource(
request,
metadata=[
("key", "val"),
@@ -1330,8 +1300,8 @@ def test_enable_xpn_host_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_enable_xpn_host_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.EnableXpnHostProjectRequest
+def test_disable_xpn_resource_rest_bad_request(
+ transport: str = "rest", request_type=compute.DisableXpnResourceProjectRequest
):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1340,6 +1310,9 @@ def test_enable_xpn_host_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
+ request_init["projects_disable_xpn_resource_request_resource"] = {
+ "xpn_resource": {"id": "id_value", "type_": "type__value"}
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1351,10 +1324,10 @@ def test_enable_xpn_host_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.enable_xpn_host_unary(request)
+ client.disable_xpn_resource(request)
-def test_enable_xpn_host_unary_rest_flattened():
+def test_disable_xpn_resource_rest_flattened():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1371,6 +1344,9 @@ def test_enable_xpn_host_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ projects_disable_xpn_resource_request_resource=compute.ProjectsDisableXpnResourceRequest(
+ xpn_resource=compute.XpnResourceId(id="id_value")
+ ),
)
mock_args.update(sample_request)
@@ -1382,19 +1358,20 @@ def test_enable_xpn_host_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.enable_xpn_host_unary(**mock_args)
+ client.disable_xpn_resource(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/enableXpnHost" % client.transport._host,
+ "%s/compute/v1/projects/{project}/disableXpnResource"
+ % client.transport._host,
args[1],
)
-def test_enable_xpn_host_unary_rest_flattened_error(transport: str = "rest"):
+def test_disable_xpn_resource_rest_flattened_error(transport: str = "rest"):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1403,13 +1380,16 @@ def test_enable_xpn_host_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.enable_xpn_host_unary(
- compute.EnableXpnHostProjectRequest(),
+ client.disable_xpn_resource(
+ compute.DisableXpnResourceProjectRequest(),
project="project_value",
+ projects_disable_xpn_resource_request_resource=compute.ProjectsDisableXpnResourceRequest(
+ xpn_resource=compute.XpnResourceId(id="id_value")
+ ),
)
-def test_enable_xpn_host_unary_rest_error():
+def test_disable_xpn_resource_rest_error():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1418,11 +1398,11 @@ def test_enable_xpn_host_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.EnableXpnResourceProjectRequest,
+ compute.DisableXpnResourceProjectRequest,
dict,
],
)
-def test_enable_xpn_resource_unary_rest(request_type):
+def test_disable_xpn_resource_unary_rest(request_type):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1430,7 +1410,7 @@ def test_enable_xpn_resource_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request_init["projects_enable_xpn_resource_request_resource"] = {
+ request_init["projects_disable_xpn_resource_request_resource"] = {
"xpn_resource": {"id": "id_value", "type_": "type__value"}
}
request = request_type(request_init)
@@ -1469,36 +1449,14 @@ def test_enable_xpn_resource_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.enable_xpn_resource_unary(request)
+ response = client.disable_xpn_resource_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_enable_xpn_resource_unary_rest_required_fields(
- request_type=compute.EnableXpnResourceProjectRequest,
+def test_disable_xpn_resource_unary_rest_required_fields(
+ request_type=compute.DisableXpnResourceProjectRequest,
):
transport_class = transports.ProjectsRestTransport
@@ -1515,7 +1473,7 @@ def test_enable_xpn_resource_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).enable_xpn_resource._get_unset_required_fields(jsonified_request)
+ ).disable_xpn_resource._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1524,7 +1482,7 @@ def test_enable_xpn_resource_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).enable_xpn_resource._get_unset_required_fields(jsonified_request)
+ ).disable_xpn_resource._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -1563,32 +1521,32 @@ def test_enable_xpn_resource_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.enable_xpn_resource_unary(request)
+ response = client.disable_xpn_resource_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_enable_xpn_resource_unary_rest_unset_required_fields():
+def test_disable_xpn_resource_unary_rest_unset_required_fields():
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.enable_xpn_resource._get_unset_required_fields({})
+ unset_fields = transport.disable_xpn_resource._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"project",
- "projectsEnableXpnResourceRequestResource",
+ "projectsDisableXpnResourceRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_enable_xpn_resource_unary_rest_interceptors(null_interceptor):
+def test_disable_xpn_resource_unary_rest_interceptors(null_interceptor):
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
@@ -1599,9 +1557,9 @@ def test_enable_xpn_resource_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ProjectsRestInterceptor, "post_enable_xpn_resource"
+ transports.ProjectsRestInterceptor, "post_disable_xpn_resource"
) as post, mock.patch.object(
- transports.ProjectsRestInterceptor, "pre_enable_xpn_resource"
+ transports.ProjectsRestInterceptor, "pre_disable_xpn_resource"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1618,7 +1576,7 @@ def test_enable_xpn_resource_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.EnableXpnResourceProjectRequest()
+ request = compute.DisableXpnResourceProjectRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1626,7 +1584,7 @@ def test_enable_xpn_resource_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.enable_xpn_resource_unary(
+ client.disable_xpn_resource_unary(
request,
metadata=[
("key", "val"),
@@ -1638,8 +1596,8 @@ def test_enable_xpn_resource_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_enable_xpn_resource_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.EnableXpnResourceProjectRequest
+def test_disable_xpn_resource_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DisableXpnResourceProjectRequest
):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1648,7 +1606,7 @@ def test_enable_xpn_resource_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request_init["projects_enable_xpn_resource_request_resource"] = {
+ request_init["projects_disable_xpn_resource_request_resource"] = {
"xpn_resource": {"id": "id_value", "type_": "type__value"}
}
request = request_type(request_init)
@@ -1662,10 +1620,10 @@ def test_enable_xpn_resource_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.enable_xpn_resource_unary(request)
+ client.disable_xpn_resource_unary(request)
-def test_enable_xpn_resource_unary_rest_flattened():
+def test_disable_xpn_resource_unary_rest_flattened():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1682,7 +1640,7 @@ def test_enable_xpn_resource_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- projects_enable_xpn_resource_request_resource=compute.ProjectsEnableXpnResourceRequest(
+ projects_disable_xpn_resource_request_resource=compute.ProjectsDisableXpnResourceRequest(
xpn_resource=compute.XpnResourceId(id="id_value")
),
)
@@ -1696,20 +1654,20 @@ def test_enable_xpn_resource_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.enable_xpn_resource_unary(**mock_args)
+ client.disable_xpn_resource_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/enableXpnResource"
+ "%s/compute/v1/projects/{project}/disableXpnResource"
% client.transport._host,
args[1],
)
-def test_enable_xpn_resource_unary_rest_flattened_error(transport: str = "rest"):
+def test_disable_xpn_resource_unary_rest_flattened_error(transport: str = "rest"):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1718,16 +1676,16 @@ def test_enable_xpn_resource_unary_rest_flattened_error(transport: str = "rest")
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.enable_xpn_resource_unary(
- compute.EnableXpnResourceProjectRequest(),
+ client.disable_xpn_resource_unary(
+ compute.DisableXpnResourceProjectRequest(),
project="project_value",
- projects_enable_xpn_resource_request_resource=compute.ProjectsEnableXpnResourceRequest(
+ projects_disable_xpn_resource_request_resource=compute.ProjectsDisableXpnResourceRequest(
xpn_resource=compute.XpnResourceId(id="id_value")
),
)
-def test_enable_xpn_resource_unary_rest_error():
+def test_disable_xpn_resource_unary_rest_error():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1736,11 +1694,11 @@ def test_enable_xpn_resource_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetProjectRequest,
+ compute.EnableXpnHostProjectRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_enable_xpn_host_rest(request_type):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1753,42 +1711,68 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Project(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
- default_network_tier="default_network_tier_value",
- default_service_account="default_service_account_value",
description="description_value",
- enabled_features=["enabled_features_value"],
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- xpn_project_status="xpn_project_status_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Project.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.enable_xpn_host(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Project)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
- assert response.default_network_tier == "default_network_tier_value"
- assert response.default_service_account == "default_service_account_value"
assert response.description == "description_value"
- assert response.enabled_features == ["enabled_features_value"]
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.xpn_project_status == "xpn_project_status_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_rest_required_fields(request_type=compute.GetProjectRequest):
+def test_enable_xpn_host_rest_required_fields(
+ request_type=compute.EnableXpnHostProjectRequest,
+):
transport_class = transports.ProjectsRestTransport
request_init = {}
@@ -1804,7 +1788,7 @@ def test_get_rest_required_fields(request_type=compute.GetProjectRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).enable_xpn_host._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1813,7 +1797,9 @@ def test_get_rest_required_fields(request_type=compute.GetProjectRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).enable_xpn_host._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1827,7 +1813,7 @@ def test_get_rest_required_fields(request_type=compute.GetProjectRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Project()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1838,35 +1824,35 @@ def test_get_rest_required_fields(request_type=compute.GetProjectRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Project.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.enable_xpn_host(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_enable_xpn_host_rest_unset_required_fields():
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
- assert set(unset_fields) == (set(()) & set(("project",)))
+ unset_fields = transport.enable_xpn_host._get_unset_required_fields({})
+ assert set(unset_fields) == (set(("requestId",)) & set(("project",)))
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_enable_xpn_host_rest_interceptors(null_interceptor):
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
@@ -1877,9 +1863,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ProjectsRestInterceptor, "post_get"
+ transports.ProjectsRestInterceptor, "post_enable_xpn_host"
) as post, mock.patch.object(
- transports.ProjectsRestInterceptor, "pre_get"
+ transports.ProjectsRestInterceptor, "pre_enable_xpn_host"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1894,17 +1880,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Project.to_json(compute.Project())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetProjectRequest()
+ request = compute.EnableXpnHostProjectRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Project
+ post.return_value = compute.Operation
- client.get(
+ client.enable_xpn_host(
request,
metadata=[
("key", "val"),
@@ -1916,8 +1902,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetProjectRequest
+def test_enable_xpn_host_rest_bad_request(
+ transport: str = "rest", request_type=compute.EnableXpnHostProjectRequest
):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1937,10 +1923,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.enable_xpn_host(request)
-def test_get_rest_flattened():
+def test_enable_xpn_host_rest_flattened():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1949,7 +1935,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Project()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1"}
@@ -1963,23 +1949,24 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Project.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.enable_xpn_host(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}" % client.transport._host, args[1]
+ "%s/compute/v1/projects/{project}/enableXpnHost" % client.transport._host,
+ args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_enable_xpn_host_rest_flattened_error(transport: str = "rest"):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1988,13 +1975,13 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetProjectRequest(),
+ client.enable_xpn_host(
+ compute.EnableXpnHostProjectRequest(),
project="project_value",
)
-def test_get_rest_error():
+def test_enable_xpn_host_rest_error():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2003,11 +1990,11 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetXpnHostProjectRequest,
+ compute.EnableXpnHostProjectRequest,
dict,
],
)
-def test_get_xpn_host_rest(request_type):
+def test_enable_xpn_host_unary_rest(request_type):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2020,43 +2007,45 @@ def test_get_xpn_host_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Project(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
- default_network_tier="default_network_tier_value",
- default_service_account="default_service_account_value",
description="description_value",
- enabled_features=["enabled_features_value"],
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- xpn_project_status="xpn_project_status_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Project.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_xpn_host(request)
+ response = client.enable_xpn_host_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Project)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.default_network_tier == "default_network_tier_value"
- assert response.default_service_account == "default_service_account_value"
- assert response.description == "description_value"
- assert response.enabled_features == ["enabled_features_value"]
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.self_link == "self_link_value"
- assert response.xpn_project_status == "xpn_project_status_value"
+ assert isinstance(response, compute.Operation)
-def test_get_xpn_host_rest_required_fields(
- request_type=compute.GetXpnHostProjectRequest,
+def test_enable_xpn_host_unary_rest_required_fields(
+ request_type=compute.EnableXpnHostProjectRequest,
):
transport_class = transports.ProjectsRestTransport
@@ -2073,7 +2062,7 @@ def test_get_xpn_host_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_xpn_host._get_unset_required_fields(jsonified_request)
+ ).enable_xpn_host._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2082,7 +2071,9 @@ def test_get_xpn_host_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_xpn_host._get_unset_required_fields(jsonified_request)
+ ).enable_xpn_host._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2096,7 +2087,7 @@ def test_get_xpn_host_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Project()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2107,35 +2098,35 @@ def test_get_xpn_host_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Project.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_xpn_host(request)
+ response = client.enable_xpn_host_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_xpn_host_rest_unset_required_fields():
+def test_enable_xpn_host_unary_rest_unset_required_fields():
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_xpn_host._get_unset_required_fields({})
- assert set(unset_fields) == (set(()) & set(("project",)))
+ unset_fields = transport.enable_xpn_host._get_unset_required_fields({})
+ assert set(unset_fields) == (set(("requestId",)) & set(("project",)))
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_xpn_host_rest_interceptors(null_interceptor):
+def test_enable_xpn_host_unary_rest_interceptors(null_interceptor):
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
@@ -2146,9 +2137,9 @@ def test_get_xpn_host_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ProjectsRestInterceptor, "post_get_xpn_host"
+ transports.ProjectsRestInterceptor, "post_enable_xpn_host"
) as post, mock.patch.object(
- transports.ProjectsRestInterceptor, "pre_get_xpn_host"
+ transports.ProjectsRestInterceptor, "pre_enable_xpn_host"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2163,17 +2154,17 @@ def test_get_xpn_host_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Project.to_json(compute.Project())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetXpnHostProjectRequest()
+ request = compute.EnableXpnHostProjectRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Project
+ post.return_value = compute.Operation
- client.get_xpn_host(
+ client.enable_xpn_host_unary(
request,
metadata=[
("key", "val"),
@@ -2185,8 +2176,8 @@ def test_get_xpn_host_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_xpn_host_rest_bad_request(
- transport: str = "rest", request_type=compute.GetXpnHostProjectRequest
+def test_enable_xpn_host_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.EnableXpnHostProjectRequest
):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2206,10 +2197,10 @@ def test_get_xpn_host_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_xpn_host(request)
+ client.enable_xpn_host_unary(request)
-def test_get_xpn_host_rest_flattened():
+def test_enable_xpn_host_unary_rest_flattened():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2218,7 +2209,7 @@ def test_get_xpn_host_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Project()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1"}
@@ -2232,24 +2223,24 @@ def test_get_xpn_host_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Project.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_xpn_host(**mock_args)
+ client.enable_xpn_host_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/getXpnHost" % client.transport._host,
+ "%s/compute/v1/projects/{project}/enableXpnHost" % client.transport._host,
args[1],
)
-def test_get_xpn_host_rest_flattened_error(transport: str = "rest"):
+def test_enable_xpn_host_unary_rest_flattened_error(transport: str = "rest"):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2258,13 +2249,13 @@ def test_get_xpn_host_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_xpn_host(
- compute.GetXpnHostProjectRequest(),
+ client.enable_xpn_host_unary(
+ compute.EnableXpnHostProjectRequest(),
project="project_value",
)
-def test_get_xpn_host_rest_error():
+def test_enable_xpn_host_unary_rest_error():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2273,11 +2264,11 @@ def test_get_xpn_host_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetXpnResourcesProjectsRequest,
+ compute.EnableXpnResourceProjectRequest,
dict,
],
)
-def test_get_xpn_resources_rest(request_type):
+def test_enable_xpn_resource_rest(request_type):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2285,39 +2276,2832 @@ def test_get_xpn_resources_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
+ request_init["projects_enable_xpn_resource_request_resource"] = {
+ "xpn_resource": {"id": "id_value", "type_": "type__value"}
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ProjectsGetXpnResources(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ProjectsGetXpnResources.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_xpn_resources(request)
+ response = client.enable_xpn_resource(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.GetXpnResourcesPager)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
-
-
-def test_get_xpn_resources_rest_required_fields(
- request_type=compute.GetXpnResourcesProjectsRequest,
-):
- transport_class = transports.ProjectsRestTransport
-
- request_init = {}
- request_init["project"] = ""
- request = request_type(request_init)
- jsonified_request = json.loads(
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_enable_xpn_resource_rest_required_fields(
+ request_type=compute.EnableXpnResourceProjectRequest,
+):
+ transport_class = transports.ProjectsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).enable_xpn_resource._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).enable_xpn_resource._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.enable_xpn_resource(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_enable_xpn_resource_rest_unset_required_fields():
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.enable_xpn_resource._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "projectsEnableXpnResourceRequestResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_enable_xpn_resource_rest_interceptors(null_interceptor):
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
+ )
+ client = ProjectsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ProjectsRestInterceptor, "post_enable_xpn_resource"
+ ) as post, mock.patch.object(
+ transports.ProjectsRestInterceptor, "pre_enable_xpn_resource"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.EnableXpnResourceProjectRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.enable_xpn_resource(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_enable_xpn_resource_rest_bad_request(
+ transport: str = "rest", request_type=compute.EnableXpnResourceProjectRequest
+):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["projects_enable_xpn_resource_request_resource"] = {
+ "xpn_resource": {"id": "id_value", "type_": "type__value"}
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.enable_xpn_resource(request)
+
+
+def test_enable_xpn_resource_rest_flattened():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ projects_enable_xpn_resource_request_resource=compute.ProjectsEnableXpnResourceRequest(
+ xpn_resource=compute.XpnResourceId(id="id_value")
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.enable_xpn_resource(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/enableXpnResource"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_enable_xpn_resource_rest_flattened_error(transport: str = "rest"):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.enable_xpn_resource(
+ compute.EnableXpnResourceProjectRequest(),
+ project="project_value",
+ projects_enable_xpn_resource_request_resource=compute.ProjectsEnableXpnResourceRequest(
+ xpn_resource=compute.XpnResourceId(id="id_value")
+ ),
+ )
+
+
+def test_enable_xpn_resource_rest_error():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.EnableXpnResourceProjectRequest,
+ dict,
+ ],
+)
+def test_enable_xpn_resource_unary_rest(request_type):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["projects_enable_xpn_resource_request_resource"] = {
+ "xpn_resource": {"id": "id_value", "type_": "type__value"}
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.enable_xpn_resource_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_enable_xpn_resource_unary_rest_required_fields(
+ request_type=compute.EnableXpnResourceProjectRequest,
+):
+ transport_class = transports.ProjectsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).enable_xpn_resource._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).enable_xpn_resource._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.enable_xpn_resource_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_enable_xpn_resource_unary_rest_unset_required_fields():
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.enable_xpn_resource._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "projectsEnableXpnResourceRequestResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_enable_xpn_resource_unary_rest_interceptors(null_interceptor):
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
+ )
+ client = ProjectsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ProjectsRestInterceptor, "post_enable_xpn_resource"
+ ) as post, mock.patch.object(
+ transports.ProjectsRestInterceptor, "pre_enable_xpn_resource"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.EnableXpnResourceProjectRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.enable_xpn_resource_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_enable_xpn_resource_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.EnableXpnResourceProjectRequest
+):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["projects_enable_xpn_resource_request_resource"] = {
+ "xpn_resource": {"id": "id_value", "type_": "type__value"}
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.enable_xpn_resource_unary(request)
+
+
+def test_enable_xpn_resource_unary_rest_flattened():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ projects_enable_xpn_resource_request_resource=compute.ProjectsEnableXpnResourceRequest(
+ xpn_resource=compute.XpnResourceId(id="id_value")
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.enable_xpn_resource_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/enableXpnResource"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_enable_xpn_resource_unary_rest_flattened_error(transport: str = "rest"):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.enable_xpn_resource_unary(
+ compute.EnableXpnResourceProjectRequest(),
+ project="project_value",
+ projects_enable_xpn_resource_request_resource=compute.ProjectsEnableXpnResourceRequest(
+ xpn_resource=compute.XpnResourceId(id="id_value")
+ ),
+ )
+
+
+def test_enable_xpn_resource_unary_rest_error():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetProjectRequest,
+ dict,
+ ],
+)
+def test_get_rest(request_type):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Project(
+ creation_timestamp="creation_timestamp_value",
+ default_network_tier="default_network_tier_value",
+ default_service_account="default_service_account_value",
+ description="description_value",
+ enabled_features=["enabled_features_value"],
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ self_link="self_link_value",
+ xpn_project_status="xpn_project_status_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Project.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Project)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.default_network_tier == "default_network_tier_value"
+ assert response.default_service_account == "default_service_account_value"
+ assert response.description == "description_value"
+ assert response.enabled_features == ["enabled_features_value"]
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.self_link == "self_link_value"
+ assert response.xpn_project_status == "xpn_project_status_value"
+
+
+def test_get_rest_required_fields(request_type=compute.GetProjectRequest):
+ transport_class = transports.ProjectsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Project()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Project.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (set(()) & set(("project",)))
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
+ )
+ client = ProjectsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ProjectsRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.ProjectsRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Project.to_json(compute.Project())
+
+ request = compute.GetProjectRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Project
+
+ client.get(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetProjectRequest
+):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Project()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Project.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}" % client.transport._host, args[1]
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetProjectRequest(),
+ project="project_value",
+ )
+
+
+def test_get_rest_error():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetXpnHostProjectRequest,
+ dict,
+ ],
+)
+def test_get_xpn_host_rest(request_type):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Project(
+ creation_timestamp="creation_timestamp_value",
+ default_network_tier="default_network_tier_value",
+ default_service_account="default_service_account_value",
+ description="description_value",
+ enabled_features=["enabled_features_value"],
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ self_link="self_link_value",
+ xpn_project_status="xpn_project_status_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Project.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_xpn_host(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Project)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.default_network_tier == "default_network_tier_value"
+ assert response.default_service_account == "default_service_account_value"
+ assert response.description == "description_value"
+ assert response.enabled_features == ["enabled_features_value"]
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.self_link == "self_link_value"
+ assert response.xpn_project_status == "xpn_project_status_value"
+
+
+def test_get_xpn_host_rest_required_fields(
+ request_type=compute.GetXpnHostProjectRequest,
+):
+ transport_class = transports.ProjectsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_xpn_host._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_xpn_host._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Project()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Project.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_xpn_host(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_xpn_host_rest_unset_required_fields():
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_xpn_host._get_unset_required_fields({})
+ assert set(unset_fields) == (set(()) & set(("project",)))
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_xpn_host_rest_interceptors(null_interceptor):
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
+ )
+ client = ProjectsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ProjectsRestInterceptor, "post_get_xpn_host"
+ ) as post, mock.patch.object(
+ transports.ProjectsRestInterceptor, "pre_get_xpn_host"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Project.to_json(compute.Project())
+
+ request = compute.GetXpnHostProjectRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Project
+
+ client.get_xpn_host(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_xpn_host_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetXpnHostProjectRequest
+):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_xpn_host(request)
+
+
+def test_get_xpn_host_rest_flattened():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Project()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Project.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_xpn_host(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/getXpnHost" % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_xpn_host_rest_flattened_error(transport: str = "rest"):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_xpn_host(
+ compute.GetXpnHostProjectRequest(),
+ project="project_value",
+ )
+
+
+def test_get_xpn_host_rest_error():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetXpnResourcesProjectsRequest,
+ dict,
+ ],
+)
+def test_get_xpn_resources_rest(request_type):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ProjectsGetXpnResources(
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ProjectsGetXpnResources.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_xpn_resources(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.GetXpnResourcesPager)
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+
+
+def test_get_xpn_resources_rest_required_fields(
+ request_type=compute.GetXpnResourcesProjectsRequest,
+):
+ transport_class = transports.ProjectsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_xpn_resources._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_xpn_resources._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ProjectsGetXpnResources()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ProjectsGetXpnResources.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_xpn_resources(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_xpn_resources_rest_unset_required_fields():
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_xpn_resources._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_xpn_resources_rest_interceptors(null_interceptor):
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
+ )
+ client = ProjectsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ProjectsRestInterceptor, "post_get_xpn_resources"
+ ) as post, mock.patch.object(
+ transports.ProjectsRestInterceptor, "pre_get_xpn_resources"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.ProjectsGetXpnResources.to_json(
+ compute.ProjectsGetXpnResources()
+ )
+
+ request = compute.GetXpnResourcesProjectsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.ProjectsGetXpnResources
+
+ client.get_xpn_resources(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_xpn_resources_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetXpnResourcesProjectsRequest
+):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_xpn_resources(request)
+
+
+def test_get_xpn_resources_rest_flattened():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ProjectsGetXpnResources()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ProjectsGetXpnResources.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_xpn_resources(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/getXpnResources" % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_xpn_resources_rest_flattened_error(transport: str = "rest"):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_xpn_resources(
+ compute.GetXpnResourcesProjectsRequest(),
+ project="project_value",
+ )
+
+
+def test_get_xpn_resources_rest_pager(transport: str = "rest"):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.ProjectsGetXpnResources(
+ resources=[
+ compute.XpnResourceId(),
+ compute.XpnResourceId(),
+ compute.XpnResourceId(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.ProjectsGetXpnResources(
+ resources=[],
+ next_page_token="def",
+ ),
+ compute.ProjectsGetXpnResources(
+ resources=[
+ compute.XpnResourceId(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.ProjectsGetXpnResources(
+ resources=[
+ compute.XpnResourceId(),
+ compute.XpnResourceId(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.ProjectsGetXpnResources.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.get_xpn_resources(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.XpnResourceId) for i in results)
+
+ pages = list(client.get_xpn_resources(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListXpnHostsProjectsRequest,
+ dict,
+ ],
+)
+def test_list_xpn_hosts_rest(request_type):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["projects_list_xpn_hosts_request_resource"] = {
+ "organization": "organization_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.XpnHostList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.XpnHostList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list_xpn_hosts(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListXpnHostsPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_xpn_hosts_rest_required_fields(
+ request_type=compute.ListXpnHostsProjectsRequest,
+):
+ transport_class = transports.ProjectsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_xpn_hosts._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_xpn_hosts._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.XpnHostList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.XpnHostList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list_xpn_hosts(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_xpn_hosts_rest_unset_required_fields():
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list_xpn_hosts._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "projectsListXpnHostsRequestResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_xpn_hosts_rest_interceptors(null_interceptor):
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
+ )
+ client = ProjectsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ProjectsRestInterceptor, "post_list_xpn_hosts"
+ ) as post, mock.patch.object(
+ transports.ProjectsRestInterceptor, "pre_list_xpn_hosts"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.XpnHostList.to_json(compute.XpnHostList())
+
+ request = compute.ListXpnHostsProjectsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.XpnHostList
+
+ client.list_xpn_hosts(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_xpn_hosts_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListXpnHostsProjectsRequest
+):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["projects_list_xpn_hosts_request_resource"] = {
+ "organization": "organization_value"
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list_xpn_hosts(request)
+
+
+def test_list_xpn_hosts_rest_flattened():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.XpnHostList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ projects_list_xpn_hosts_request_resource=compute.ProjectsListXpnHostsRequest(
+ organization="organization_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.XpnHostList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list_xpn_hosts(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/listXpnHosts" % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_xpn_hosts_rest_flattened_error(transport: str = "rest"):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list_xpn_hosts(
+ compute.ListXpnHostsProjectsRequest(),
+ project="project_value",
+ projects_list_xpn_hosts_request_resource=compute.ProjectsListXpnHostsRequest(
+ organization="organization_value"
+ ),
+ )
+
+
+def test_list_xpn_hosts_rest_pager(transport: str = "rest"):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.XpnHostList(
+ items=[
+ compute.Project(),
+ compute.Project(),
+ compute.Project(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.XpnHostList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.XpnHostList(
+ items=[
+ compute.Project(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.XpnHostList(
+ items=[
+ compute.Project(),
+ compute.Project(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.XpnHostList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+ sample_request[
+ "projects_list_xpn_hosts_request_resource"
+ ] = compute.ProjectsListXpnHostsRequest(organization="organization_value")
+
+ pager = client.list_xpn_hosts(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Project) for i in results)
+
+ pages = list(client.list_xpn_hosts(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.MoveDiskProjectRequest,
+ dict,
+ ],
+)
+def test_move_disk_rest(request_type):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["disk_move_request_resource"] = {
+ "destination_zone": "destination_zone_value",
+ "target_disk": "target_disk_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.move_disk(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_move_disk_rest_required_fields(request_type=compute.MoveDiskProjectRequest):
+ transport_class = transports.ProjectsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).move_disk._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).move_disk._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.move_disk(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_move_disk_rest_unset_required_fields():
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.move_disk._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "diskMoveRequestResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_move_disk_rest_interceptors(null_interceptor):
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
+ )
+ client = ProjectsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ProjectsRestInterceptor, "post_move_disk"
+ ) as post, mock.patch.object(
+ transports.ProjectsRestInterceptor, "pre_move_disk"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.MoveDiskProjectRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.move_disk(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_move_disk_rest_bad_request(
+ transport: str = "rest", request_type=compute.MoveDiskProjectRequest
+):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["disk_move_request_resource"] = {
+ "destination_zone": "destination_zone_value",
+ "target_disk": "target_disk_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.move_disk(request)
+
+
+def test_move_disk_rest_flattened():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ disk_move_request_resource=compute.DiskMoveRequest(
+ destination_zone="destination_zone_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.move_disk(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/moveDisk" % client.transport._host,
+ args[1],
+ )
+
+
+def test_move_disk_rest_flattened_error(transport: str = "rest"):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.move_disk(
+ compute.MoveDiskProjectRequest(),
+ project="project_value",
+ disk_move_request_resource=compute.DiskMoveRequest(
+ destination_zone="destination_zone_value"
+ ),
+ )
+
+
+def test_move_disk_rest_error():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.MoveDiskProjectRequest,
+ dict,
+ ],
+)
+def test_move_disk_unary_rest(request_type):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["disk_move_request_resource"] = {
+ "destination_zone": "destination_zone_value",
+ "target_disk": "target_disk_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.move_disk_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_move_disk_unary_rest_required_fields(
+ request_type=compute.MoveDiskProjectRequest,
+):
+ transport_class = transports.ProjectsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).move_disk._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).move_disk._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.move_disk_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_move_disk_unary_rest_unset_required_fields():
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.move_disk._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "diskMoveRequestResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_move_disk_unary_rest_interceptors(null_interceptor):
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
+ )
+ client = ProjectsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ProjectsRestInterceptor, "post_move_disk"
+ ) as post, mock.patch.object(
+ transports.ProjectsRestInterceptor, "pre_move_disk"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.MoveDiskProjectRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.move_disk_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_move_disk_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.MoveDiskProjectRequest
+):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["disk_move_request_resource"] = {
+ "destination_zone": "destination_zone_value",
+ "target_disk": "target_disk_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.move_disk_unary(request)
+
+
+def test_move_disk_unary_rest_flattened():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ disk_move_request_resource=compute.DiskMoveRequest(
+ destination_zone="destination_zone_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.move_disk_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/moveDisk" % client.transport._host,
+ args[1],
+ )
+
+
+def test_move_disk_unary_rest_flattened_error(transport: str = "rest"):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.move_disk_unary(
+ compute.MoveDiskProjectRequest(),
+ project="project_value",
+ disk_move_request_resource=compute.DiskMoveRequest(
+ destination_zone="destination_zone_value"
+ ),
+ )
+
+
+def test_move_disk_unary_rest_error():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.MoveInstanceProjectRequest,
+ dict,
+ ],
+)
+def test_move_instance_rest(request_type):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["instance_move_request_resource"] = {
+ "destination_zone": "destination_zone_value",
+ "target_instance": "target_instance_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.move_instance(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_move_instance_rest_required_fields(
+ request_type=compute.MoveInstanceProjectRequest,
+):
+ transport_class = transports.ProjectsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).move_instance._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).move_instance._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.move_instance(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_move_instance_rest_unset_required_fields():
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.move_instance._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceMoveRequestResource",
+ "project",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_move_instance_rest_interceptors(null_interceptor):
+ transport = transports.ProjectsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
+ )
+ client = ProjectsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ProjectsRestInterceptor, "post_move_instance"
+ ) as post, mock.patch.object(
+ transports.ProjectsRestInterceptor, "pre_move_instance"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.MoveInstanceProjectRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.move_instance(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_move_instance_rest_bad_request(
+ transport: str = "rest", request_type=compute.MoveInstanceProjectRequest
+):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["instance_move_request_resource"] = {
+ "destination_zone": "destination_zone_value",
+ "target_instance": "target_instance_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.move_instance(request)
+
+
+def test_move_instance_rest_flattened():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ instance_move_request_resource=compute.InstanceMoveRequest(
+ destination_zone="destination_zone_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.move_instance(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/moveInstance" % client.transport._host,
+ args[1],
+ )
+
+
+def test_move_instance_rest_flattened_error(transport: str = "rest"):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.move_instance(
+ compute.MoveInstanceProjectRequest(),
+ project="project_value",
+ instance_move_request_resource=compute.InstanceMoveRequest(
+ destination_zone="destination_zone_value"
+ ),
+ )
+
+
+def test_move_instance_rest_error():
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.MoveInstanceProjectRequest,
+ dict,
+ ],
+)
+def test_move_instance_unary_rest(request_type):
+ client = ProjectsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["instance_move_request_resource"] = {
+ "destination_zone": "destination_zone_value",
+ "target_instance": "target_instance_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.move_instance_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_move_instance_unary_rest_required_fields(
+ request_type=compute.MoveInstanceProjectRequest,
+):
+ transport_class = transports.ProjectsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
request_type.to_json(
request, including_default_value_fields=False, use_integers_for_enums=False
)
@@ -2327,7 +5111,7 @@ def test_get_xpn_resources_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_xpn_resources._get_unset_required_fields(jsonified_request)
+ ).move_instance._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2336,17 +5120,9 @@ def test_get_xpn_resources_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_xpn_resources._get_unset_required_fields(jsonified_request)
+ ).move_instance._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2360,7 +5136,7 @@ def test_get_xpn_resources_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.ProjectsGetXpnResources()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2371,46 +5147,44 @@ def test_get_xpn_resources_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ProjectsGetXpnResources.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_xpn_resources(request)
+ response = client.move_instance_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_xpn_resources_rest_unset_required_fields():
+def test_move_instance_unary_rest_unset_required_fields():
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_xpn_resources._get_unset_required_fields({})
+ unset_fields = transport.move_instance._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "instanceMoveRequestResource",
+ "project",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_xpn_resources_rest_interceptors(null_interceptor):
+def test_move_instance_unary_rest_interceptors(null_interceptor):
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
@@ -2421,9 +5195,9 @@ def test_get_xpn_resources_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ProjectsRestInterceptor, "post_get_xpn_resources"
+ transports.ProjectsRestInterceptor, "post_move_instance"
) as post, mock.patch.object(
- transports.ProjectsRestInterceptor, "pre_get_xpn_resources"
+ transports.ProjectsRestInterceptor, "pre_move_instance"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2438,19 +5212,17 @@ def test_get_xpn_resources_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.ProjectsGetXpnResources.to_json(
- compute.ProjectsGetXpnResources()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetXpnResourcesProjectsRequest()
+ request = compute.MoveInstanceProjectRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.ProjectsGetXpnResources
+ post.return_value = compute.Operation
- client.get_xpn_resources(
+ client.move_instance_unary(
request,
metadata=[
("key", "val"),
@@ -2462,8 +5234,8 @@ def test_get_xpn_resources_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_xpn_resources_rest_bad_request(
- transport: str = "rest", request_type=compute.GetXpnResourcesProjectsRequest
+def test_move_instance_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.MoveInstanceProjectRequest
):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2472,6 +5244,10 @@ def test_get_xpn_resources_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
+ request_init["instance_move_request_resource"] = {
+ "destination_zone": "destination_zone_value",
+ "target_instance": "target_instance_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2483,10 +5259,10 @@ def test_get_xpn_resources_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_xpn_resources(request)
+ client.move_instance_unary(request)
-def test_get_xpn_resources_rest_flattened():
+def test_move_instance_unary_rest_flattened():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2495,7 +5271,7 @@ def test_get_xpn_resources_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ProjectsGetXpnResources()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1"}
@@ -2503,30 +5279,33 @@ def test_get_xpn_resources_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ instance_move_request_resource=compute.InstanceMoveRequest(
+ destination_zone="destination_zone_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ProjectsGetXpnResources.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_xpn_resources(**mock_args)
+ client.move_instance_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/getXpnResources" % client.transport._host,
+ "%s/compute/v1/projects/{project}/moveInstance" % client.transport._host,
args[1],
)
-def test_get_xpn_resources_rest_flattened_error(transport: str = "rest"):
+def test_move_instance_unary_rest_flattened_error(transport: str = "rest"):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2535,81 +5314,29 @@ def test_get_xpn_resources_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_xpn_resources(
- compute.GetXpnResourcesProjectsRequest(),
+ client.move_instance_unary(
+ compute.MoveInstanceProjectRequest(),
project="project_value",
+ instance_move_request_resource=compute.InstanceMoveRequest(
+ destination_zone="destination_zone_value"
+ ),
)
-def test_get_xpn_resources_rest_pager(transport: str = "rest"):
+def test_move_instance_unary_rest_error():
client = ProjectsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.ProjectsGetXpnResources(
- resources=[
- compute.XpnResourceId(),
- compute.XpnResourceId(),
- compute.XpnResourceId(),
- ],
- next_page_token="abc",
- ),
- compute.ProjectsGetXpnResources(
- resources=[],
- next_page_token="def",
- ),
- compute.ProjectsGetXpnResources(
- resources=[
- compute.XpnResourceId(),
- ],
- next_page_token="ghi",
- ),
- compute.ProjectsGetXpnResources(
- resources=[
- compute.XpnResourceId(),
- compute.XpnResourceId(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.ProjectsGetXpnResources.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.get_xpn_resources(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.XpnResourceId) for i in results)
-
- pages = list(client.get_xpn_resources(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.ListXpnHostsProjectsRequest,
+ compute.SetCommonInstanceMetadataProjectRequest,
dict,
],
)
-def test_list_xpn_hosts_rest(request_type):
+def test_set_common_instance_metadata_rest(request_type):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2617,39 +5344,77 @@ def test_list_xpn_hosts_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request_init["projects_list_xpn_hosts_request_resource"] = {
- "organization": "organization_value"
+ request_init["metadata_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.XpnHostList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.XpnHostList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_xpn_hosts(request)
+ response = client.set_common_instance_metadata(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListXpnHostsPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_xpn_hosts_rest_required_fields(
- request_type=compute.ListXpnHostsProjectsRequest,
+def test_set_common_instance_metadata_rest_required_fields(
+ request_type=compute.SetCommonInstanceMetadataProjectRequest,
):
transport_class = transports.ProjectsRestTransport
@@ -2666,7 +5431,7 @@ def test_list_xpn_hosts_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_xpn_hosts._get_unset_required_fields(jsonified_request)
+ ).set_common_instance_metadata._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2675,17 +5440,9 @@ def test_list_xpn_hosts_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_xpn_hosts._get_unset_required_fields(jsonified_request)
+ ).set_common_instance_metadata._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2699,7 +5456,7 @@ def test_list_xpn_hosts_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.XpnHostList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2718,44 +5475,36 @@ def test_list_xpn_hosts_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.XpnHostList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_xpn_hosts(request)
+ response = client.set_common_instance_metadata(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_xpn_hosts_rest_unset_required_fields():
+def test_set_common_instance_metadata_rest_unset_required_fields():
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list_xpn_hosts._get_unset_required_fields({})
+ unset_fields = transport.set_common_instance_metadata._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
+ "metadataResource",
"project",
- "projectsListXpnHostsRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_xpn_hosts_rest_interceptors(null_interceptor):
+def test_set_common_instance_metadata_rest_interceptors(null_interceptor):
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
@@ -2766,9 +5515,9 @@ def test_list_xpn_hosts_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ProjectsRestInterceptor, "post_list_xpn_hosts"
+ transports.ProjectsRestInterceptor, "post_set_common_instance_metadata"
) as post, mock.patch.object(
- transports.ProjectsRestInterceptor, "pre_list_xpn_hosts"
+ transports.ProjectsRestInterceptor, "pre_set_common_instance_metadata"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2783,17 +5532,17 @@ def test_list_xpn_hosts_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.XpnHostList.to_json(compute.XpnHostList())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListXpnHostsProjectsRequest()
+ request = compute.SetCommonInstanceMetadataProjectRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.XpnHostList
+ post.return_value = compute.Operation
- client.list_xpn_hosts(
+ client.set_common_instance_metadata(
request,
metadata=[
("key", "val"),
@@ -2805,8 +5554,9 @@ def test_list_xpn_hosts_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_xpn_hosts_rest_bad_request(
- transport: str = "rest", request_type=compute.ListXpnHostsProjectsRequest
+def test_set_common_instance_metadata_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.SetCommonInstanceMetadataProjectRequest,
):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2815,8 +5565,10 @@ def test_list_xpn_hosts_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request_init["projects_list_xpn_hosts_request_resource"] = {
- "organization": "organization_value"
+ request_init["metadata_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
}
request = request_type(request_init)
@@ -2829,10 +5581,10 @@ def test_list_xpn_hosts_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list_xpn_hosts(request)
+ client.set_common_instance_metadata(request)
-def test_list_xpn_hosts_rest_flattened():
+def test_set_common_instance_metadata_rest_flattened():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2841,7 +5593,7 @@ def test_list_xpn_hosts_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.XpnHostList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1"}
@@ -2849,33 +5601,32 @@ def test_list_xpn_hosts_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- projects_list_xpn_hosts_request_resource=compute.ProjectsListXpnHostsRequest(
- organization="organization_value"
- ),
+ metadata_resource=compute.Metadata(fingerprint="fingerprint_value"),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.XpnHostList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list_xpn_hosts(**mock_args)
+ client.set_common_instance_metadata(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/listXpnHosts" % client.transport._host,
+ "%s/compute/v1/projects/{project}/setCommonInstanceMetadata"
+ % client.transport._host,
args[1],
)
-def test_list_xpn_hosts_rest_flattened_error(transport: str = "rest"):
+def test_set_common_instance_metadata_rest_flattened_error(transport: str = "rest"):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2884,87 +5635,27 @@ def test_list_xpn_hosts_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list_xpn_hosts(
- compute.ListXpnHostsProjectsRequest(),
+ client.set_common_instance_metadata(
+ compute.SetCommonInstanceMetadataProjectRequest(),
project="project_value",
- projects_list_xpn_hosts_request_resource=compute.ProjectsListXpnHostsRequest(
- organization="organization_value"
- ),
+ metadata_resource=compute.Metadata(fingerprint="fingerprint_value"),
)
-def test_list_xpn_hosts_rest_pager(transport: str = "rest"):
+def test_set_common_instance_metadata_rest_error():
client = ProjectsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.XpnHostList(
- items=[
- compute.Project(),
- compute.Project(),
- compute.Project(),
- ],
- next_page_token="abc",
- ),
- compute.XpnHostList(
- items=[],
- next_page_token="def",
- ),
- compute.XpnHostList(
- items=[
- compute.Project(),
- ],
- next_page_token="ghi",
- ),
- compute.XpnHostList(
- items=[
- compute.Project(),
- compute.Project(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.XpnHostList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
- sample_request[
- "projects_list_xpn_hosts_request_resource"
- ] = compute.ProjectsListXpnHostsRequest(organization="organization_value")
-
- pager = client.list_xpn_hosts(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Project) for i in results)
-
- pages = list(client.list_xpn_hosts(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.MoveDiskProjectRequest,
+ compute.SetCommonInstanceMetadataProjectRequest,
dict,
],
)
-def test_move_disk_unary_rest(request_type):
+def test_set_common_instance_metadata_unary_rest(request_type):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2972,9 +5663,10 @@ def test_move_disk_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request_init["disk_move_request_resource"] = {
- "destination_zone": "destination_zone_value",
- "target_disk": "target_disk_value",
+ request_init["metadata_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
}
request = request_type(request_init)
@@ -3012,36 +5704,14 @@ def test_move_disk_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.move_disk_unary(request)
+ response = client.set_common_instance_metadata_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_move_disk_unary_rest_required_fields(
- request_type=compute.MoveDiskProjectRequest,
+def test_set_common_instance_metadata_unary_rest_required_fields(
+ request_type=compute.SetCommonInstanceMetadataProjectRequest,
):
transport_class = transports.ProjectsRestTransport
@@ -3058,7 +5728,7 @@ def test_move_disk_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).move_disk._get_unset_required_fields(jsonified_request)
+ ).set_common_instance_metadata._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3067,7 +5737,7 @@ def test_move_disk_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).move_disk._get_unset_required_fields(jsonified_request)
+ ).set_common_instance_metadata._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -3106,24 +5776,24 @@ def test_move_disk_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.move_disk_unary(request)
+ response = client.set_common_instance_metadata_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_move_disk_unary_rest_unset_required_fields():
+def test_set_common_instance_metadata_unary_rest_unset_required_fields():
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.move_disk._get_unset_required_fields({})
+ unset_fields = transport.set_common_instance_metadata._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
- "diskMoveRequestResource",
+ "metadataResource",
"project",
)
)
@@ -3131,7 +5801,7 @@ def test_move_disk_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_move_disk_unary_rest_interceptors(null_interceptor):
+def test_set_common_instance_metadata_unary_rest_interceptors(null_interceptor):
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
@@ -3142,9 +5812,9 @@ def test_move_disk_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ProjectsRestInterceptor, "post_move_disk"
+ transports.ProjectsRestInterceptor, "post_set_common_instance_metadata"
) as post, mock.patch.object(
- transports.ProjectsRestInterceptor, "pre_move_disk"
+ transports.ProjectsRestInterceptor, "pre_set_common_instance_metadata"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3161,7 +5831,7 @@ def test_move_disk_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.MoveDiskProjectRequest()
+ request = compute.SetCommonInstanceMetadataProjectRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3169,7 +5839,7 @@ def test_move_disk_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.move_disk_unary(
+ client.set_common_instance_metadata_unary(
request,
metadata=[
("key", "val"),
@@ -3181,8 +5851,9 @@ def test_move_disk_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_move_disk_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.MoveDiskProjectRequest
+def test_set_common_instance_metadata_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.SetCommonInstanceMetadataProjectRequest,
):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3191,9 +5862,10 @@ def test_move_disk_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request_init["disk_move_request_resource"] = {
- "destination_zone": "destination_zone_value",
- "target_disk": "target_disk_value",
+ request_init["metadata_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
}
request = request_type(request_init)
@@ -3206,10 +5878,10 @@ def test_move_disk_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.move_disk_unary(request)
+ client.set_common_instance_metadata_unary(request)
-def test_move_disk_unary_rest_flattened():
+def test_set_common_instance_metadata_unary_rest_flattened():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3226,9 +5898,7 @@ def test_move_disk_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- disk_move_request_resource=compute.DiskMoveRequest(
- destination_zone="destination_zone_value"
- ),
+ metadata_resource=compute.Metadata(fingerprint="fingerprint_value"),
)
mock_args.update(sample_request)
@@ -3240,19 +5910,22 @@ def test_move_disk_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.move_disk_unary(**mock_args)
+ client.set_common_instance_metadata_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/moveDisk" % client.transport._host,
+ "%s/compute/v1/projects/{project}/setCommonInstanceMetadata"
+ % client.transport._host,
args[1],
)
-def test_move_disk_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_common_instance_metadata_unary_rest_flattened_error(
+ transport: str = "rest",
+):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3260,17 +5933,15 @@ def test_move_disk_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
- with pytest.raises(ValueError):
- client.move_disk_unary(
- compute.MoveDiskProjectRequest(),
+ with pytest.raises(ValueError):
+ client.set_common_instance_metadata_unary(
+ compute.SetCommonInstanceMetadataProjectRequest(),
project="project_value",
- disk_move_request_resource=compute.DiskMoveRequest(
- destination_zone="destination_zone_value"
- ),
+ metadata_resource=compute.Metadata(fingerprint="fingerprint_value"),
)
-def test_move_disk_unary_rest_error():
+def test_set_common_instance_metadata_unary_rest_error():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3279,11 +5950,11 @@ def test_move_disk_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.MoveInstanceProjectRequest,
+ compute.SetDefaultNetworkTierProjectRequest,
dict,
],
)
-def test_move_instance_unary_rest(request_type):
+def test_set_default_network_tier_rest(request_type):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3291,9 +5962,8 @@ def test_move_instance_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request_init["instance_move_request_resource"] = {
- "destination_zone": "destination_zone_value",
- "target_instance": "target_instance_value",
+ request_init["projects_set_default_network_tier_request_resource"] = {
+ "network_tier": "network_tier_value"
}
request = request_type(request_init)
@@ -3331,10 +6001,10 @@ def test_move_instance_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.move_instance_unary(request)
+ response = client.set_default_network_tier(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -3359,8 +6029,8 @@ def test_move_instance_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_move_instance_unary_rest_required_fields(
- request_type=compute.MoveInstanceProjectRequest,
+def test_set_default_network_tier_rest_required_fields(
+ request_type=compute.SetDefaultNetworkTierProjectRequest,
):
transport_class = transports.ProjectsRestTransport
@@ -3377,7 +6047,7 @@ def test_move_instance_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).move_instance._get_unset_required_fields(jsonified_request)
+ ).set_default_network_tier._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3386,7 +6056,7 @@ def test_move_instance_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).move_instance._get_unset_required_fields(jsonified_request)
+ ).set_default_network_tier._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -3425,32 +6095,32 @@ def test_move_instance_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.move_instance_unary(request)
+ response = client.set_default_network_tier(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_move_instance_unary_rest_unset_required_fields():
+def test_set_default_network_tier_rest_unset_required_fields():
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.move_instance._get_unset_required_fields({})
+ unset_fields = transport.set_default_network_tier._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
- "instanceMoveRequestResource",
"project",
+ "projectsSetDefaultNetworkTierRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_move_instance_unary_rest_interceptors(null_interceptor):
+def test_set_default_network_tier_rest_interceptors(null_interceptor):
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
@@ -3461,9 +6131,9 @@ def test_move_instance_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ProjectsRestInterceptor, "post_move_instance"
+ transports.ProjectsRestInterceptor, "post_set_default_network_tier"
) as post, mock.patch.object(
- transports.ProjectsRestInterceptor, "pre_move_instance"
+ transports.ProjectsRestInterceptor, "pre_set_default_network_tier"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3480,7 +6150,7 @@ def test_move_instance_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.MoveInstanceProjectRequest()
+ request = compute.SetDefaultNetworkTierProjectRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3488,7 +6158,7 @@ def test_move_instance_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.move_instance_unary(
+ client.set_default_network_tier(
request,
metadata=[
("key", "val"),
@@ -3500,8 +6170,8 @@ def test_move_instance_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_move_instance_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.MoveInstanceProjectRequest
+def test_set_default_network_tier_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetDefaultNetworkTierProjectRequest
):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3510,9 +6180,8 @@ def test_move_instance_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request_init["instance_move_request_resource"] = {
- "destination_zone": "destination_zone_value",
- "target_instance": "target_instance_value",
+ request_init["projects_set_default_network_tier_request_resource"] = {
+ "network_tier": "network_tier_value"
}
request = request_type(request_init)
@@ -3525,10 +6194,10 @@ def test_move_instance_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.move_instance_unary(request)
+ client.set_default_network_tier(request)
-def test_move_instance_unary_rest_flattened():
+def test_set_default_network_tier_rest_flattened():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3545,8 +6214,8 @@ def test_move_instance_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- instance_move_request_resource=compute.InstanceMoveRequest(
- destination_zone="destination_zone_value"
+ projects_set_default_network_tier_request_resource=compute.ProjectsSetDefaultNetworkTierRequest(
+ network_tier="network_tier_value"
),
)
mock_args.update(sample_request)
@@ -3559,19 +6228,20 @@ def test_move_instance_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.move_instance_unary(**mock_args)
+ client.set_default_network_tier(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/moveInstance" % client.transport._host,
+ "%s/compute/v1/projects/{project}/setDefaultNetworkTier"
+ % client.transport._host,
args[1],
)
-def test_move_instance_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_default_network_tier_rest_flattened_error(transport: str = "rest"):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3580,16 +6250,16 @@ def test_move_instance_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.move_instance_unary(
- compute.MoveInstanceProjectRequest(),
+ client.set_default_network_tier(
+ compute.SetDefaultNetworkTierProjectRequest(),
project="project_value",
- instance_move_request_resource=compute.InstanceMoveRequest(
- destination_zone="destination_zone_value"
+ projects_set_default_network_tier_request_resource=compute.ProjectsSetDefaultNetworkTierRequest(
+ network_tier="network_tier_value"
),
)
-def test_move_instance_unary_rest_error():
+def test_set_default_network_tier_rest_error():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3598,11 +6268,11 @@ def test_move_instance_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetCommonInstanceMetadataProjectRequest,
+ compute.SetDefaultNetworkTierProjectRequest,
dict,
],
)
-def test_set_common_instance_metadata_unary_rest(request_type):
+def test_set_default_network_tier_unary_rest(request_type):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3610,10 +6280,8 @@ def test_set_common_instance_metadata_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request_init["metadata_resource"] = {
- "fingerprint": "fingerprint_value",
- "items": [{"key": "key_value", "value": "value_value"}],
- "kind": "kind_value",
+ request_init["projects_set_default_network_tier_request_resource"] = {
+ "network_tier": "network_tier_value"
}
request = request_type(request_init)
@@ -3651,36 +6319,14 @@ def test_set_common_instance_metadata_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_common_instance_metadata_unary(request)
+ response = client.set_default_network_tier_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_set_common_instance_metadata_unary_rest_required_fields(
- request_type=compute.SetCommonInstanceMetadataProjectRequest,
+def test_set_default_network_tier_unary_rest_required_fields(
+ request_type=compute.SetDefaultNetworkTierProjectRequest,
):
transport_class = transports.ProjectsRestTransport
@@ -3697,7 +6343,7 @@ def test_set_common_instance_metadata_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_common_instance_metadata._get_unset_required_fields(jsonified_request)
+ ).set_default_network_tier._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3706,7 +6352,7 @@ def test_set_common_instance_metadata_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_common_instance_metadata._get_unset_required_fields(jsonified_request)
+ ).set_default_network_tier._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -3745,32 +6391,32 @@ def test_set_common_instance_metadata_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_common_instance_metadata_unary(request)
+ response = client.set_default_network_tier_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_common_instance_metadata_unary_rest_unset_required_fields():
+def test_set_default_network_tier_unary_rest_unset_required_fields():
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_common_instance_metadata._get_unset_required_fields({})
+ unset_fields = transport.set_default_network_tier._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
- "metadataResource",
"project",
+ "projectsSetDefaultNetworkTierRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_common_instance_metadata_unary_rest_interceptors(null_interceptor):
+def test_set_default_network_tier_unary_rest_interceptors(null_interceptor):
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
@@ -3781,9 +6427,9 @@ def test_set_common_instance_metadata_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ProjectsRestInterceptor, "post_set_common_instance_metadata"
+ transports.ProjectsRestInterceptor, "post_set_default_network_tier"
) as post, mock.patch.object(
- transports.ProjectsRestInterceptor, "pre_set_common_instance_metadata"
+ transports.ProjectsRestInterceptor, "pre_set_default_network_tier"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3800,7 +6446,7 @@ def test_set_common_instance_metadata_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetCommonInstanceMetadataProjectRequest()
+ request = compute.SetDefaultNetworkTierProjectRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3808,7 +6454,7 @@ def test_set_common_instance_metadata_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_common_instance_metadata_unary(
+ client.set_default_network_tier_unary(
request,
metadata=[
("key", "val"),
@@ -3820,9 +6466,8 @@ def test_set_common_instance_metadata_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_common_instance_metadata_unary_rest_bad_request(
- transport: str = "rest",
- request_type=compute.SetCommonInstanceMetadataProjectRequest,
+def test_set_default_network_tier_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetDefaultNetworkTierProjectRequest
):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3831,10 +6476,8 @@ def test_set_common_instance_metadata_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request_init["metadata_resource"] = {
- "fingerprint": "fingerprint_value",
- "items": [{"key": "key_value", "value": "value_value"}],
- "kind": "kind_value",
+ request_init["projects_set_default_network_tier_request_resource"] = {
+ "network_tier": "network_tier_value"
}
request = request_type(request_init)
@@ -3847,10 +6490,10 @@ def test_set_common_instance_metadata_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_common_instance_metadata_unary(request)
+ client.set_default_network_tier_unary(request)
-def test_set_common_instance_metadata_unary_rest_flattened():
+def test_set_default_network_tier_unary_rest_flattened():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3867,7 +6510,9 @@ def test_set_common_instance_metadata_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- metadata_resource=compute.Metadata(fingerprint="fingerprint_value"),
+ projects_set_default_network_tier_request_resource=compute.ProjectsSetDefaultNetworkTierRequest(
+ network_tier="network_tier_value"
+ ),
)
mock_args.update(sample_request)
@@ -3879,22 +6524,20 @@ def test_set_common_instance_metadata_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_common_instance_metadata_unary(**mock_args)
+ client.set_default_network_tier_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/setCommonInstanceMetadata"
+ "%s/compute/v1/projects/{project}/setDefaultNetworkTier"
% client.transport._host,
args[1],
)
-def test_set_common_instance_metadata_unary_rest_flattened_error(
- transport: str = "rest",
-):
+def test_set_default_network_tier_unary_rest_flattened_error(transport: str = "rest"):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3903,14 +6546,16 @@ def test_set_common_instance_metadata_unary_rest_flattened_error(
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_common_instance_metadata_unary(
- compute.SetCommonInstanceMetadataProjectRequest(),
+ client.set_default_network_tier_unary(
+ compute.SetDefaultNetworkTierProjectRequest(),
project="project_value",
- metadata_resource=compute.Metadata(fingerprint="fingerprint_value"),
+ projects_set_default_network_tier_request_resource=compute.ProjectsSetDefaultNetworkTierRequest(
+ network_tier="network_tier_value"
+ ),
)
-def test_set_common_instance_metadata_unary_rest_error():
+def test_set_default_network_tier_unary_rest_error():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3919,11 +6564,11 @@ def test_set_common_instance_metadata_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetDefaultNetworkTierProjectRequest,
+ compute.SetUsageExportBucketProjectRequest,
dict,
],
)
-def test_set_default_network_tier_unary_rest(request_type):
+def test_set_usage_export_bucket_rest(request_type):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3931,8 +6576,9 @@ def test_set_default_network_tier_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request_init["projects_set_default_network_tier_request_resource"] = {
- "network_tier": "network_tier_value"
+ request_init["usage_export_location_resource"] = {
+ "bucket_name": "bucket_name_value",
+ "report_name_prefix": "report_name_prefix_value",
}
request = request_type(request_init)
@@ -3970,10 +6616,10 @@ def test_set_default_network_tier_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_default_network_tier_unary(request)
+ response = client.set_usage_export_bucket(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -3998,8 +6644,8 @@ def test_set_default_network_tier_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_set_default_network_tier_unary_rest_required_fields(
- request_type=compute.SetDefaultNetworkTierProjectRequest,
+def test_set_usage_export_bucket_rest_required_fields(
+ request_type=compute.SetUsageExportBucketProjectRequest,
):
transport_class = transports.ProjectsRestTransport
@@ -4016,7 +6662,7 @@ def test_set_default_network_tier_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_default_network_tier._get_unset_required_fields(jsonified_request)
+ ).set_usage_export_bucket._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4025,7 +6671,7 @@ def test_set_default_network_tier_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_default_network_tier._get_unset_required_fields(jsonified_request)
+ ).set_usage_export_bucket._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -4064,32 +6710,32 @@ def test_set_default_network_tier_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_default_network_tier_unary(request)
+ response = client.set_usage_export_bucket(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_default_network_tier_unary_rest_unset_required_fields():
+def test_set_usage_export_bucket_rest_unset_required_fields():
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_default_network_tier._get_unset_required_fields({})
+ unset_fields = transport.set_usage_export_bucket._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"project",
- "projectsSetDefaultNetworkTierRequestResource",
+ "usageExportLocationResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_default_network_tier_unary_rest_interceptors(null_interceptor):
+def test_set_usage_export_bucket_rest_interceptors(null_interceptor):
transport = transports.ProjectsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.ProjectsRestInterceptor(),
@@ -4100,9 +6746,9 @@ def test_set_default_network_tier_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ProjectsRestInterceptor, "post_set_default_network_tier"
+ transports.ProjectsRestInterceptor, "post_set_usage_export_bucket"
) as post, mock.patch.object(
- transports.ProjectsRestInterceptor, "pre_set_default_network_tier"
+ transports.ProjectsRestInterceptor, "pre_set_usage_export_bucket"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4119,7 +6765,7 @@ def test_set_default_network_tier_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetDefaultNetworkTierProjectRequest()
+ request = compute.SetUsageExportBucketProjectRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -4127,7 +6773,7 @@ def test_set_default_network_tier_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_default_network_tier_unary(
+ client.set_usage_export_bucket(
request,
metadata=[
("key", "val"),
@@ -4139,8 +6785,8 @@ def test_set_default_network_tier_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_default_network_tier_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.SetDefaultNetworkTierProjectRequest
+def test_set_usage_export_bucket_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetUsageExportBucketProjectRequest
):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4149,8 +6795,9 @@ def test_set_default_network_tier_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request_init["projects_set_default_network_tier_request_resource"] = {
- "network_tier": "network_tier_value"
+ request_init["usage_export_location_resource"] = {
+ "bucket_name": "bucket_name_value",
+ "report_name_prefix": "report_name_prefix_value",
}
request = request_type(request_init)
@@ -4163,10 +6810,10 @@ def test_set_default_network_tier_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_default_network_tier_unary(request)
+ client.set_usage_export_bucket(request)
-def test_set_default_network_tier_unary_rest_flattened():
+def test_set_usage_export_bucket_rest_flattened():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4183,8 +6830,8 @@ def test_set_default_network_tier_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- projects_set_default_network_tier_request_resource=compute.ProjectsSetDefaultNetworkTierRequest(
- network_tier="network_tier_value"
+ usage_export_location_resource=compute.UsageExportLocation(
+ bucket_name="bucket_name_value"
),
)
mock_args.update(sample_request)
@@ -4197,20 +6844,20 @@ def test_set_default_network_tier_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_default_network_tier_unary(**mock_args)
+ client.set_usage_export_bucket(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/setDefaultNetworkTier"
+ "%s/compute/v1/projects/{project}/setUsageExportBucket"
% client.transport._host,
args[1],
)
-def test_set_default_network_tier_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_usage_export_bucket_rest_flattened_error(transport: str = "rest"):
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4219,16 +6866,16 @@ def test_set_default_network_tier_unary_rest_flattened_error(transport: str = "r
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_default_network_tier_unary(
- compute.SetDefaultNetworkTierProjectRequest(),
+ client.set_usage_export_bucket(
+ compute.SetUsageExportBucketProjectRequest(),
project="project_value",
- projects_set_default_network_tier_request_resource=compute.ProjectsSetDefaultNetworkTierRequest(
- network_tier="network_tier_value"
+ usage_export_location_resource=compute.UsageExportLocation(
+ bucket_name="bucket_name_value"
),
)
-def test_set_default_network_tier_unary_rest_error():
+def test_set_usage_export_bucket_rest_error():
client = ProjectsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4293,28 +6940,6 @@ def test_set_usage_export_bucket_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_set_usage_export_bucket_unary_rest_required_fields(
@@ -4629,6 +7254,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = ProjectsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_projects_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -4672,6 +7310,14 @@ def test_projects_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_projects_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_public_advertised_prefixes.py b/tests/unit/gapic/compute_v1/test_public_advertised_prefixes.py
index 5c4a90d50..a6bb7f71c 100644
--- a/tests/unit/gapic/compute_v1/test_public_advertised_prefixes.py
+++ b/tests/unit/gapic/compute_v1/test_public_advertised_prefixes.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -561,7 +563,7 @@ def test_public_advertised_prefixes_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -605,10 +607,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -633,7 +635,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeletePublicAdvertisedPrefixeRequest,
):
transport_class = transports.PublicAdvertisedPrefixesRestTransport
@@ -704,14 +706,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.PublicAdvertisedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -729,7 +731,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.PublicAdvertisedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -769,7 +771,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -781,7 +783,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeletePublicAdvertisedPrefixeRequest
):
client = PublicAdvertisedPrefixesClient(
@@ -802,10 +804,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -834,7 +836,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -847,7 +849,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -856,14 +858,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeletePublicAdvertisedPrefixeRequest(),
project="project_value",
public_advertised_prefix="public_advertised_prefix_value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -872,11 +874,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetPublicAdvertisedPrefixeRequest,
+ compute.DeletePublicAdvertisedPrefixeRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -889,45 +891,45 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PublicAdvertisedPrefix(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- dns_verification_ip="dns_verification_ip_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
- ip_cidr_range="ip_cidr_range_value",
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- shared_secret="shared_secret_value",
- status="status_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicAdvertisedPrefix.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.PublicAdvertisedPrefix)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.dns_verification_ip == "dns_verification_ip_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.ip_cidr_range == "ip_cidr_range_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.self_link == "self_link_value"
- assert response.shared_secret == "shared_secret_value"
- assert response.status == "status_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(
- request_type=compute.GetPublicAdvertisedPrefixeRequest,
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeletePublicAdvertisedPrefixeRequest,
):
transport_class = transports.PublicAdvertisedPrefixesRestTransport
@@ -945,7 +947,7 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -955,7 +957,9 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -973,7 +977,7 @@ def test_get_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.PublicAdvertisedPrefix()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -984,32 +988,32 @@ def test_get_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicAdvertisedPrefix.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.PublicAdvertisedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -1020,7 +1024,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.PublicAdvertisedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1033,9 +1037,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.PublicAdvertisedPrefixesRestInterceptor, "post_get"
+ transports.PublicAdvertisedPrefixesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.PublicAdvertisedPrefixesRestInterceptor, "pre_get"
+ transports.PublicAdvertisedPrefixesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1050,19 +1054,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.PublicAdvertisedPrefix.to_json(
- compute.PublicAdvertisedPrefix()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetPublicAdvertisedPrefixeRequest()
+ request = compute.DeletePublicAdvertisedPrefixeRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.PublicAdvertisedPrefix
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1074,8 +1076,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetPublicAdvertisedPrefixeRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeletePublicAdvertisedPrefixeRequest
):
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1095,10 +1097,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1107,7 +1109,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PublicAdvertisedPrefix()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "public_advertised_prefix": "sample2"}
@@ -1122,12 +1124,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicAdvertisedPrefix.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1140,7 +1142,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1149,14 +1151,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetPublicAdvertisedPrefixeRequest(),
+ client.delete_unary(
+ compute.DeletePublicAdvertisedPrefixeRequest(),
project="project_value",
public_advertised_prefix="public_advertised_prefix_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1165,111 +1167,68 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertPublicAdvertisedPrefixeRequest,
+ compute.GetPublicAdvertisedPrefixeRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["public_advertised_prefix_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "dns_verification_ip": "dns_verification_ip_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "ip_cidr_range": "ip_cidr_range_value",
- "kind": "kind_value",
- "name": "name_value",
- "public_delegated_prefixs": [
- {
- "ip_range": "ip_range_value",
- "name": "name_value",
- "project": "project_value",
- "region": "region_value",
- "status": "status_value",
- }
- ],
- "self_link": "self_link_value",
- "shared_secret": "shared_secret_value",
- "status": "status_value",
- }
+ request_init = {"project": "sample1", "public_advertised_prefix": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.PublicAdvertisedPrefix(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ dns_verification_ip="dns_verification_ip_value",
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
+ ip_cidr_range="ip_cidr_range_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ shared_secret="shared_secret_value",
+ status="status_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.PublicAdvertisedPrefix.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.PublicAdvertisedPrefix)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.dns_verification_ip == "dns_verification_ip_value"
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert response.ip_cidr_range == "ip_cidr_range_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.shared_secret == "shared_secret_value"
+ assert response.status == "status_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertPublicAdvertisedPrefixeRequest,
+def test_get_rest_required_fields(
+ request_type=compute.GetPublicAdvertisedPrefixeRequest,
):
transport_class = transports.PublicAdvertisedPrefixesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["public_advertised_prefix"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1281,23 +1240,26 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["publicAdvertisedPrefix"] = "public_advertised_prefix_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "publicAdvertisedPrefix" in jsonified_request
+ assert (
+ jsonified_request["publicAdvertisedPrefix"] == "public_advertised_prefix_value"
+ )
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1306,7 +1268,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.PublicAdvertisedPrefix()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1317,44 +1279,43 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.PublicAdvertisedPrefix.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.PublicAdvertisedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"project",
- "publicAdvertisedPrefixResource",
+ "publicAdvertisedPrefix",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.PublicAdvertisedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1367,9 +1328,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.PublicAdvertisedPrefixesRestInterceptor, "post_insert"
+ transports.PublicAdvertisedPrefixesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.PublicAdvertisedPrefixesRestInterceptor, "pre_insert"
+ transports.PublicAdvertisedPrefixesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1384,17 +1345,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.PublicAdvertisedPrefix.to_json(
+ compute.PublicAdvertisedPrefix()
+ )
- request = compute.InsertPublicAdvertisedPrefixeRequest()
+ request = compute.GetPublicAdvertisedPrefixeRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.PublicAdvertisedPrefix
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1406,8 +1369,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertPublicAdvertisedPrefixeRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetPublicAdvertisedPrefixeRequest
):
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1415,10 +1378,678 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["public_advertised_prefix_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
+ request_init = {"project": "sample1", "public_advertised_prefix": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.PublicAdvertisedPrefix()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "public_advertised_prefix": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ public_advertised_prefix="public_advertised_prefix_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.PublicAdvertisedPrefix.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/publicAdvertisedPrefixes/{public_advertised_prefix}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetPublicAdvertisedPrefixeRequest(),
+ project="project_value",
+ public_advertised_prefix="public_advertised_prefix_value",
+ )
+
+
+def test_get_rest_error():
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertPublicAdvertisedPrefixeRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["public_advertised_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "dns_verification_ip": "dns_verification_ip_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_cidr_range": "ip_cidr_range_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "public_delegated_prefixs": [
+ {
+ "ip_range": "ip_range_value",
+ "name": "name_value",
+ "project": "project_value",
+ "region": "region_value",
+ "status": "status_value",
+ }
+ ],
+ "self_link": "self_link_value",
+ "shared_secret": "shared_secret_value",
+ "status": "status_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertPublicAdvertisedPrefixeRequest,
+):
+ transport_class = transports.PublicAdvertisedPrefixesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.PublicAdvertisedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "publicAdvertisedPrefixResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.PublicAdvertisedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.PublicAdvertisedPrefixesRestInterceptor(),
+ )
+ client = PublicAdvertisedPrefixesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.PublicAdvertisedPrefixesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.PublicAdvertisedPrefixesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertPublicAdvertisedPrefixeRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertPublicAdvertisedPrefixeRequest
+):
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["public_advertised_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "dns_verification_ip": "dns_verification_ip_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_cidr_range": "ip_cidr_range_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "public_delegated_prefixs": [
+ {
+ "ip_range": "ip_range_value",
+ "name": "name_value",
+ "project": "project_value",
+ "region": "region_value",
+ "status": "status_value",
+ }
+ ],
+ "self_link": "self_link_value",
+ "shared_secret": "shared_secret_value",
+ "status": "status_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ public_advertised_prefix_resource=compute.PublicAdvertisedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/publicAdvertisedPrefixes"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertPublicAdvertisedPrefixeRequest(),
+ project="project_value",
+ public_advertised_prefix_resource=compute.PublicAdvertisedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertPublicAdvertisedPrefixeRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["public_advertised_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "dns_verification_ip": "dns_verification_ip_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_cidr_range": "ip_cidr_range_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "public_delegated_prefixs": [
+ {
+ "ip_range": "ip_range_value",
+ "name": "name_value",
+ "project": "project_value",
+ "region": "region_value",
+ "status": "status_value",
+ }
+ ],
+ "self_link": "self_link_value",
+ "shared_secret": "shared_secret_value",
+ "status": "status_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertPublicAdvertisedPrefixeRequest,
+):
+ transport_class = transports.PublicAdvertisedPrefixesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.PublicAdvertisedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "publicAdvertisedPrefixResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.PublicAdvertisedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.PublicAdvertisedPrefixesRestInterceptor(),
+ )
+ client = PublicAdvertisedPrefixesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.PublicAdvertisedPrefixesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.PublicAdvertisedPrefixesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertPublicAdvertisedPrefixeRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertPublicAdvertisedPrefixeRequest
+):
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["public_advertised_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
"dns_verification_ip": "dns_verification_ip_value",
"fingerprint": "fingerprint_value",
"id": 205,
@@ -1433,11 +2064,301 @@ def test_insert_unary_rest_bad_request(
"region": "region_value",
"status": "status_value",
}
- ],
- "self_link": "self_link_value",
- "shared_secret": "shared_secret_value",
- "status": "status_value",
- }
+ ],
+ "self_link": "self_link_value",
+ "shared_secret": "shared_secret_value",
+ "status": "status_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ public_advertised_prefix_resource=compute.PublicAdvertisedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/publicAdvertisedPrefixes"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertPublicAdvertisedPrefixeRequest(),
+ project="project_value",
+ public_advertised_prefix_resource=compute.PublicAdvertisedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListPublicAdvertisedPrefixesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.PublicAdvertisedPrefixList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.PublicAdvertisedPrefixList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(
+ request_type=compute.ListPublicAdvertisedPrefixesRequest,
+):
+ transport_class = transports.PublicAdvertisedPrefixesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.PublicAdvertisedPrefixList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.PublicAdvertisedPrefixList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.PublicAdvertisedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.PublicAdvertisedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.PublicAdvertisedPrefixesRestInterceptor(),
+ )
+ client = PublicAdvertisedPrefixesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.PublicAdvertisedPrefixesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.PublicAdvertisedPrefixesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.PublicAdvertisedPrefixList.to_json(
+ compute.PublicAdvertisedPrefixList()
+ )
+
+ request = compute.ListPublicAdvertisedPrefixesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.PublicAdvertisedPrefixList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListPublicAdvertisedPrefixesRequest
+):
+ client = PublicAdvertisedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1449,10 +2370,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.list(request)
-def test_insert_unary_rest_flattened():
+def test_list_rest_flattened():
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1461,7 +2382,7 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.PublicAdvertisedPrefixList()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1"}
@@ -1469,21 +2390,18 @@ def test_insert_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- public_advertised_prefix_resource=compute.PublicAdvertisedPrefix(
- creation_timestamp="creation_timestamp_value"
- ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.PublicAdvertisedPrefixList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.list(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1496,7 +2414,7 @@ def test_insert_unary_rest_flattened():
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_list_rest_flattened_error(transport: str = "rest"):
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1505,71 +2423,184 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertPublicAdvertisedPrefixeRequest(),
+ client.list(
+ compute.ListPublicAdvertisedPrefixesRequest(),
project="project_value",
- public_advertised_prefix_resource=compute.PublicAdvertisedPrefix(
- creation_timestamp="creation_timestamp_value"
- ),
)
-def test_insert_unary_rest_error():
+def test_list_rest_pager(transport: str = "rest"):
client = PublicAdvertisedPrefixesClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
)
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.PublicAdvertisedPrefixList(
+ items=[
+ compute.PublicAdvertisedPrefix(),
+ compute.PublicAdvertisedPrefix(),
+ compute.PublicAdvertisedPrefix(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.PublicAdvertisedPrefixList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.PublicAdvertisedPrefixList(
+ items=[
+ compute.PublicAdvertisedPrefix(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.PublicAdvertisedPrefixList(
+ items=[
+ compute.PublicAdvertisedPrefix(),
+ compute.PublicAdvertisedPrefix(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.PublicAdvertisedPrefixList.to_json(x) for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.PublicAdvertisedPrefix) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
@pytest.mark.parametrize(
"request_type",
[
- compute.ListPublicAdvertisedPrefixesRequest,
+ compute.PatchPublicAdvertisedPrefixeRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_patch_rest(request_type):
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "public_advertised_prefix": "sample2"}
+ request_init["public_advertised_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "dns_verification_ip": "dns_verification_ip_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_cidr_range": "ip_cidr_range_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "public_delegated_prefixs": [
+ {
+ "ip_range": "ip_range_value",
+ "name": "name_value",
+ "project": "project_value",
+ "region": "region_value",
+ "status": "status_value",
+ }
+ ],
+ "self_link": "self_link_value",
+ "shared_secret": "shared_secret_value",
+ "status": "status_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PublicAdvertisedPrefixList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicAdvertisedPrefixList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(
- request_type=compute.ListPublicAdvertisedPrefixesRequest,
+def test_patch_rest_required_fields(
+ request_type=compute.PatchPublicAdvertisedPrefixeRequest,
):
transport_class = transports.PublicAdvertisedPrefixesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["public_advertised_prefix"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1581,31 +2612,28 @@ def test_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["publicAdvertisedPrefix"] = "public_advertised_prefix_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "publicAdvertisedPrefix" in jsonified_request
+ assert (
+ jsonified_request["publicAdvertisedPrefix"] == "public_advertised_prefix_value"
+ )
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1614,7 +2642,7 @@ def test_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.PublicAdvertisedPrefixList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1625,46 +2653,45 @@ def test_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicAdvertisedPrefixList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_rest_unset_required_fields():
transport = transports.PublicAdvertisedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "project",
+ "publicAdvertisedPrefix",
+ "publicAdvertisedPrefixResource",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.PublicAdvertisedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1677,9 +2704,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.PublicAdvertisedPrefixesRestInterceptor, "post_list"
+ transports.PublicAdvertisedPrefixesRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.PublicAdvertisedPrefixesRestInterceptor, "pre_list"
+ transports.PublicAdvertisedPrefixesRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1694,19 +2721,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.PublicAdvertisedPrefixList.to_json(
- compute.PublicAdvertisedPrefixList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListPublicAdvertisedPrefixesRequest()
+ request = compute.PatchPublicAdvertisedPrefixeRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.PublicAdvertisedPrefixList
+ post.return_value = compute.Operation
- client.list(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -1718,8 +2743,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListPublicAdvertisedPrefixesRequest
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchPublicAdvertisedPrefixeRequest
):
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1727,7 +2752,29 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "public_advertised_prefix": "sample2"}
+ request_init["public_advertised_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "dns_verification_ip": "dns_verification_ip_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_cidr_range": "ip_cidr_range_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "public_delegated_prefixs": [
+ {
+ "ip_range": "ip_range_value",
+ "name": "name_value",
+ "project": "project_value",
+ "region": "region_value",
+ "status": "status_value",
+ }
+ ],
+ "self_link": "self_link_value",
+ "shared_secret": "shared_secret_value",
+ "status": "status_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1739,10 +2786,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch(request)
-def test_list_rest_flattened():
+def test_patch_rest_flattened():
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1751,39 +2798,43 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PublicAdvertisedPrefixList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "public_advertised_prefix": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ public_advertised_prefix="public_advertised_prefix_value",
+ public_advertised_prefix_resource=compute.PublicAdvertisedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicAdvertisedPrefixList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/publicAdvertisedPrefixes"
+ "%s/compute/v1/projects/{project}/global/publicAdvertisedPrefixes/{public_advertised_prefix}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = PublicAdvertisedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1792,74 +2843,21 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListPublicAdvertisedPrefixesRequest(),
+ client.patch(
+ compute.PatchPublicAdvertisedPrefixeRequest(),
project="project_value",
+ public_advertised_prefix="public_advertised_prefix_value",
+ public_advertised_prefix_resource=compute.PublicAdvertisedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_rest_error():
client = PublicAdvertisedPrefixesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.PublicAdvertisedPrefixList(
- items=[
- compute.PublicAdvertisedPrefix(),
- compute.PublicAdvertisedPrefix(),
- compute.PublicAdvertisedPrefix(),
- ],
- next_page_token="abc",
- ),
- compute.PublicAdvertisedPrefixList(
- items=[],
- next_page_token="def",
- ),
- compute.PublicAdvertisedPrefixList(
- items=[
- compute.PublicAdvertisedPrefix(),
- ],
- next_page_token="ghi",
- ),
- compute.PublicAdvertisedPrefixList(
- items=[
- compute.PublicAdvertisedPrefix(),
- compute.PublicAdvertisedPrefix(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(
- compute.PublicAdvertisedPrefixList.to_json(x) for x in response
- )
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.PublicAdvertisedPrefix) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
@@ -1938,28 +2936,6 @@ def test_patch_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_patch_unary_rest_required_fields(
@@ -2303,6 +3279,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = PublicAdvertisedPrefixesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_public_advertised_prefixes_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2338,6 +3327,14 @@ def test_public_advertised_prefixes_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_public_advertised_prefixes_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_public_delegated_prefixes.py b/tests/unit/gapic/compute_v1/test_public_delegated_prefixes.py
index 24808c89e..466c827b8 100644
--- a/tests/unit/gapic/compute_v1/test_public_delegated_prefixes.py
+++ b/tests/unit/gapic/compute_v1/test_public_delegated_prefixes.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -921,7 +923,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -969,10 +971,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -997,7 +999,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeletePublicDelegatedPrefixeRequest,
):
transport_class = transports.PublicDelegatedPrefixesRestTransport
@@ -1070,14 +1072,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.PublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1096,7 +1098,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.PublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1136,7 +1138,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1148,7 +1150,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeletePublicDelegatedPrefixeRequest
):
client = PublicDelegatedPrefixesClient(
@@ -1173,10 +1175,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1210,7 +1212,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1223,7 +1225,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1232,7 +1234,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeletePublicDelegatedPrefixeRequest(),
project="project_value",
region="region_value",
@@ -1240,7 +1242,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1249,11 +1251,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetPublicDelegatedPrefixeRequest,
+ compute.DeletePublicDelegatedPrefixeRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1270,47 +1272,45 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PublicDelegatedPrefix(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
- ip_cidr_range="ip_cidr_range_value",
- is_live_migration=True,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- parent_prefix="parent_prefix_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- status="status_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicDelegatedPrefix.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.PublicDelegatedPrefix)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.ip_cidr_range == "ip_cidr_range_value"
- assert response.is_live_migration is True
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.parent_prefix == "parent_prefix_value"
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.status == "status_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(
- request_type=compute.GetPublicDelegatedPrefixeRequest,
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeletePublicDelegatedPrefixeRequest,
):
transport_class = transports.PublicDelegatedPrefixesRestTransport
@@ -1329,7 +1329,7 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1340,7 +1340,9 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1358,7 +1360,7 @@ def test_get_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.PublicDelegatedPrefix()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1369,32 +1371,32 @@ def test_get_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicDelegatedPrefix.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.PublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -1406,7 +1408,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.PublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1419,9 +1421,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.PublicDelegatedPrefixesRestInterceptor, "post_get"
+ transports.PublicDelegatedPrefixesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.PublicDelegatedPrefixesRestInterceptor, "pre_get"
+ transports.PublicDelegatedPrefixesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1436,19 +1438,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.PublicDelegatedPrefix.to_json(
- compute.PublicDelegatedPrefix()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetPublicDelegatedPrefixeRequest()
+ request = compute.DeletePublicDelegatedPrefixeRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.PublicDelegatedPrefix
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1460,8 +1460,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetPublicDelegatedPrefixeRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeletePublicDelegatedPrefixeRequest
):
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1485,10 +1485,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1497,7 +1497,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PublicDelegatedPrefix()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1517,12 +1517,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicDelegatedPrefix.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1535,7 +1535,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1544,15 +1544,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetPublicDelegatedPrefixeRequest(),
+ client.delete_unary(
+ compute.DeletePublicDelegatedPrefixeRequest(),
project="project_value",
region="region_value",
public_delegated_prefix="public_delegated_prefix_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1561,114 +1561,74 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertPublicDelegatedPrefixeRequest,
+ compute.GetPublicDelegatedPrefixeRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["public_delegated_prefix_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "ip_cidr_range": "ip_cidr_range_value",
- "is_live_migration": True,
- "kind": "kind_value",
- "name": "name_value",
- "parent_prefix": "parent_prefix_value",
- "public_delegated_sub_prefixs": [
- {
- "delegatee_project": "delegatee_project_value",
- "description": "description_value",
- "ip_cidr_range": "ip_cidr_range_value",
- "is_address": True,
- "name": "name_value",
- "region": "region_value",
- "status": "status_value",
- }
- ],
- "region": "region_value",
- "self_link": "self_link_value",
- "status": "status_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "public_delegated_prefix": "sample3",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.PublicDelegatedPrefix(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
+ ip_cidr_range="ip_cidr_range_value",
+ is_live_migration=True,
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ parent_prefix="parent_prefix_value",
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ status="status_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.PublicDelegatedPrefix.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.PublicDelegatedPrefix)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert response.ip_cidr_range == "ip_cidr_range_value"
+ assert response.is_live_migration is True
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.parent_prefix == "parent_prefix_value"
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.status == "status_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertPublicDelegatedPrefixeRequest,
+def test_get_rest_required_fields(
+ request_type=compute.GetPublicDelegatedPrefixeRequest,
):
transport_class = transports.PublicDelegatedPrefixesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["public_delegated_prefix"] = ""
request_init["region"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1681,24 +1641,25 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["publicDelegatedPrefix"] = "public_delegated_prefix_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "publicDelegatedPrefix" in jsonified_request
+ assert jsonified_request["publicDelegatedPrefix"] == "public_delegated_prefix_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
@@ -1709,7 +1670,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.PublicDelegatedPrefix()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1720,37 +1681,36 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.PublicDelegatedPrefix.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.PublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"project",
- "publicDelegatedPrefixResource",
+ "publicDelegatedPrefix",
"region",
)
)
@@ -1758,7 +1718,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.PublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1771,9 +1731,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.PublicDelegatedPrefixesRestInterceptor, "post_insert"
+ transports.PublicDelegatedPrefixesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.PublicDelegatedPrefixesRestInterceptor, "pre_insert"
+ transports.PublicDelegatedPrefixesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1788,17 +1748,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.PublicDelegatedPrefix.to_json(
+ compute.PublicDelegatedPrefix()
+ )
- request = compute.InsertPublicDelegatedPrefixeRequest()
+ request = compute.GetPublicDelegatedPrefixeRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.PublicDelegatedPrefix
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1810,8 +1772,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertPublicDelegatedPrefixeRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetPublicDelegatedPrefixeRequest
):
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1819,9 +1781,708 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["public_delegated_prefix_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "public_delegated_prefix": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.PublicDelegatedPrefix()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "public_delegated_prefix": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ public_delegated_prefix="public_delegated_prefix_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.PublicDelegatedPrefix.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/publicDelegatedPrefixes/{public_delegated_prefix}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetPublicDelegatedPrefixeRequest(),
+ project="project_value",
+ region="region_value",
+ public_delegated_prefix="public_delegated_prefix_value",
+ )
+
+
+def test_get_rest_error():
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertPublicDelegatedPrefixeRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["public_delegated_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_live_migration": True,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent_prefix": "parent_prefix_value",
+ "public_delegated_sub_prefixs": [
+ {
+ "delegatee_project": "delegatee_project_value",
+ "description": "description_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_address": True,
+ "name": "name_value",
+ "region": "region_value",
+ "status": "status_value",
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertPublicDelegatedPrefixeRequest,
+):
+ transport_class = transports.PublicDelegatedPrefixesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.PublicDelegatedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "publicDelegatedPrefixResource",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.PublicDelegatedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.PublicDelegatedPrefixesRestInterceptor(),
+ )
+ client = PublicDelegatedPrefixesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.PublicDelegatedPrefixesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.PublicDelegatedPrefixesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertPublicDelegatedPrefixeRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertPublicDelegatedPrefixeRequest
+):
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["public_delegated_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_live_migration": True,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent_prefix": "parent_prefix_value",
+ "public_delegated_sub_prefixs": [
+ {
+ "delegatee_project": "delegatee_project_value",
+ "description": "description_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_address": True,
+ "name": "name_value",
+ "region": "region_value",
+ "status": "status_value",
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/publicDelegatedPrefixes"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertPublicDelegatedPrefixeRequest(),
+ project="project_value",
+ region="region_value",
+ public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertPublicDelegatedPrefixeRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["public_delegated_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_live_migration": True,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent_prefix": "parent_prefix_value",
+ "public_delegated_sub_prefixs": [
+ {
+ "delegatee_project": "delegatee_project_value",
+ "description": "description_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_address": True,
+ "name": "name_value",
+ "region": "region_value",
+ "status": "status_value",
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertPublicDelegatedPrefixeRequest,
+):
+ transport_class = transports.PublicDelegatedPrefixesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.PublicDelegatedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "publicDelegatedPrefixResource",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.PublicDelegatedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.PublicDelegatedPrefixesRestInterceptor(),
+ )
+ client = PublicDelegatedPrefixesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.PublicDelegatedPrefixesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.PublicDelegatedPrefixesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertPublicDelegatedPrefixeRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertPublicDelegatedPrefixeRequest
+):
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["public_delegated_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
"description": "description_value",
"fingerprint": "fingerprint_value",
"id": 205,
@@ -1840,11 +2501,312 @@ def test_insert_unary_rest_bad_request(
"region": "region_value",
"status": "status_value",
}
- ],
- "region": "region_value",
- "self_link": "self_link_value",
- "status": "status_value",
- }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/publicDelegatedPrefixes"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertPublicDelegatedPrefixeRequest(),
+ project="project_value",
+ region="region_value",
+ public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListPublicDelegatedPrefixesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.PublicDelegatedPrefixList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.PublicDelegatedPrefixList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(
+ request_type=compute.ListPublicDelegatedPrefixesRequest,
+):
+ transport_class = transports.PublicDelegatedPrefixesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.PublicDelegatedPrefixList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.PublicDelegatedPrefixList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.PublicDelegatedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.PublicDelegatedPrefixesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.PublicDelegatedPrefixesRestInterceptor(),
+ )
+ client = PublicDelegatedPrefixesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.PublicDelegatedPrefixesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.PublicDelegatedPrefixesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.PublicDelegatedPrefixList.to_json(
+ compute.PublicDelegatedPrefixList()
+ )
+
+ request = compute.ListPublicDelegatedPrefixesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.PublicDelegatedPrefixList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListPublicDelegatedPrefixesRequest
+):
+ client = PublicDelegatedPrefixesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1856,10 +2818,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.list(request)
-def test_insert_unary_rest_flattened():
+def test_list_rest_flattened():
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1868,7 +2830,7 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.PublicDelegatedPrefixList()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "region": "sample2"}
@@ -1877,21 +2839,18 @@ def test_insert_unary_rest_flattened():
mock_args = dict(
project="project_value",
region="region_value",
- public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
- creation_timestamp="creation_timestamp_value"
- ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.PublicDelegatedPrefixList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.list(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1904,7 +2863,7 @@ def test_insert_unary_rest_flattened():
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_list_rest_flattened_error(transport: str = "rest"):
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1913,72 +2872,190 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertPublicDelegatedPrefixeRequest(),
+ client.list(
+ compute.ListPublicDelegatedPrefixesRequest(),
project="project_value",
region="region_value",
- public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
- creation_timestamp="creation_timestamp_value"
- ),
)
-def test_insert_unary_rest_error():
+def test_list_rest_pager(transport: str = "rest"):
client = PublicDelegatedPrefixesClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
)
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.PublicDelegatedPrefixList(
+ items=[
+ compute.PublicDelegatedPrefix(),
+ compute.PublicDelegatedPrefix(),
+ compute.PublicDelegatedPrefix(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.PublicDelegatedPrefixList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.PublicDelegatedPrefixList(
+ items=[
+ compute.PublicDelegatedPrefix(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.PublicDelegatedPrefixList(
+ items=[
+ compute.PublicDelegatedPrefix(),
+ compute.PublicDelegatedPrefix(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.PublicDelegatedPrefixList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.PublicDelegatedPrefix) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
@pytest.mark.parametrize(
"request_type",
[
- compute.ListPublicDelegatedPrefixesRequest,
+ compute.PatchPublicDelegatedPrefixeRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_patch_rest(request_type):
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "public_delegated_prefix": "sample3",
+ }
+ request_init["public_delegated_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_live_migration": True,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent_prefix": "parent_prefix_value",
+ "public_delegated_sub_prefixs": [
+ {
+ "delegatee_project": "delegatee_project_value",
+ "description": "description_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_address": True,
+ "name": "name_value",
+ "region": "region_value",
+ "status": "status_value",
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PublicDelegatedPrefixList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicDelegatedPrefixList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(
- request_type=compute.ListPublicDelegatedPrefixesRequest,
+def test_patch_rest_required_fields(
+ request_type=compute.PatchPublicDelegatedPrefixeRequest,
):
transport_class = transports.PublicDelegatedPrefixesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["public_delegated_prefix"] = ""
request_init["region"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1991,32 +3068,27 @@ def test_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["publicDelegatedPrefix"] = "public_delegated_prefix_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "publicDelegatedPrefix" in jsonified_request
+ assert jsonified_request["publicDelegatedPrefix"] == "public_delegated_prefix_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
@@ -2027,7 +3099,7 @@ def test_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.PublicDelegatedPrefixList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2038,43 +3110,38 @@ def test_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicDelegatedPrefixList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_rest_unset_required_fields():
transport = transports.PublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
"project",
+ "publicDelegatedPrefix",
+ "publicDelegatedPrefixResource",
"region",
)
)
@@ -2082,7 +3149,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.PublicDelegatedPrefixesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2095,9 +3162,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.PublicDelegatedPrefixesRestInterceptor, "post_list"
+ transports.PublicDelegatedPrefixesRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.PublicDelegatedPrefixesRestInterceptor, "pre_list"
+ transports.PublicDelegatedPrefixesRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2112,19 +3179,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.PublicDelegatedPrefixList.to_json(
- compute.PublicDelegatedPrefixList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListPublicDelegatedPrefixesRequest()
+ request = compute.PatchPublicDelegatedPrefixeRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.PublicDelegatedPrefixList
+ post.return_value = compute.Operation
- client.list(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -2136,8 +3201,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListPublicDelegatedPrefixesRequest
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchPublicDelegatedPrefixeRequest
):
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2145,7 +3210,36 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "public_delegated_prefix": "sample3",
+ }
+ request_init["public_delegated_prefix_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_live_migration": True,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent_prefix": "parent_prefix_value",
+ "public_delegated_sub_prefixs": [
+ {
+ "delegatee_project": "delegatee_project_value",
+ "description": "description_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "is_address": True,
+ "name": "name_value",
+ "region": "region_value",
+ "status": "status_value",
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "status": "status_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2157,10 +3251,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch(request)
-def test_list_rest_flattened():
+def test_patch_rest_flattened():
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2169,40 +3263,48 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.PublicDelegatedPrefixList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "public_delegated_prefix": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ public_delegated_prefix="public_delegated_prefix_value",
+ public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.PublicDelegatedPrefixList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/publicDelegatedPrefixes"
+ "%s/compute/v1/projects/{project}/regions/{region}/publicDelegatedPrefixes/{public_delegated_prefix}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = PublicDelegatedPrefixesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2211,73 +3313,22 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListPublicDelegatedPrefixesRequest(),
+ client.patch(
+ compute.PatchPublicDelegatedPrefixeRequest(),
project="project_value",
region="region_value",
+ public_delegated_prefix="public_delegated_prefix_value",
+ public_delegated_prefix_resource=compute.PublicDelegatedPrefix(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_rest_error():
client = PublicDelegatedPrefixesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.PublicDelegatedPrefixList(
- items=[
- compute.PublicDelegatedPrefix(),
- compute.PublicDelegatedPrefix(),
- compute.PublicDelegatedPrefix(),
- ],
- next_page_token="abc",
- ),
- compute.PublicDelegatedPrefixList(
- items=[],
- next_page_token="def",
- ),
- compute.PublicDelegatedPrefixList(
- items=[
- compute.PublicDelegatedPrefix(),
- ],
- next_page_token="ghi",
- ),
- compute.PublicDelegatedPrefixList(
- items=[
- compute.PublicDelegatedPrefix(),
- compute.PublicDelegatedPrefix(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.PublicDelegatedPrefixList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.PublicDelegatedPrefix) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
@@ -2363,28 +3414,6 @@ def test_patch_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_patch_unary_rest_required_fields(
@@ -2744,6 +3773,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = PublicDelegatedPrefixesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_public_delegated_prefixes_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2780,6 +3822,14 @@ def test_public_delegated_prefixes_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_public_delegated_prefixes_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_autoscalers.py b/tests/unit/gapic/compute_v1/test_region_autoscalers.py
index 1d42f2dc7..d5fbd4056 100644
--- a/tests/unit/gapic/compute_v1/test_region_autoscalers.py
+++ b/tests/unit/gapic/compute_v1/test_region_autoscalers.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -545,7 +547,7 @@ def test_region_autoscalers_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -589,10 +591,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -617,7 +619,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteRegionAutoscalerRequest,
):
transport_class = transports.RegionAutoscalersRestTransport
@@ -690,14 +692,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.RegionAutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -716,7 +718,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.RegionAutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -756,7 +758,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -768,7 +770,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteRegionAutoscalerRequest
):
client = RegionAutoscalersClient(
@@ -789,10 +791,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -826,7 +828,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -839,7 +841,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -848,7 +850,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteRegionAutoscalerRequest(),
project="project_value",
region="region_value",
@@ -856,7 +858,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -865,11 +867,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRegionAutoscalerRequest,
+ compute.DeleteRegionAutoscalerRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -882,44 +884,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Autoscaler(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- recommended_size=1693,
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- status="status_value",
- target="target_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Autoscaler.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Autoscaler)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.recommended_size == 1693
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.status == "status_value"
- assert response.target == "target_value"
- assert response.zone == "zone_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetRegionAutoscalerRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteRegionAutoscalerRequest,
+):
transport_class = transports.RegionAutoscalersRestTransport
request_init = {}
@@ -937,7 +941,7 @@ def test_get_rest_required_fields(request_type=compute.GetRegionAutoscalerReques
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -948,7 +952,9 @@ def test_get_rest_required_fields(request_type=compute.GetRegionAutoscalerReques
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -966,7 +972,7 @@ def test_get_rest_required_fields(request_type=compute.GetRegionAutoscalerReques
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Autoscaler()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -977,32 +983,32 @@ def test_get_rest_required_fields(request_type=compute.GetRegionAutoscalerReques
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Autoscaler.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.RegionAutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"autoscaler",
@@ -1014,7 +1020,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.RegionAutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1027,9 +1033,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionAutoscalersRestInterceptor, "post_get"
+ transports.RegionAutoscalersRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.RegionAutoscalersRestInterceptor, "pre_get"
+ transports.RegionAutoscalersRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1044,17 +1050,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Autoscaler.to_json(compute.Autoscaler())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRegionAutoscalerRequest()
+ request = compute.DeleteRegionAutoscalerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Autoscaler
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1066,8 +1072,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRegionAutoscalerRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteRegionAutoscalerRequest
):
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1087,10 +1093,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1099,7 +1105,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Autoscaler()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1119,12 +1125,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Autoscaler.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1137,7 +1143,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1146,15 +1152,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRegionAutoscalerRequest(),
+ client.delete_unary(
+ compute.DeleteRegionAutoscalerRequest(),
project="project_value",
region="region_value",
autoscaler="autoscaler_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1163,132 +1169,65 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertRegionAutoscalerRequest,
+ compute.GetRegionAutoscalerRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["autoscaler_resource"] = {
- "autoscaling_policy": {
- "cool_down_period_sec": 2112,
- "cpu_utilization": {
- "predictive_method": "predictive_method_value",
- "utilization_target": 0.19540000000000002,
- },
- "custom_metric_utilizations": [
- {
- "filter": "filter_value",
- "metric": "metric_value",
- "single_instance_assignment": 0.2766,
- "utilization_target": 0.19540000000000002,
- "utilization_target_type": "utilization_target_type_value",
- }
- ],
- "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
- "max_num_replicas": 1703,
- "min_num_replicas": 1701,
- "mode": "mode_value",
- "scale_in_control": {
- "max_scaled_in_replicas": {
- "calculated": 1042,
- "fixed": 528,
- "percent": 753,
- },
- "time_window_sec": 1600,
- },
- "scaling_schedules": {},
- },
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "recommended_size": 1693,
- "region": "region_value",
- "scaling_schedule_status": {},
- "self_link": "self_link_value",
- "status": "status_value",
- "status_details": [{"message": "message_value", "type_": "type__value"}],
- "target": "target_value",
- "zone": "zone_value",
- }
+ request_init = {"project": "sample1", "region": "sample2", "autoscaler": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.Autoscaler(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ recommended_size=1693,
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
+ status="status_value",
+ target="target_value",
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Autoscaler.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.Autoscaler)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.recommended_size == 1693
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
+ assert response.status == "status_value"
+ assert response.target == "target_value"
assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertRegionAutoscalerRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetRegionAutoscalerRequest):
transport_class = transports.RegionAutoscalersRestTransport
request_init = {}
+ request_init["autoscaler"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -1302,22 +1241,23 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["autoscaler"] = "autoscaler_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "autoscaler" in jsonified_request
+ assert jsonified_request["autoscaler"] == "autoscaler_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -1330,7 +1270,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Autoscaler()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1341,36 +1281,35 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Autoscaler.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.RegionAutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
- "autoscalerResource",
+ "autoscaler",
"project",
"region",
)
@@ -1379,7 +1318,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.RegionAutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1392,9 +1331,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionAutoscalersRestInterceptor, "post_insert"
+ transports.RegionAutoscalersRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.RegionAutoscalersRestInterceptor, "pre_insert"
+ transports.RegionAutoscalersRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1409,17 +1348,17 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.Autoscaler.to_json(compute.Autoscaler())
- request = compute.InsertRegionAutoscalerRequest()
+ request = compute.GetRegionAutoscalerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.Autoscaler
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1431,8 +1370,1525 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertRegionAutoscalerRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRegionAutoscalerRequest
+):
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "autoscaler": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Autoscaler()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "autoscaler": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ autoscaler="autoscaler_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Autoscaler.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/autoscalers/{autoscaler}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetRegionAutoscalerRequest(),
+ project="project_value",
+ region="region_value",
+ autoscaler="autoscaler_value",
+ )
+
+
+def test_get_rest_error():
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionAutoscalerRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["autoscaler_resource"] = {
+ "autoscaling_policy": {
+ "cool_down_period_sec": 2112,
+ "cpu_utilization": {
+ "predictive_method": "predictive_method_value",
+ "utilization_target": 0.19540000000000002,
+ },
+ "custom_metric_utilizations": [
+ {
+ "filter": "filter_value",
+ "metric": "metric_value",
+ "single_instance_assignment": 0.2766,
+ "utilization_target": 0.19540000000000002,
+ "utilization_target_type": "utilization_target_type_value",
+ }
+ ],
+ "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
+ "max_num_replicas": 1703,
+ "min_num_replicas": 1701,
+ "mode": "mode_value",
+ "scale_in_control": {
+ "max_scaled_in_replicas": {
+ "calculated": 1042,
+ "fixed": 528,
+ "percent": 753,
+ },
+ "time_window_sec": 1600,
+ },
+ "scaling_schedules": {},
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recommended_size": 1693,
+ "region": "region_value",
+ "scaling_schedule_status": {},
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "status_details": [{"message": "message_value", "type_": "type__value"}],
+ "target": "target_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertRegionAutoscalerRequest,
+):
+ transport_class = transports.RegionAutoscalersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.RegionAutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "autoscalerResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.RegionAutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionAutoscalersRestInterceptor(),
+ )
+ client = RegionAutoscalersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionAutoscalersRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionAutoscalersRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionAutoscalerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionAutoscalerRequest
+):
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["autoscaler_resource"] = {
+ "autoscaling_policy": {
+ "cool_down_period_sec": 2112,
+ "cpu_utilization": {
+ "predictive_method": "predictive_method_value",
+ "utilization_target": 0.19540000000000002,
+ },
+ "custom_metric_utilizations": [
+ {
+ "filter": "filter_value",
+ "metric": "metric_value",
+ "single_instance_assignment": 0.2766,
+ "utilization_target": 0.19540000000000002,
+ "utilization_target_type": "utilization_target_type_value",
+ }
+ ],
+ "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
+ "max_num_replicas": 1703,
+ "min_num_replicas": 1701,
+ "mode": "mode_value",
+ "scale_in_control": {
+ "max_scaled_in_replicas": {
+ "calculated": 1042,
+ "fixed": 528,
+ "percent": 753,
+ },
+ "time_window_sec": 1600,
+ },
+ "scaling_schedules": {},
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recommended_size": 1693,
+ "region": "region_value",
+ "scaling_schedule_status": {},
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "status_details": [{"message": "message_value", "type_": "type__value"}],
+ "target": "target_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ autoscaler_resource=compute.Autoscaler(
+ autoscaling_policy=compute.AutoscalingPolicy(cool_down_period_sec=2112)
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/autoscalers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertRegionAutoscalerRequest(),
+ project="project_value",
+ region="region_value",
+ autoscaler_resource=compute.Autoscaler(
+ autoscaling_policy=compute.AutoscalingPolicy(cool_down_period_sec=2112)
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionAutoscalerRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["autoscaler_resource"] = {
+ "autoscaling_policy": {
+ "cool_down_period_sec": 2112,
+ "cpu_utilization": {
+ "predictive_method": "predictive_method_value",
+ "utilization_target": 0.19540000000000002,
+ },
+ "custom_metric_utilizations": [
+ {
+ "filter": "filter_value",
+ "metric": "metric_value",
+ "single_instance_assignment": 0.2766,
+ "utilization_target": 0.19540000000000002,
+ "utilization_target_type": "utilization_target_type_value",
+ }
+ ],
+ "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
+ "max_num_replicas": 1703,
+ "min_num_replicas": 1701,
+ "mode": "mode_value",
+ "scale_in_control": {
+ "max_scaled_in_replicas": {
+ "calculated": 1042,
+ "fixed": 528,
+ "percent": 753,
+ },
+ "time_window_sec": 1600,
+ },
+ "scaling_schedules": {},
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recommended_size": 1693,
+ "region": "region_value",
+ "scaling_schedule_status": {},
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "status_details": [{"message": "message_value", "type_": "type__value"}],
+ "target": "target_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertRegionAutoscalerRequest,
+):
+ transport_class = transports.RegionAutoscalersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.RegionAutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "autoscalerResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionAutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionAutoscalersRestInterceptor(),
+ )
+ client = RegionAutoscalersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionAutoscalersRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionAutoscalersRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionAutoscalerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionAutoscalerRequest
+):
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["autoscaler_resource"] = {
+ "autoscaling_policy": {
+ "cool_down_period_sec": 2112,
+ "cpu_utilization": {
+ "predictive_method": "predictive_method_value",
+ "utilization_target": 0.19540000000000002,
+ },
+ "custom_metric_utilizations": [
+ {
+ "filter": "filter_value",
+ "metric": "metric_value",
+ "single_instance_assignment": 0.2766,
+ "utilization_target": 0.19540000000000002,
+ "utilization_target_type": "utilization_target_type_value",
+ }
+ ],
+ "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
+ "max_num_replicas": 1703,
+ "min_num_replicas": 1701,
+ "mode": "mode_value",
+ "scale_in_control": {
+ "max_scaled_in_replicas": {
+ "calculated": 1042,
+ "fixed": 528,
+ "percent": 753,
+ },
+ "time_window_sec": 1600,
+ },
+ "scaling_schedules": {},
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recommended_size": 1693,
+ "region": "region_value",
+ "scaling_schedule_status": {},
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "status_details": [{"message": "message_value", "type_": "type__value"}],
+ "target": "target_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ autoscaler_resource=compute.Autoscaler(
+ autoscaling_policy=compute.AutoscalingPolicy(cool_down_period_sec=2112)
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/autoscalers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertRegionAutoscalerRequest(),
+ project="project_value",
+ region="region_value",
+ autoscaler_resource=compute.Autoscaler(
+ autoscaling_policy=compute.AutoscalingPolicy(cool_down_period_sec=2112)
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListRegionAutoscalersRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RegionAutoscalerList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.RegionAutoscalerList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListRegionAutoscalersRequest):
+ transport_class = transports.RegionAutoscalersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RegionAutoscalerList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.RegionAutoscalerList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.RegionAutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.RegionAutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionAutoscalersRestInterceptor(),
+ )
+ client = RegionAutoscalersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionAutoscalersRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.RegionAutoscalersRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.RegionAutoscalerList.to_json(
+ compute.RegionAutoscalerList()
+ )
+
+ request = compute.ListRegionAutoscalersRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.RegionAutoscalerList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListRegionAutoscalersRequest
+):
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RegionAutoscalerList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.RegionAutoscalerList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/autoscalers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListRegionAutoscalersRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.RegionAutoscalerList(
+ items=[
+ compute.Autoscaler(),
+ compute.Autoscaler(),
+ compute.Autoscaler(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.RegionAutoscalerList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.RegionAutoscalerList(
+ items=[
+ compute.Autoscaler(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.RegionAutoscalerList(
+ items=[
+ compute.Autoscaler(),
+ compute.Autoscaler(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.RegionAutoscalerList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Autoscaler) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRegionAutoscalerRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["autoscaler_resource"] = {
+ "autoscaling_policy": {
+ "cool_down_period_sec": 2112,
+ "cpu_utilization": {
+ "predictive_method": "predictive_method_value",
+ "utilization_target": 0.19540000000000002,
+ },
+ "custom_metric_utilizations": [
+ {
+ "filter": "filter_value",
+ "metric": "metric_value",
+ "single_instance_assignment": 0.2766,
+ "utilization_target": 0.19540000000000002,
+ "utilization_target_type": "utilization_target_type_value",
+ }
+ ],
+ "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
+ "max_num_replicas": 1703,
+ "min_num_replicas": 1701,
+ "mode": "mode_value",
+ "scale_in_control": {
+ "max_scaled_in_replicas": {
+ "calculated": 1042,
+ "fixed": 528,
+ "percent": 753,
+ },
+ "time_window_sec": 1600,
+ },
+ "scaling_schedules": {},
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recommended_size": 1693,
+ "region": "region_value",
+ "scaling_schedule_status": {},
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "status_details": [{"message": "message_value", "type_": "type__value"}],
+ "target": "target_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchRegionAutoscalerRequest):
+ transport_class = transports.RegionAutoscalersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "autoscaler",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionAutoscalersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.RegionAutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "autoscaler",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "autoscalerResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.RegionAutoscalersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionAutoscalersRestInterceptor(),
+ )
+ client = RegionAutoscalersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionAutoscalersRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.RegionAutoscalersRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchRegionAutoscalerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRegionAutoscalerRequest
):
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1496,10 +2952,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.patch(request)
-def test_insert_unary_rest_flattened():
+def test_patch_rest_flattened():
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1531,7 +2987,7 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1544,7 +3000,7 @@ def test_insert_unary_rest_flattened():
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1553,8 +3009,8 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertRegionAutoscalerRequest(),
+ client.patch(
+ compute.PatchRegionAutoscalerRequest(),
project="project_value",
region="region_value",
autoscaler_resource=compute.Autoscaler(
@@ -1563,7 +3019,7 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_insert_unary_rest_error():
+def test_patch_rest_error():
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1572,11 +3028,11 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListRegionAutoscalersRequest,
+ compute.PatchRegionAutoscalerRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_patch_unary_rest(request_type):
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1584,35 +3040,95 @@ def test_list_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2"}
+ request_init["autoscaler_resource"] = {
+ "autoscaling_policy": {
+ "cool_down_period_sec": 2112,
+ "cpu_utilization": {
+ "predictive_method": "predictive_method_value",
+ "utilization_target": 0.19540000000000002,
+ },
+ "custom_metric_utilizations": [
+ {
+ "filter": "filter_value",
+ "metric": "metric_value",
+ "single_instance_assignment": 0.2766,
+ "utilization_target": 0.19540000000000002,
+ "utilization_target_type": "utilization_target_type_value",
+ }
+ ],
+ "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
+ "max_num_replicas": 1703,
+ "min_num_replicas": 1701,
+ "mode": "mode_value",
+ "scale_in_control": {
+ "max_scaled_in_replicas": {
+ "calculated": 1042,
+ "fixed": 528,
+ "percent": 753,
+ },
+ "time_window_sec": 1600,
+ },
+ "scaling_schedules": {},
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recommended_size": 1693,
+ "region": "region_value",
+ "scaling_schedule_status": {},
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "status_details": [{"message": "message_value", "type_": "type__value"}],
+ "target": "target_value",
+ "zone": "zone_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RegionAutoscalerList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RegionAutoscalerList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
-
- # Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ response = client.patch_unary(request)
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
-def test_list_rest_required_fields(request_type=compute.ListRegionAutoscalersRequest):
+
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchRegionAutoscalerRequest,
+):
transport_class = transports.RegionAutoscalersRestTransport
request_init = {}
@@ -1629,7 +3145,7 @@ def test_list_rest_required_fields(request_type=compute.ListRegionAutoscalersReq
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1639,15 +3155,12 @@ def test_list_rest_required_fields(request_type=compute.ListRegionAutoscalersReq
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
+ "autoscaler",
+ "request_id",
)
)
jsonified_request.update(unset_fields)
@@ -1665,7 +3178,7 @@ def test_list_rest_required_fields(request_type=compute.ListRegionAutoscalersReq
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.RegionAutoscalerList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1676,42 +3189,41 @@ def test_list_rest_required_fields(request_type=compute.ListRegionAutoscalersReq
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RegionAutoscalerList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_unary_rest_unset_required_fields():
transport = transports.RegionAutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "autoscaler",
+ "requestId",
)
)
& set(
(
+ "autoscalerResource",
"project",
"region",
)
@@ -1720,7 +3232,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_unary_rest_interceptors(null_interceptor):
transport = transports.RegionAutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1733,9 +3245,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionAutoscalersRestInterceptor, "post_list"
+ transports.RegionAutoscalersRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.RegionAutoscalersRestInterceptor, "pre_list"
+ transports.RegionAutoscalersRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1750,19 +3262,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.RegionAutoscalerList.to_json(
- compute.RegionAutoscalerList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListRegionAutoscalersRequest()
+ request = compute.PatchRegionAutoscalerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.RegionAutoscalerList
+ post.return_value = compute.Operation
- client.list(
+ client.patch_unary(
request,
metadata=[
("key", "val"),
@@ -1774,8 +3284,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListRegionAutoscalersRequest
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRegionAutoscalerRequest
):
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1784,6 +3294,50 @@ def test_list_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2"}
+ request_init["autoscaler_resource"] = {
+ "autoscaling_policy": {
+ "cool_down_period_sec": 2112,
+ "cpu_utilization": {
+ "predictive_method": "predictive_method_value",
+ "utilization_target": 0.19540000000000002,
+ },
+ "custom_metric_utilizations": [
+ {
+ "filter": "filter_value",
+ "metric": "metric_value",
+ "single_instance_assignment": 0.2766,
+ "utilization_target": 0.19540000000000002,
+ "utilization_target_type": "utilization_target_type_value",
+ }
+ ],
+ "load_balancing_utilization": {"utilization_target": 0.19540000000000002},
+ "max_num_replicas": 1703,
+ "min_num_replicas": 1701,
+ "mode": "mode_value",
+ "scale_in_control": {
+ "max_scaled_in_replicas": {
+ "calculated": 1042,
+ "fixed": 528,
+ "percent": 753,
+ },
+ "time_window_sec": 1600,
+ },
+ "scaling_schedules": {},
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recommended_size": 1693,
+ "region": "region_value",
+ "scaling_schedule_status": {},
+ "self_link": "self_link_value",
+ "status": "status_value",
+ "status_details": [{"message": "message_value", "type_": "type__value"}],
+ "target": "target_value",
+ "zone": "zone_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1795,10 +3349,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch_unary(request)
-def test_list_rest_flattened():
+def test_patch_unary_rest_flattened():
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1807,7 +3361,7 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RegionAutoscalerList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "region": "sample2"}
@@ -1816,18 +3370,21 @@ def test_list_rest_flattened():
mock_args = dict(
project="project_value",
region="region_value",
+ autoscaler_resource=compute.Autoscaler(
+ autoscaling_policy=compute.AutoscalingPolicy(cool_down_period_sec=2112)
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RegionAutoscalerList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1840,7 +3397,7 @@ def test_list_rest_flattened():
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1849,82 +3406,30 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListRegionAutoscalersRequest(),
+ client.patch_unary(
+ compute.PatchRegionAutoscalerRequest(),
project="project_value",
region="region_value",
+ autoscaler_resource=compute.Autoscaler(
+ autoscaling_policy=compute.AutoscalingPolicy(cool_down_period_sec=2112)
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_unary_rest_error():
client = RegionAutoscalersClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.RegionAutoscalerList(
- items=[
- compute.Autoscaler(),
- compute.Autoscaler(),
- compute.Autoscaler(),
- ],
- next_page_token="abc",
- ),
- compute.RegionAutoscalerList(
- items=[],
- next_page_token="def",
- ),
- compute.RegionAutoscalerList(
- items=[
- compute.Autoscaler(),
- ],
- next_page_token="ghi",
- ),
- compute.RegionAutoscalerList(
- items=[
- compute.Autoscaler(),
- compute.Autoscaler(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.RegionAutoscalerList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Autoscaler) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchRegionAutoscalerRequest,
+ compute.UpdateRegionAutoscalerRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_update_rest(request_type):
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2012,10 +3517,10 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.update(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2040,8 +3545,8 @@ def test_patch_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchRegionAutoscalerRequest,
+def test_update_rest_required_fields(
+ request_type=compute.UpdateRegionAutoscalerRequest,
):
transport_class = transports.RegionAutoscalersRestTransport
@@ -2059,7 +3564,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2069,7 +3574,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
@@ -2103,7 +3608,7 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "put",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -2115,19 +3620,19 @@ def test_patch_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.update(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_update_rest_unset_required_fields():
transport = transports.RegionAutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.update._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
@@ -2146,7 +3651,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_update_rest_interceptors(null_interceptor):
transport = transports.RegionAutoscalersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2159,9 +3664,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionAutoscalersRestInterceptor, "post_patch"
+ transports.RegionAutoscalersRestInterceptor, "post_update"
) as post, mock.patch.object(
- transports.RegionAutoscalersRestInterceptor, "pre_patch"
+ transports.RegionAutoscalersRestInterceptor, "pre_update"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2178,7 +3683,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchRegionAutoscalerRequest()
+ request = compute.UpdateRegionAutoscalerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2186,7 +3691,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.update(
request,
metadata=[
("key", "val"),
@@ -2198,8 +3703,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchRegionAutoscalerRequest
+def test_update_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateRegionAutoscalerRequest
):
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2263,10 +3768,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.update(request)
-def test_patch_unary_rest_flattened():
+def test_update_rest_flattened():
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2298,7 +3803,7 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.update(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -2311,7 +3816,7 @@ def test_patch_unary_rest_flattened():
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_rest_flattened_error(transport: str = "rest"):
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2320,8 +3825,8 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchRegionAutoscalerRequest(),
+ client.update(
+ compute.UpdateRegionAutoscalerRequest(),
project="project_value",
region="region_value",
autoscaler_resource=compute.Autoscaler(
@@ -2330,7 +3835,7 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_patch_unary_rest_error():
+def test_update_rest_error():
client = RegionAutoscalersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2435,28 +3940,6 @@ def test_update_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_unary_rest_required_fields(
@@ -2830,6 +4313,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionAutoscalersClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_autoscalers_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2866,6 +4362,14 @@ def test_region_autoscalers_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_autoscalers_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_backend_services.py b/tests/unit/gapic/compute_v1/test_region_backend_services.py
index 50b071919..75681a41c 100644
--- a/tests/unit/gapic/compute_v1/test_region_backend_services.py
+++ b/tests/unit/gapic/compute_v1/test_region_backend_services.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -555,7 +557,7 @@ def test_region_backend_services_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -603,10 +605,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -631,7 +633,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteRegionBackendServiceRequest,
):
transport_class = transports.RegionBackendServicesRestTransport
@@ -704,14 +706,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.RegionBackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -730,7 +732,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.RegionBackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -770,7 +772,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -782,7 +784,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteRegionBackendServiceRequest
):
client = RegionBackendServicesClient(
@@ -807,10 +809,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -844,7 +846,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -857,7 +859,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -866,7 +868,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteRegionBackendServiceRequest(),
project="project_value",
region="region_value",
@@ -874,7 +876,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -883,11 +885,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRegionBackendServiceRequest,
+ compute.DeleteRegionBackendServiceRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -904,68 +906,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendService(
- affinity_cookie_ttl_sec=2432,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
- custom_request_headers=["custom_request_headers_value"],
- custom_response_headers=["custom_response_headers_value"],
description="description_value",
- edge_security_policy="edge_security_policy_value",
- enable_c_d_n=True,
- fingerprint="fingerprint_value",
- health_checks=["health_checks_value"],
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- load_balancing_scheme="load_balancing_scheme_value",
- locality_lb_policy="locality_lb_policy_value",
name="name_value",
- network="network_value",
- port=453,
- port_name="port_name_value",
- protocol="protocol_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
- security_policy="security_policy_value",
self_link="self_link_value",
- session_affinity="session_affinity_value",
- timeout_sec=1185,
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendService.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.BackendService)
- assert response.affinity_cookie_ttl_sec == 2432
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.custom_request_headers == ["custom_request_headers_value"]
- assert response.custom_response_headers == ["custom_response_headers_value"]
- assert response.description == "description_value"
- assert response.edge_security_policy == "edge_security_policy_value"
- assert response.enable_c_d_n is True
- assert response.fingerprint == "fingerprint_value"
- assert response.health_checks == ["health_checks_value"]
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.load_balancing_scheme == "load_balancing_scheme_value"
- assert response.locality_lb_policy == "locality_lb_policy_value"
- assert response.name == "name_value"
- assert response.network == "network_value"
- assert response.port == 453
- assert response.port_name == "port_name_value"
- assert response.protocol == "protocol_value"
- assert response.region == "region_value"
- assert response.security_policy == "security_policy_value"
- assert response.self_link == "self_link_value"
- assert response.session_affinity == "session_affinity_value"
- assert response.timeout_sec == 1185
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetRegionBackendServiceRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteRegionBackendServiceRequest,
+):
transport_class = transports.RegionBackendServicesRestTransport
request_init = {}
@@ -983,7 +963,7 @@ def test_get_rest_required_fields(request_type=compute.GetRegionBackendServiceRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -994,7 +974,9 @@ def test_get_rest_required_fields(request_type=compute.GetRegionBackendServiceRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1012,7 +994,7 @@ def test_get_rest_required_fields(request_type=compute.GetRegionBackendServiceRe
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.BackendService()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1023,32 +1005,32 @@ def test_get_rest_required_fields(request_type=compute.GetRegionBackendServiceRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendService.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.RegionBackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"backendService",
@@ -1060,7 +1042,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.RegionBackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1073,9 +1055,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionBackendServicesRestInterceptor, "post_get"
+ transports.RegionBackendServicesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.RegionBackendServicesRestInterceptor, "pre_get"
+ transports.RegionBackendServicesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1090,19 +1072,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.BackendService.to_json(
- compute.BackendService()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRegionBackendServiceRequest()
+ request = compute.DeleteRegionBackendServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.BackendService
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1114,8 +1094,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRegionBackendServiceRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteRegionBackendServiceRequest
):
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1139,10 +1119,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1151,7 +1131,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendService()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1171,12 +1151,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendService.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1189,7 +1169,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1198,15 +1178,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRegionBackendServiceRequest(),
+ client.delete_unary(
+ compute.DeleteRegionBackendServiceRequest(),
project="project_value",
region="region_value",
backend_service="backend_service_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1215,11 +1195,11 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetHealthRegionBackendServiceRequest,
+ compute.GetRegionBackendServiceRequest,
dict,
],
)
-def test_get_health_rest(request_type):
+def test_get_rest(request_type):
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1231,32 +1211,73 @@ def test_get_health_rest(request_type):
"region": "sample2",
"backend_service": "sample3",
}
- request_init["resource_group_reference_resource"] = {"group": "group_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendServiceGroupHealth(
+ return_value = compute.BackendService(
+ affinity_cookie_ttl_sec=2432,
+ creation_timestamp="creation_timestamp_value",
+ custom_request_headers=["custom_request_headers_value"],
+ custom_response_headers=["custom_response_headers_value"],
+ description="description_value",
+ edge_security_policy="edge_security_policy_value",
+ enable_c_d_n=True,
+ fingerprint="fingerprint_value",
+ health_checks=["health_checks_value"],
+ id=205,
kind="kind_value",
+ load_balancing_scheme="load_balancing_scheme_value",
+ locality_lb_policy="locality_lb_policy_value",
+ name="name_value",
+ network="network_value",
+ port=453,
+ port_name="port_name_value",
+ protocol="protocol_value",
+ region="region_value",
+ security_policy="security_policy_value",
+ self_link="self_link_value",
+ session_affinity="session_affinity_value",
+ timeout_sec=1185,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendServiceGroupHealth.to_json(return_value)
+ json_return_value = compute.BackendService.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_health(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.BackendServiceGroupHealth)
+ assert isinstance(response, compute.BackendService)
+ assert response.affinity_cookie_ttl_sec == 2432
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.custom_request_headers == ["custom_request_headers_value"]
+ assert response.custom_response_headers == ["custom_response_headers_value"]
+ assert response.description == "description_value"
+ assert response.edge_security_policy == "edge_security_policy_value"
+ assert response.enable_c_d_n is True
+ assert response.fingerprint == "fingerprint_value"
+ assert response.health_checks == ["health_checks_value"]
+ assert response.id == 205
assert response.kind == "kind_value"
+ assert response.load_balancing_scheme == "load_balancing_scheme_value"
+ assert response.locality_lb_policy == "locality_lb_policy_value"
+ assert response.name == "name_value"
+ assert response.network == "network_value"
+ assert response.port == 453
+ assert response.port_name == "port_name_value"
+ assert response.protocol == "protocol_value"
+ assert response.region == "region_value"
+ assert response.security_policy == "security_policy_value"
+ assert response.self_link == "self_link_value"
+ assert response.session_affinity == "session_affinity_value"
+ assert response.timeout_sec == 1185
-def test_get_health_rest_required_fields(
- request_type=compute.GetHealthRegionBackendServiceRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetRegionBackendServiceRequest):
transport_class = transports.RegionBackendServicesRestTransport
request_init = {}
@@ -1274,7 +1295,7 @@ def test_get_health_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_health._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1285,7 +1306,7 @@ def test_get_health_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_health._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1303,7 +1324,7 @@ def test_get_health_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.BackendServiceGroupHealth()
+ return_value = compute.BackendService()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1314,31 +1335,30 @@ def test_get_health_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendServiceGroupHealth.to_json(return_value)
+ json_return_value = compute.BackendService.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_health(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_health_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.RegionBackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_health._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
set(())
& set(
@@ -1346,14 +1366,13 @@ def test_get_health_rest_unset_required_fields():
"backendService",
"project",
"region",
- "resourceGroupReferenceResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_health_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.RegionBackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1366,9 +1385,9 @@ def test_get_health_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionBackendServicesRestInterceptor, "post_get_health"
+ transports.RegionBackendServicesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.RegionBackendServicesRestInterceptor, "pre_get_health"
+ transports.RegionBackendServicesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1383,19 +1402,19 @@ def test_get_health_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.BackendServiceGroupHealth.to_json(
- compute.BackendServiceGroupHealth()
+ req.return_value._content = compute.BackendService.to_json(
+ compute.BackendService()
)
- request = compute.GetHealthRegionBackendServiceRequest()
+ request = compute.GetRegionBackendServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.BackendServiceGroupHealth
+ post.return_value = compute.BackendService
- client.get_health(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1407,8 +1426,8 @@ def test_get_health_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_health_rest_bad_request(
- transport: str = "rest", request_type=compute.GetHealthRegionBackendServiceRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRegionBackendServiceRequest
):
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1421,7 +1440,6 @@ def test_get_health_rest_bad_request(
"region": "sample2",
"backend_service": "sample3",
}
- request_init["resource_group_reference_resource"] = {"group": "group_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1433,10 +1451,10 @@ def test_get_health_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_health(request)
+ client.get(request)
-def test_get_health_rest_flattened():
+def test_get_rest_flattened():
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1445,7 +1463,7 @@ def test_get_health_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendServiceGroupHealth()
+ return_value = compute.BackendService()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1459,34 +1477,31 @@ def test_get_health_rest_flattened():
project="project_value",
region="region_value",
backend_service="backend_service_value",
- resource_group_reference_resource=compute.ResourceGroupReference(
- group="group_value"
- ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendServiceGroupHealth.to_json(return_value)
+ json_return_value = compute.BackendService.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_health(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/backendServices/{backend_service}/getHealth"
+ "%s/compute/v1/projects/{project}/regions/{region}/backendServices/{backend_service}"
% client.transport._host,
args[1],
)
-def test_get_health_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1495,18 +1510,15 @@ def test_get_health_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_health(
- compute.GetHealthRegionBackendServiceRequest(),
+ client.get(
+ compute.GetRegionBackendServiceRequest(),
project="project_value",
region="region_value",
backend_service="backend_service_value",
- resource_group_reference_resource=compute.ResourceGroupReference(
- group="group_value"
- ),
)
-def test_get_health_rest_error():
+def test_get_rest_error():
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1515,235 +1527,52 @@ def test_get_health_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertRegionBackendServiceRequest,
+ compute.GetHealthRegionBackendServiceRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_health_rest(request_type):
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["backend_service_resource"] = {
- "affinity_cookie_ttl_sec": 2432,
- "backends": [
- {
- "balancing_mode": "balancing_mode_value",
- "capacity_scaler": 0.1575,
- "description": "description_value",
- "failover": True,
- "group": "group_value",
- "max_connections": 1608,
- "max_connections_per_endpoint": 2990,
- "max_connections_per_instance": 2978,
- "max_rate": 849,
- "max_rate_per_endpoint": 0.22310000000000002,
- "max_rate_per_instance": 0.22190000000000001,
- "max_utilization": 0.1633,
- }
- ],
- "cdn_policy": {
- "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
- "cache_key_policy": {
- "include_host": True,
- "include_http_headers": [
- "include_http_headers_value_1",
- "include_http_headers_value_2",
- ],
- "include_named_cookies": [
- "include_named_cookies_value_1",
- "include_named_cookies_value_2",
- ],
- "include_protocol": True,
- "include_query_string": True,
- "query_string_blacklist": [
- "query_string_blacklist_value_1",
- "query_string_blacklist_value_2",
- ],
- "query_string_whitelist": [
- "query_string_whitelist_value_1",
- "query_string_whitelist_value_2",
- ],
- },
- "cache_mode": "cache_mode_value",
- "client_ttl": 1074,
- "default_ttl": 1176,
- "max_ttl": 761,
- "negative_caching": True,
- "negative_caching_policy": [{"code": 411, "ttl": 340}],
- "request_coalescing": True,
- "serve_while_stale": 1813,
- "signed_url_cache_max_age_sec": 2890,
- "signed_url_key_names": [
- "signed_url_key_names_value_1",
- "signed_url_key_names_value_2",
- ],
- },
- "circuit_breakers": {
- "max_connections": 1608,
- "max_pending_requests": 2149,
- "max_requests": 1313,
- "max_requests_per_connection": 2902,
- "max_retries": 1187,
- },
- "connection_draining": {"draining_timeout_sec": 2124},
- "connection_tracking_policy": {
- "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
- "enable_strong_affinity": True,
- "idle_timeout_sec": 1694,
- "tracking_mode": "tracking_mode_value",
- },
- "consistent_hash": {
- "http_cookie": {
- "name": "name_value",
- "path": "path_value",
- "ttl": {"nanos": 543, "seconds": 751},
- },
- "http_header_name": "http_header_name_value",
- "minimum_ring_size": 1829,
- },
- "creation_timestamp": "creation_timestamp_value",
- "custom_request_headers": [
- "custom_request_headers_value_1",
- "custom_request_headers_value_2",
- ],
- "custom_response_headers": [
- "custom_response_headers_value_1",
- "custom_response_headers_value_2",
- ],
- "description": "description_value",
- "edge_security_policy": "edge_security_policy_value",
- "enable_c_d_n": True,
- "failover_policy": {
- "disable_connection_drain_on_failover": True,
- "drop_traffic_if_unhealthy": True,
- "failover_ratio": 0.1494,
- },
- "fingerprint": "fingerprint_value",
- "health_checks": ["health_checks_value_1", "health_checks_value_2"],
- "iap": {
- "enabled": True,
- "oauth2_client_id": "oauth2_client_id_value",
- "oauth2_client_secret": "oauth2_client_secret_value",
- "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
- },
- "id": 205,
- "kind": "kind_value",
- "load_balancing_scheme": "load_balancing_scheme_value",
- "locality_lb_policies": [
- {
- "custom_policy": {"data": "data_value", "name": "name_value"},
- "policy": {"name": "name_value"},
- }
- ],
- "locality_lb_policy": "locality_lb_policy_value",
- "log_config": {"enable": True, "sample_rate": 0.1165},
- "max_stream_duration": {},
- "name": "name_value",
- "network": "network_value",
- "outlier_detection": {
- "base_ejection_time": {},
- "consecutive_errors": 1956,
- "consecutive_gateway_failure": 2880,
- "enforcing_consecutive_errors": 3006,
- "enforcing_consecutive_gateway_failure": 3930,
- "enforcing_success_rate": 2334,
- "interval": {},
- "max_ejection_percent": 2118,
- "success_rate_minimum_hosts": 2799,
- "success_rate_request_volume": 2915,
- "success_rate_stdev_factor": 2663,
- },
- "port": 453,
- "port_name": "port_name_value",
- "protocol": "protocol_value",
- "region": "region_value",
- "security_policy": "security_policy_value",
- "security_settings": {
- "client_tls_policy": "client_tls_policy_value",
- "subject_alt_names": [
- "subject_alt_names_value_1",
- "subject_alt_names_value_2",
- ],
- },
- "self_link": "self_link_value",
- "session_affinity": "session_affinity_value",
- "subsetting": {"policy": "policy_value"},
- "timeout_sec": 1185,
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "backend_service": "sample3",
}
+ request_init["resource_group_reference_resource"] = {"group": "group_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
+ return_value = compute.BackendServiceGroupHealth(
kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
- self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.BackendServiceGroupHealth.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get_health(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert isinstance(response, compute.BackendServiceGroupHealth)
assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertRegionBackendServiceRequest,
+def test_get_health_rest_required_fields(
+ request_type=compute.GetHealthRegionBackendServiceRequest,
):
transport_class = transports.RegionBackendServicesRestTransport
request_init = {}
+ request_init["backend_service"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -1757,22 +1586,23 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get_health._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["backendService"] = "backend_service_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get_health._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "backendService" in jsonified_request
+ assert jsonified_request["backendService"] == "backend_service_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -1785,7 +1615,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.BackendServiceGroupHealth()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1804,37 +1634,38 @@ def test_insert_unary_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.BackendServiceGroupHealth.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get_health(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_health_rest_unset_required_fields():
transport = transports.RegionBackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get_health._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
- "backendServiceResource",
+ "backendService",
"project",
"region",
+ "resourceGroupReferenceResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_health_rest_interceptors(null_interceptor):
transport = transports.RegionBackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1847,9 +1678,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionBackendServicesRestInterceptor, "post_insert"
+ transports.RegionBackendServicesRestInterceptor, "post_get_health"
) as post, mock.patch.object(
- transports.RegionBackendServicesRestInterceptor, "pre_insert"
+ transports.RegionBackendServicesRestInterceptor, "pre_get_health"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1864,17 +1695,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
-
- request = compute.InsertRegionBackendServiceRequest()
+ req.return_value._content = compute.BackendServiceGroupHealth.to_json(
+ compute.BackendServiceGroupHealth()
+ )
+
+ request = compute.GetHealthRegionBackendServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.BackendServiceGroupHealth
- client.insert_unary(
+ client.get_health(
request,
metadata=[
("key", "val"),
@@ -1886,14 +1719,124 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertRegionBackendServiceRequest
+def test_get_health_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetHealthRegionBackendServiceRequest
):
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
)
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "backend_service": "sample3",
+ }
+ request_init["resource_group_reference_resource"] = {"group": "group_value"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_health(request)
+
+
+def test_get_health_rest_flattened():
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendServiceGroupHealth()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "backend_service": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ backend_service="backend_service_value",
+ resource_group_reference_resource=compute.ResourceGroupReference(
+ group="group_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendServiceGroupHealth.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_health(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/backendServices/{backend_service}/getHealth"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_health_rest_flattened_error(transport: str = "rest"):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_health(
+ compute.GetHealthRegionBackendServiceRequest(),
+ project="project_value",
+ region="region_value",
+ backend_service="backend_service_value",
+ resource_group_reference_resource=compute.ResourceGroupReference(
+ group="group_value"
+ ),
+ )
+
+
+def test_get_health_rest_error():
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionBackendServiceRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2"}
request_init["backend_service_resource"] = {
@@ -2045,137 +1988,2249 @@ def test_insert_unary_rest_bad_request(
}
request = request_type(request_init)
- # Mock the http request call within the method and fake a BadRequest error.
- with mock.patch.object(Session, "request") as req, pytest.raises(
- core_exceptions.BadRequest
- ):
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 400
- response_value.request = Request()
- req.return_value = response_value
- client.insert_unary(request)
-
-
-def test_insert_unary_rest_flattened():
- client = RegionBackendServicesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport="rest",
- )
-
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
-
- # get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
-
- # get truthy value for each flattened field
- mock_args = dict(
- project="project_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
- backend_service_resource=compute.BackendService(
- affinity_cookie_ttl_sec=2432
- ),
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
- mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
json_return_value = compute.Operation.to_json(return_value)
-
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
+ response = client.insert(request)
- client.insert_unary(**mock_args)
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
- # Establish that the underlying call was made with the expected
- # request object values.
- assert len(req.mock_calls) == 1
- _, args, _ = req.mock_calls[0]
- assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/backendServices"
- % client.transport._host,
- args[1],
- )
+def test_insert_rest_required_fields(
+ request_type=compute.InsertRegionBackendServiceRequest,
+):
+ transport_class = transports.RegionBackendServicesRestTransport
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
- client = RegionBackendServicesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
)
- # Attempting to call a method with both a request object and flattened
- # fields is an error.
- with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertRegionBackendServiceRequest(),
- project="project_value",
- region="region_value",
- backend_service_resource=compute.BackendService(
- affinity_cookie_ttl_sec=2432
- ),
- )
+ # verify fields with default values are dropped
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
-def test_insert_unary_rest_error():
- client = RegionBackendServicesClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
- )
+ # verify required fields with default values are now present
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
-@pytest.mark.parametrize(
- "request_type",
- [
- compute.ListRegionBackendServicesRequest,
- dict,
- ],
-)
-def test_list_rest(request_type):
- client = RegionBackendServicesClient(
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.RegionBackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "backendServiceResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.RegionBackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionBackendServicesRestInterceptor(),
+ )
+ client = RegionBackendServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionBackendServicesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionBackendServicesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionBackendServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionBackendServiceRequest
+):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2"}
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/backendServices"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertRegionBackendServiceRequest(),
+ project="project_value",
+ region="region_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionBackendServiceRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertRegionBackendServiceRequest,
+):
+ transport_class = transports.RegionBackendServicesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.RegionBackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "backendServiceResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionBackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionBackendServicesRestInterceptor(),
+ )
+ client = RegionBackendServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionBackendServicesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionBackendServicesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionBackendServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionBackendServiceRequest
+):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/backendServices"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertRegionBackendServiceRequest(),
+ project="project_value",
+ region="region_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListRegionBackendServicesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendServiceList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendServiceList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(
+ request_type=compute.ListRegionBackendServicesRequest,
+):
+ transport_class = transports.RegionBackendServicesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendServiceList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendServiceList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.RegionBackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.RegionBackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionBackendServicesRestInterceptor(),
+ )
+ client = RegionBackendServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionBackendServicesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.RegionBackendServicesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.BackendServiceList.to_json(
+ compute.BackendServiceList()
+ )
+
+ request = compute.ListRegionBackendServicesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.BackendServiceList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListRegionBackendServicesRequest
+):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.BackendServiceList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.BackendServiceList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/backendServices"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListRegionBackendServicesRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.BackendServiceList(
+ items=[
+ compute.BackendService(),
+ compute.BackendService(),
+ compute.BackendService(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.BackendServiceList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.BackendServiceList(
+ items=[
+ compute.BackendService(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.BackendServiceList(
+ items=[
+ compute.BackendService(),
+ compute.BackendService(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.BackendServiceList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.BackendService) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRegionBackendServiceRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "backend_service": "sample3",
+ }
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(
+ request_type=compute.PatchRegionBackendServiceRequest,
+):
+ transport_class = transports.RegionBackendServicesRestTransport
+
+ request_init = {}
+ request_init["backend_service"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["backendService"] = "backend_service_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "backendService" in jsonified_request
+ assert jsonified_request["backendService"] == "backend_service_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.RegionBackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "backendService",
+ "backendServiceResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.RegionBackendServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionBackendServicesRestInterceptor(),
+ )
+ client = RegionBackendServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionBackendServicesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.RegionBackendServicesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchRegionBackendServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRegionBackendServiceRequest
+):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "backend_service": "sample3",
+ }
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "backend_service": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ backend_service="backend_service_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/backendServices/{backend_service}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchRegionBackendServiceRequest(),
+ project="project_value",
+ region="region_value",
+ backend_service="backend_service_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
+ )
+
+
+def test_patch_rest_error():
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRegionBackendServiceRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "backend_service": "sample3",
+ }
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendServiceList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendServiceList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_list_rest_required_fields(
- request_type=compute.ListRegionBackendServicesRequest,
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchRegionBackendServiceRequest,
):
transport_class = transports.RegionBackendServicesRestTransport
request_init = {}
+ request_init["backend_service"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -2189,30 +4244,25 @@ def test_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["backendService"] = "backend_service_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "backendService" in jsonified_request
+ assert jsonified_request["backendService"] == "backend_service_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -2225,7 +4275,7 @@ def test_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.BackendServiceList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2236,42 +4286,37 @@ def test_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendServiceList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_unary_rest_unset_required_fields():
transport = transports.RegionBackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
+ "backendService",
+ "backendServiceResource",
"project",
"region",
)
@@ -2280,7 +4325,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_unary_rest_interceptors(null_interceptor):
transport = transports.RegionBackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2293,9 +4338,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionBackendServicesRestInterceptor, "post_list"
+ transports.RegionBackendServicesRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.RegionBackendServicesRestInterceptor, "pre_list"
+ transports.RegionBackendServicesRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2310,40 +4355,189 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.BackendServiceList.to_json(
- compute.BackendServiceList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListRegionBackendServicesRequest()
+ request = compute.PatchRegionBackendServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.BackendServiceList
+ post.return_value = compute.Operation
- client.list(
+ client.patch_unary(
request,
metadata=[
("key", "val"),
("cephalopod", "squid"),
],
- )
-
- pre.assert_called_once()
- post.assert_called_once()
-
-
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListRegionBackendServicesRequest
-):
- client = RegionBackendServicesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
- )
-
- # send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRegionBackendServiceRequest
+):
+ client = RegionBackendServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "backend_service": "sample3",
+ }
+ request_init["backend_service_resource"] = {
+ "affinity_cookie_ttl_sec": 2432,
+ "backends": [
+ {
+ "balancing_mode": "balancing_mode_value",
+ "capacity_scaler": 0.1575,
+ "description": "description_value",
+ "failover": True,
+ "group": "group_value",
+ "max_connections": 1608,
+ "max_connections_per_endpoint": 2990,
+ "max_connections_per_instance": 2978,
+ "max_rate": 849,
+ "max_rate_per_endpoint": 0.22310000000000002,
+ "max_rate_per_instance": 0.22190000000000001,
+ "max_utilization": 0.1633,
+ }
+ ],
+ "cdn_policy": {
+ "bypass_cache_on_request_headers": [{"header_name": "header_name_value"}],
+ "cache_key_policy": {
+ "include_host": True,
+ "include_http_headers": [
+ "include_http_headers_value_1",
+ "include_http_headers_value_2",
+ ],
+ "include_named_cookies": [
+ "include_named_cookies_value_1",
+ "include_named_cookies_value_2",
+ ],
+ "include_protocol": True,
+ "include_query_string": True,
+ "query_string_blacklist": [
+ "query_string_blacklist_value_1",
+ "query_string_blacklist_value_2",
+ ],
+ "query_string_whitelist": [
+ "query_string_whitelist_value_1",
+ "query_string_whitelist_value_2",
+ ],
+ },
+ "cache_mode": "cache_mode_value",
+ "client_ttl": 1074,
+ "default_ttl": 1176,
+ "max_ttl": 761,
+ "negative_caching": True,
+ "negative_caching_policy": [{"code": 411, "ttl": 340}],
+ "request_coalescing": True,
+ "serve_while_stale": 1813,
+ "signed_url_cache_max_age_sec": 2890,
+ "signed_url_key_names": [
+ "signed_url_key_names_value_1",
+ "signed_url_key_names_value_2",
+ ],
+ },
+ "circuit_breakers": {
+ "max_connections": 1608,
+ "max_pending_requests": 2149,
+ "max_requests": 1313,
+ "max_requests_per_connection": 2902,
+ "max_retries": 1187,
+ },
+ "connection_draining": {"draining_timeout_sec": 2124},
+ "connection_tracking_policy": {
+ "connection_persistence_on_unhealthy_backends": "connection_persistence_on_unhealthy_backends_value",
+ "enable_strong_affinity": True,
+ "idle_timeout_sec": 1694,
+ "tracking_mode": "tracking_mode_value",
+ },
+ "consistent_hash": {
+ "http_cookie": {
+ "name": "name_value",
+ "path": "path_value",
+ "ttl": {"nanos": 543, "seconds": 751},
+ },
+ "http_header_name": "http_header_name_value",
+ "minimum_ring_size": 1829,
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_request_headers": [
+ "custom_request_headers_value_1",
+ "custom_request_headers_value_2",
+ ],
+ "custom_response_headers": [
+ "custom_response_headers_value_1",
+ "custom_response_headers_value_2",
+ ],
+ "description": "description_value",
+ "edge_security_policy": "edge_security_policy_value",
+ "enable_c_d_n": True,
+ "failover_policy": {
+ "disable_connection_drain_on_failover": True,
+ "drop_traffic_if_unhealthy": True,
+ "failover_ratio": 0.1494,
+ },
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "iap": {
+ "enabled": True,
+ "oauth2_client_id": "oauth2_client_id_value",
+ "oauth2_client_secret": "oauth2_client_secret_value",
+ "oauth2_client_secret_sha256": "oauth2_client_secret_sha256_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "load_balancing_scheme": "load_balancing_scheme_value",
+ "locality_lb_policies": [
+ {
+ "custom_policy": {"data": "data_value", "name": "name_value"},
+ "policy": {"name": "name_value"},
+ }
+ ],
+ "locality_lb_policy": "locality_lb_policy_value",
+ "log_config": {"enable": True, "sample_rate": 0.1165},
+ "max_stream_duration": {},
+ "name": "name_value",
+ "network": "network_value",
+ "outlier_detection": {
+ "base_ejection_time": {},
+ "consecutive_errors": 1956,
+ "consecutive_gateway_failure": 2880,
+ "enforcing_consecutive_errors": 3006,
+ "enforcing_consecutive_gateway_failure": 3930,
+ "enforcing_success_rate": 2334,
+ "interval": {},
+ "max_ejection_percent": 2118,
+ "success_rate_minimum_hosts": 2799,
+ "success_rate_request_volume": 2915,
+ "success_rate_stdev_factor": 2663,
+ },
+ "port": 453,
+ "port_name": "port_name_value",
+ "protocol": "protocol_value",
+ "region": "region_value",
+ "security_policy": "security_policy_value",
+ "security_settings": {
+ "client_tls_policy": "client_tls_policy_value",
+ "subject_alt_names": [
+ "subject_alt_names_value_1",
+ "subject_alt_names_value_2",
+ ],
+ },
+ "self_link": "self_link_value",
+ "session_affinity": "session_affinity_value",
+ "subsetting": {"policy": "policy_value"},
+ "timeout_sec": 1185,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2355,10 +4549,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch_unary(request)
-def test_list_rest_flattened():
+def test_patch_unary_rest_flattened():
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2367,40 +4561,48 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.BackendServiceList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "backend_service": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ backend_service="backend_service_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.BackendServiceList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/backendServices"
+ "%s/compute/v1/projects/{project}/regions/{region}/backendServices/{backend_service}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2409,82 +4611,31 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListRegionBackendServicesRequest(),
+ client.patch_unary(
+ compute.PatchRegionBackendServiceRequest(),
project="project_value",
region="region_value",
+ backend_service="backend_service_value",
+ backend_service_resource=compute.BackendService(
+ affinity_cookie_ttl_sec=2432
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_unary_rest_error():
client = RegionBackendServicesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.BackendServiceList(
- items=[
- compute.BackendService(),
- compute.BackendService(),
- compute.BackendService(),
- ],
- next_page_token="abc",
- ),
- compute.BackendServiceList(
- items=[],
- next_page_token="def",
- ),
- compute.BackendServiceList(
- items=[
- compute.BackendService(),
- ],
- next_page_token="ghi",
- ),
- compute.BackendServiceList(
- items=[
- compute.BackendService(),
- compute.BackendService(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.BackendServiceList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.BackendService) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchRegionBackendServiceRequest,
+ compute.UpdateRegionBackendServiceRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_update_rest(request_type):
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2679,10 +4830,10 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.update(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2707,8 +4858,8 @@ def test_patch_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchRegionBackendServiceRequest,
+def test_update_rest_required_fields(
+ request_type=compute.UpdateRegionBackendServiceRequest,
):
transport_class = transports.RegionBackendServicesRestTransport
@@ -2727,7 +4878,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2738,7 +4889,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -2769,7 +4920,7 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "put",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -2781,19 +4932,19 @@ def test_patch_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.update(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_update_rest_unset_required_fields():
transport = transports.RegionBackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.update._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
@@ -2808,7 +4959,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_update_rest_interceptors(null_interceptor):
transport = transports.RegionBackendServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2821,9 +4972,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionBackendServicesRestInterceptor, "post_patch"
+ transports.RegionBackendServicesRestInterceptor, "post_update"
) as post, mock.patch.object(
- transports.RegionBackendServicesRestInterceptor, "pre_patch"
+ transports.RegionBackendServicesRestInterceptor, "pre_update"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2840,7 +4991,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchRegionBackendServiceRequest()
+ request = compute.UpdateRegionBackendServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2848,7 +4999,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.update(
request,
metadata=[
("key", "val"),
@@ -2860,8 +5011,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchRegionBackendServiceRequest
+def test_update_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateRegionBackendServiceRequest
):
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3032,10 +5183,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.update(request)
-def test_patch_unary_rest_flattened():
+def test_update_rest_flattened():
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3072,7 +5223,7 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.update(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -3085,7 +5236,7 @@ def test_patch_unary_rest_flattened():
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_rest_flattened_error(transport: str = "rest"):
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3094,8 +5245,8 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchRegionBackendServiceRequest(),
+ client.update(
+ compute.UpdateRegionBackendServiceRequest(),
project="project_value",
region="region_value",
backend_service="backend_service_value",
@@ -3105,7 +5256,7 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_patch_unary_rest_error():
+def test_update_rest_error():
client = RegionBackendServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3317,28 +5468,6 @@ def test_update_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_unary_rest_required_fields(
@@ -3820,6 +5949,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionBackendServicesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_backend_services_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3857,6 +5999,14 @@ def test_region_backend_services_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_backend_services_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_commitments.py b/tests/unit/gapic/compute_v1/test_region_commitments.py
index 2a67fbc09..188d20e00 100644
--- a/tests/unit/gapic/compute_v1/test_region_commitments.py
+++ b/tests/unit/gapic/compute_v1/test_region_commitments.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -1206,7 +1208,7 @@ def test_get_rest_error():
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_insert_rest(request_type):
client = RegionCommitmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1314,10 +1316,10 @@ def test_insert_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1342,7 +1344,7 @@ def test_insert_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(
+def test_insert_rest_required_fields(
request_type=compute.InsertRegionCommitmentRequest,
):
transport_class = transports.RegionCommitmentsRestTransport
@@ -1412,14 +1414,14 @@ def test_insert_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.RegionCommitmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1438,7 +1440,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.RegionCommitmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1478,7 +1480,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.insert_unary(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1490,7 +1492,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
+def test_insert_rest_bad_request(
transport: str = "rest", request_type=compute.InsertRegionCommitmentRequest
):
client = RegionCommitmentsClient(
@@ -1575,10 +1577,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.insert(request)
-def test_insert_unary_rest_flattened():
+def test_insert_rest_flattened():
client = RegionCommitmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1608,7 +1610,7 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1621,7 +1623,7 @@ def test_insert_unary_rest_flattened():
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = RegionCommitmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1630,7 +1632,7 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
+ client.insert(
compute.InsertRegionCommitmentRequest(),
project="project_value",
region="region_value",
@@ -1638,7 +1640,7 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_insert_unary_rest_error():
+def test_insert_rest_error():
client = RegionCommitmentsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1647,11 +1649,11 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListRegionCommitmentsRequest,
+ compute.InsertRegionCommitmentRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_insert_unary_rest(request_type):
client = RegionCommitmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1659,38 +1661,912 @@ def test_list_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2"}
+ request_init["commitment_resource"] = {
+ "auto_renew": True,
+ "category": "category_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "end_timestamp": "end_timestamp_value",
+ "id": 205,
+ "kind": "kind_value",
+ "license_resource": {
+ "amount": 660,
+ "cores_per_license": "cores_per_license_value",
+ "license_": "license__value",
+ },
+ "name": "name_value",
+ "plan": "plan_value",
+ "region": "region_value",
+ "reservations": [
+ {
+ "commitment": "commitment_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "share_settings": {"project_map": {}, "share_type": "share_type_value"},
+ "specific_reservation": {
+ "assured_count": 1407,
+ "count": 553,
+ "in_use_count": 1291,
+ "instance_properties": {
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "local_ssds": [
+ {"disk_size_gb": 1261, "interface": "interface_value"}
+ ],
+ "location_hint": "location_hint_value",
+ "machine_type": "machine_type_value",
+ "min_cpu_platform": "min_cpu_platform_value",
+ },
+ },
+ "specific_reservation_required": True,
+ "status": "status_value",
+ "zone": "zone_value",
+ }
+ ],
+ "resources": [
+ {
+ "accelerator_type": "accelerator_type_value",
+ "amount": 660,
+ "type_": "type__value",
+ }
+ ],
+ "self_link": "self_link_value",
+ "start_timestamp": "start_timestamp_value",
+ "status": "status_value",
+ "status_message": "status_message_value",
+ "type_": "type__value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.CommitmentList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.CommitmentList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.insert_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertRegionCommitmentRequest,
+):
+ transport_class = transports.RegionCommitmentsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionCommitmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.RegionCommitmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "commitmentResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionCommitmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionCommitmentsRestInterceptor(),
+ )
+ client = RegionCommitmentsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionCommitmentsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionCommitmentsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionCommitmentRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionCommitmentRequest
+):
+ client = RegionCommitmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["commitment_resource"] = {
+ "auto_renew": True,
+ "category": "category_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "end_timestamp": "end_timestamp_value",
+ "id": 205,
+ "kind": "kind_value",
+ "license_resource": {
+ "amount": 660,
+ "cores_per_license": "cores_per_license_value",
+ "license_": "license__value",
+ },
+ "name": "name_value",
+ "plan": "plan_value",
+ "region": "region_value",
+ "reservations": [
+ {
+ "commitment": "commitment_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "share_settings": {"project_map": {}, "share_type": "share_type_value"},
+ "specific_reservation": {
+ "assured_count": 1407,
+ "count": 553,
+ "in_use_count": 1291,
+ "instance_properties": {
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "local_ssds": [
+ {"disk_size_gb": 1261, "interface": "interface_value"}
+ ],
+ "location_hint": "location_hint_value",
+ "machine_type": "machine_type_value",
+ "min_cpu_platform": "min_cpu_platform_value",
+ },
+ },
+ "specific_reservation_required": True,
+ "status": "status_value",
+ "zone": "zone_value",
+ }
+ ],
+ "resources": [
+ {
+ "accelerator_type": "accelerator_type_value",
+ "amount": 660,
+ "type_": "type__value",
+ }
+ ],
+ "self_link": "self_link_value",
+ "start_timestamp": "start_timestamp_value",
+ "status": "status_value",
+ "status_message": "status_message_value",
+ "type_": "type__value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = RegionCommitmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ commitment_resource=compute.Commitment(auto_renew=True),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/commitments"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionCommitmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertRegionCommitmentRequest(),
+ project="project_value",
+ region="region_value",
+ commitment_resource=compute.Commitment(auto_renew=True),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = RegionCommitmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListRegionCommitmentsRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = RegionCommitmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.CommitmentList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.CommitmentList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListRegionCommitmentsRequest):
+ transport_class = transports.RegionCommitmentsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionCommitmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.CommitmentList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.CommitmentList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.RegionCommitmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.RegionCommitmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionCommitmentsRestInterceptor(),
+ )
+ client = RegionCommitmentsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionCommitmentsRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.RegionCommitmentsRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.CommitmentList.to_json(
+ compute.CommitmentList()
+ )
+
+ request = compute.ListRegionCommitmentsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.CommitmentList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListRegionCommitmentsRequest
+):
+ client = RegionCommitmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = RegionCommitmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.CommitmentList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.CommitmentList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/commitments"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = RegionCommitmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListRegionCommitmentsRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = RegionCommitmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.CommitmentList(
+ items=[
+ compute.Commitment(),
+ compute.Commitment(),
+ compute.Commitment(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.CommitmentList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.CommitmentList(
+ items=[
+ compute.Commitment(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.CommitmentList(
+ items=[
+ compute.Commitment(),
+ compute.Commitment(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.CommitmentList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Commitment) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.UpdateRegionCommitmentRequest,
+ dict,
+ ],
+)
+def test_update_rest(request_type):
+ client = RegionCommitmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "commitment": "sample3"}
+ request_init["commitment_resource"] = {
+ "auto_renew": True,
+ "category": "category_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "end_timestamp": "end_timestamp_value",
+ "id": 205,
+ "kind": "kind_value",
+ "license_resource": {
+ "amount": 660,
+ "cores_per_license": "cores_per_license_value",
+ "license_": "license__value",
+ },
+ "name": "name_value",
+ "plan": "plan_value",
+ "region": "region_value",
+ "reservations": [
+ {
+ "commitment": "commitment_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "share_settings": {"project_map": {}, "share_type": "share_type_value"},
+ "specific_reservation": {
+ "assured_count": 1407,
+ "count": 553,
+ "in_use_count": 1291,
+ "instance_properties": {
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "local_ssds": [
+ {"disk_size_gb": 1261, "interface": "interface_value"}
+ ],
+ "location_hint": "location_hint_value",
+ "machine_type": "machine_type_value",
+ "min_cpu_platform": "min_cpu_platform_value",
+ },
+ },
+ "specific_reservation_required": True,
+ "status": "status_value",
+ "zone": "zone_value",
+ }
+ ],
+ "resources": [
+ {
+ "accelerator_type": "accelerator_type_value",
+ "amount": 660,
+ "type_": "type__value",
+ }
+ ],
+ "self_link": "self_link_value",
+ "start_timestamp": "start_timestamp_value",
+ "status": "status_value",
+ "status_message": "status_message_value",
+ "type_": "type__value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.update(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(request_type=compute.ListRegionCommitmentsRequest):
+def test_update_rest_required_fields(
+ request_type=compute.UpdateRegionCommitmentRequest,
+):
transport_class = transports.RegionCommitmentsRestTransport
request_init = {}
+ request_init["commitment"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -1704,30 +2580,31 @@ def test_list_rest_required_fields(request_type=compute.ListRegionCommitmentsReq
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["commitment"] = "commitment_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
+ "paths",
+ "request_id",
+ "update_mask",
)
)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "commitment" in jsonified_request
+ assert jsonified_request["commitment"] == "commitment_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -1740,7 +2617,7 @@ def test_list_rest_required_fields(request_type=compute.ListRegionCommitmentsReq
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.CommitmentList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1751,42 +2628,43 @@ def test_list_rest_required_fields(request_type=compute.ListRegionCommitmentsReq
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.CommitmentList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.update(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_update_rest_unset_required_fields():
transport = transports.RegionCommitmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.update._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "paths",
+ "requestId",
+ "updateMask",
)
)
& set(
(
+ "commitment",
+ "commitmentResource",
"project",
"region",
)
@@ -1795,7 +2673,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_update_rest_interceptors(null_interceptor):
transport = transports.RegionCommitmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1808,9 +2686,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionCommitmentsRestInterceptor, "post_list"
+ transports.RegionCommitmentsRestInterceptor, "post_update"
) as post, mock.patch.object(
- transports.RegionCommitmentsRestInterceptor, "pre_list"
+ transports.RegionCommitmentsRestInterceptor, "pre_update"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1825,19 +2703,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.CommitmentList.to_json(
- compute.CommitmentList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListRegionCommitmentsRequest()
+ request = compute.UpdateRegionCommitmentRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.CommitmentList
+ post.return_value = compute.Operation
- client.list(
+ client.update(
request,
metadata=[
("key", "val"),
@@ -1849,8 +2725,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListRegionCommitmentsRequest
+def test_update_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateRegionCommitmentRequest
):
client = RegionCommitmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1858,7 +2734,71 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {"project": "sample1", "region": "sample2", "commitment": "sample3"}
+ request_init["commitment_resource"] = {
+ "auto_renew": True,
+ "category": "category_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "end_timestamp": "end_timestamp_value",
+ "id": 205,
+ "kind": "kind_value",
+ "license_resource": {
+ "amount": 660,
+ "cores_per_license": "cores_per_license_value",
+ "license_": "license__value",
+ },
+ "name": "name_value",
+ "plan": "plan_value",
+ "region": "region_value",
+ "reservations": [
+ {
+ "commitment": "commitment_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "share_settings": {"project_map": {}, "share_type": "share_type_value"},
+ "specific_reservation": {
+ "assured_count": 1407,
+ "count": 553,
+ "in_use_count": 1291,
+ "instance_properties": {
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "local_ssds": [
+ {"disk_size_gb": 1261, "interface": "interface_value"}
+ ],
+ "location_hint": "location_hint_value",
+ "machine_type": "machine_type_value",
+ "min_cpu_platform": "min_cpu_platform_value",
+ },
+ },
+ "specific_reservation_required": True,
+ "status": "status_value",
+ "zone": "zone_value",
+ }
+ ],
+ "resources": [
+ {
+ "accelerator_type": "accelerator_type_value",
+ "amount": 660,
+ "type_": "type__value",
+ }
+ ],
+ "self_link": "self_link_value",
+ "start_timestamp": "start_timestamp_value",
+ "status": "status_value",
+ "status_message": "status_message_value",
+ "type_": "type__value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1870,10 +2810,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.update(request)
-def test_list_rest_flattened():
+def test_update_rest_flattened():
client = RegionCommitmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1882,40 +2822,46 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.CommitmentList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "commitment": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ commitment="commitment_value",
+ commitment_resource=compute.Commitment(auto_renew=True),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.CommitmentList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.update(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/commitments"
+ "%s/compute/v1/projects/{project}/regions/{region}/commitments/{commitment}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_update_rest_flattened_error(transport: str = "rest"):
client = RegionCommitmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1924,73 +2870,20 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListRegionCommitmentsRequest(),
+ client.update(
+ compute.UpdateRegionCommitmentRequest(),
project="project_value",
region="region_value",
+ commitment="commitment_value",
+ commitment_resource=compute.Commitment(auto_renew=True),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_update_rest_error():
client = RegionCommitmentsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.CommitmentList(
- items=[
- compute.Commitment(),
- compute.Commitment(),
- compute.Commitment(),
- ],
- next_page_token="abc",
- ),
- compute.CommitmentList(
- items=[],
- next_page_token="def",
- ),
- compute.CommitmentList(
- items=[
- compute.Commitment(),
- ],
- next_page_token="ghi",
- ),
- compute.CommitmentList(
- items=[
- compute.Commitment(),
- compute.Commitment(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.CommitmentList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Commitment) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
@@ -2111,28 +3004,6 @@ def test_update_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_unary_rest_required_fields(
@@ -2535,6 +3406,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionCommitmentsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_commitments_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2570,6 +3454,14 @@ def test_region_commitments_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_commitments_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_disk_types.py b/tests/unit/gapic/compute_v1/test_region_disk_types.py
index 514755885..6e601f4ce 100644
--- a/tests/unit/gapic/compute_v1/test_region_disk_types.py
+++ b/tests/unit/gapic/compute_v1/test_region_disk_types.py
@@ -1251,6 +1251,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionDiskTypesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_disk_types_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -1283,6 +1296,14 @@ def test_region_disk_types_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_disk_types_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_disks.py b/tests/unit/gapic/compute_v1/test_region_disks.py
index 3bbce144f..33cf52eb9 100644
--- a/tests/unit/gapic/compute_v1/test_region_disks.py
+++ b/tests/unit/gapic/compute_v1/test_region_disks.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -516,7 +518,7 @@ def test_region_disks_client_client_options_credentials_file(
dict,
],
)
-def test_add_resource_policies_unary_rest(request_type):
+def test_add_resource_policies_rest(request_type):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -563,10 +565,10 @@ def test_add_resource_policies_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_resource_policies_unary(request)
+ response = client.add_resource_policies(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -591,7 +593,7 @@ def test_add_resource_policies_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_add_resource_policies_unary_rest_required_fields(
+def test_add_resource_policies_rest_required_fields(
request_type=compute.AddResourcePoliciesRegionDiskRequest,
):
transport_class = transports.RegionDisksRestTransport
@@ -665,14 +667,14 @@ def test_add_resource_policies_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_resource_policies_unary(request)
+ response = client.add_resource_policies(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_add_resource_policies_unary_rest_unset_required_fields():
+def test_add_resource_policies_rest_unset_required_fields():
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -692,7 +694,7 @@ def test_add_resource_policies_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_resource_policies_unary_rest_interceptors(null_interceptor):
+def test_add_resource_policies_rest_interceptors(null_interceptor):
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -732,7 +734,7 @@ def test_add_resource_policies_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_resource_policies_unary(
+ client.add_resource_policies(
request,
metadata=[
("key", "val"),
@@ -744,7 +746,7 @@ def test_add_resource_policies_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_resource_policies_unary_rest_bad_request(
+def test_add_resource_policies_rest_bad_request(
transport: str = "rest", request_type=compute.AddResourcePoliciesRegionDiskRequest
):
client = RegionDisksClient(
@@ -768,10 +770,10 @@ def test_add_resource_policies_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_resource_policies_unary(request)
+ client.add_resource_policies(request)
-def test_add_resource_policies_unary_rest_flattened():
+def test_add_resource_policies_rest_flattened():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -804,7 +806,7 @@ def test_add_resource_policies_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_resource_policies_unary(**mock_args)
+ client.add_resource_policies(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -817,7 +819,7 @@ def test_add_resource_policies_unary_rest_flattened():
)
-def test_add_resource_policies_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_resource_policies_rest_flattened_error(transport: str = "rest"):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -826,7 +828,7 @@ def test_add_resource_policies_unary_rest_flattened_error(transport: str = "rest
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_resource_policies_unary(
+ client.add_resource_policies(
compute.AddResourcePoliciesRegionDiskRequest(),
project="project_value",
region="region_value",
@@ -837,7 +839,7 @@ def test_add_resource_policies_unary_rest_flattened_error(transport: str = "rest
)
-def test_add_resource_policies_unary_rest_error():
+def test_add_resource_policies_rest_error():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -846,11 +848,11 @@ def test_add_resource_policies_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.CreateSnapshotRegionDiskRequest,
+ compute.AddResourcePoliciesRegionDiskRequest,
dict,
],
)
-def test_create_snapshot_unary_rest(request_type):
+def test_add_resource_policies_unary_rest(request_type):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -858,37 +860,8 @@ def test_create_snapshot_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
- request_init["snapshot_resource"] = {
- "auto_created": True,
- "chain_name": "chain_name_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "disk_size_gb": 1261,
- "download_bytes": 1502,
- "id": 205,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "license_codes": [1361, 1362],
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "location_hint": "location_hint_value",
- "name": "name_value",
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "snapshot_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "source_disk": "source_disk_value",
- "source_disk_encryption_key": {},
- "source_disk_id": "source_disk_id_value",
- "status": "status_value",
- "storage_bytes": 1403,
- "storage_bytes_status": "storage_bytes_status_value",
- "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ request_init["region_disks_add_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
}
request = request_type(request_init)
@@ -926,36 +899,14 @@ def test_create_snapshot_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.create_snapshot_unary(request)
+ response = client.add_resource_policies_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_create_snapshot_unary_rest_required_fields(
- request_type=compute.CreateSnapshotRegionDiskRequest,
+def test_add_resource_policies_unary_rest_required_fields(
+ request_type=compute.AddResourcePoliciesRegionDiskRequest,
):
transport_class = transports.RegionDisksRestTransport
@@ -974,7 +925,7 @@ def test_create_snapshot_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).create_snapshot._get_unset_required_fields(jsonified_request)
+ ).add_resource_policies._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -985,7 +936,7 @@ def test_create_snapshot_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).create_snapshot._get_unset_required_fields(jsonified_request)
+ ).add_resource_policies._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -1028,19 +979,19 @@ def test_create_snapshot_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.create_snapshot_unary(request)
+ response = client.add_resource_policies_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_create_snapshot_unary_rest_unset_required_fields():
+def test_add_resource_policies_unary_rest_unset_required_fields():
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.create_snapshot._get_unset_required_fields({})
+ unset_fields = transport.add_resource_policies._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
@@ -1048,14 +999,14 @@ def test_create_snapshot_unary_rest_unset_required_fields():
"disk",
"project",
"region",
- "snapshotResource",
+ "regionDisksAddResourcePoliciesRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_create_snapshot_unary_rest_interceptors(null_interceptor):
+def test_add_resource_policies_unary_rest_interceptors(null_interceptor):
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1068,9 +1019,9 @@ def test_create_snapshot_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionDisksRestInterceptor, "post_create_snapshot"
+ transports.RegionDisksRestInterceptor, "post_add_resource_policies"
) as post, mock.patch.object(
- transports.RegionDisksRestInterceptor, "pre_create_snapshot"
+ transports.RegionDisksRestInterceptor, "pre_add_resource_policies"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1087,7 +1038,7 @@ def test_create_snapshot_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.CreateSnapshotRegionDiskRequest()
+ request = compute.AddResourcePoliciesRegionDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1095,7 +1046,7 @@ def test_create_snapshot_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.create_snapshot_unary(
+ client.add_resource_policies_unary(
request,
metadata=[
("key", "val"),
@@ -1107,8 +1058,8 @@ def test_create_snapshot_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_create_snapshot_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.CreateSnapshotRegionDiskRequest
+def test_add_resource_policies_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddResourcePoliciesRegionDiskRequest
):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1117,37 +1068,8 @@ def test_create_snapshot_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
- request_init["snapshot_resource"] = {
- "auto_created": True,
- "chain_name": "chain_name_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "disk_size_gb": 1261,
- "download_bytes": 1502,
- "id": 205,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "license_codes": [1361, 1362],
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "location_hint": "location_hint_value",
- "name": "name_value",
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "snapshot_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "source_disk": "source_disk_value",
- "source_disk_encryption_key": {},
- "source_disk_id": "source_disk_id_value",
- "status": "status_value",
- "storage_bytes": 1403,
- "storage_bytes_status": "storage_bytes_status_value",
- "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ request_init["region_disks_add_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
}
request = request_type(request_init)
@@ -1160,10 +1082,10 @@ def test_create_snapshot_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.create_snapshot_unary(request)
+ client.add_resource_policies_unary(request)
-def test_create_snapshot_unary_rest_flattened():
+def test_add_resource_policies_unary_rest_flattened():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1182,7 +1104,9 @@ def test_create_snapshot_unary_rest_flattened():
project="project_value",
region="region_value",
disk="disk_value",
- snapshot_resource=compute.Snapshot(auto_created=True),
+ region_disks_add_resource_policies_request_resource=compute.RegionDisksAddResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
)
mock_args.update(sample_request)
@@ -1194,20 +1118,20 @@ def test_create_snapshot_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.create_snapshot_unary(**mock_args)
+ client.add_resource_policies_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/disks/{disk}/createSnapshot"
+ "%s/compute/v1/projects/{project}/regions/{region}/disks/{disk}/addResourcePolicies"
% client.transport._host,
args[1],
)
-def test_create_snapshot_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_resource_policies_unary_rest_flattened_error(transport: str = "rest"):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1216,16 +1140,18 @@ def test_create_snapshot_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.create_snapshot_unary(
- compute.CreateSnapshotRegionDiskRequest(),
+ client.add_resource_policies_unary(
+ compute.AddResourcePoliciesRegionDiskRequest(),
project="project_value",
region="region_value",
disk="disk_value",
- snapshot_resource=compute.Snapshot(auto_created=True),
+ region_disks_add_resource_policies_request_resource=compute.RegionDisksAddResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
)
-def test_create_snapshot_unary_rest_error():
+def test_add_resource_policies_unary_rest_error():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1234,11 +1160,11 @@ def test_create_snapshot_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteRegionDiskRequest,
+ compute.CreateSnapshotRegionDiskRequest,
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_create_snapshot_rest(request_type):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1246,6 +1172,38 @@ def test_delete_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+ request_init["snapshot_resource"] = {
+ "auto_created": True,
+ "chain_name": "chain_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "download_bytes": 1502,
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "snapshot_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "status": "status_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1282,10 +1240,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.create_snapshot(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1310,8 +1268,8 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteRegionDiskRequest,
+def test_create_snapshot_rest_required_fields(
+ request_type=compute.CreateSnapshotRegionDiskRequest,
):
transport_class = transports.RegionDisksRestTransport
@@ -1330,7 +1288,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).create_snapshot._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1341,7 +1299,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).create_snapshot._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -1372,9 +1330,10 @@ def test_delete_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1383,19 +1342,19 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.create_snapshot(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_create_snapshot_rest_unset_required_fields():
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.create_snapshot._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
@@ -1403,13 +1362,14 @@ def test_delete_unary_rest_unset_required_fields():
"disk",
"project",
"region",
+ "snapshotResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_create_snapshot_rest_interceptors(null_interceptor):
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1422,9 +1382,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionDisksRestInterceptor, "post_delete"
+ transports.RegionDisksRestInterceptor, "post_create_snapshot"
) as post, mock.patch.object(
- transports.RegionDisksRestInterceptor, "pre_delete"
+ transports.RegionDisksRestInterceptor, "pre_create_snapshot"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1441,7 +1401,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteRegionDiskRequest()
+ request = compute.CreateSnapshotRegionDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1449,7 +1409,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.create_snapshot(
request,
metadata=[
("key", "val"),
@@ -1461,8 +1421,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteRegionDiskRequest
+def test_create_snapshot_rest_bad_request(
+ transport: str = "rest", request_type=compute.CreateSnapshotRegionDiskRequest
):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1471,39 +1431,72 @@ def test_delete_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a BadRequest error.
- with mock.patch.object(Session, "request") as req, pytest.raises(
- core_exceptions.BadRequest
- ):
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 400
- response_value.request = Request()
- req.return_value = response_value
- client.delete_unary(request)
-
-
-def test_delete_unary_rest_flattened():
- client = RegionDisksClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport="rest",
- )
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.Operation()
-
- # get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2", "disk": "sample3"}
-
- # get truthy value for each flattened field
- mock_args = dict(
+ request_init["snapshot_resource"] = {
+ "auto_created": True,
+ "chain_name": "chain_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "download_bytes": 1502,
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "snapshot_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "status": "status_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.create_snapshot(request)
+
+
+def test_create_snapshot_rest_flattened():
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
project="project_value",
region="region_value",
disk="disk_value",
+ snapshot_resource=compute.Snapshot(auto_created=True),
)
mock_args.update(sample_request)
@@ -1515,20 +1508,20 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.create_snapshot(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/disks/{disk}"
+ "%s/compute/v1/projects/{project}/regions/{region}/disks/{disk}/createSnapshot"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_create_snapshot_rest_flattened_error(transport: str = "rest"):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1537,15 +1530,16 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteRegionDiskRequest(),
+ client.create_snapshot(
+ compute.CreateSnapshotRegionDiskRequest(),
project="project_value",
region="region_value",
disk="disk_value",
+ snapshot_resource=compute.Snapshot(auto_created=True),
)
-def test_delete_unary_rest_error():
+def test_create_snapshot_rest_error():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1554,11 +1548,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRegionDiskRequest,
+ compute.CreateSnapshotRegionDiskRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_create_snapshot_unary_rest(request_type):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1566,89 +1560,83 @@ def test_get_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+ request_init["snapshot_resource"] = {
+ "auto_created": True,
+ "chain_name": "chain_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "download_bytes": 1502,
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "snapshot_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "status": "status_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Disk(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- label_fingerprint="label_fingerprint_value",
- last_attach_timestamp="last_attach_timestamp_value",
- last_detach_timestamp="last_detach_timestamp_value",
- license_codes=[1360],
- licenses=["licenses_value"],
- location_hint="location_hint_value",
name="name_value",
- options="options_value",
- physical_block_size_bytes=2663,
- provisioned_iops=1740,
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
- replica_zones=["replica_zones_value"],
- resource_policies=["resource_policies_value"],
- satisfies_pzs=True,
self_link="self_link_value",
- size_gb=739,
- source_disk="source_disk_value",
- source_disk_id="source_disk_id_value",
- source_image="source_image_value",
- source_image_id="source_image_id_value",
- source_snapshot="source_snapshot_value",
- source_snapshot_id="source_snapshot_id_value",
- source_storage_object="source_storage_object_value",
- status="status_value",
- type_="type__value",
- users=["users_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Disk.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.create_snapshot_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Disk)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.label_fingerprint == "label_fingerprint_value"
- assert response.last_attach_timestamp == "last_attach_timestamp_value"
- assert response.last_detach_timestamp == "last_detach_timestamp_value"
- assert response.license_codes == [1360]
- assert response.licenses == ["licenses_value"]
- assert response.location_hint == "location_hint_value"
- assert response.name == "name_value"
- assert response.options == "options_value"
- assert response.physical_block_size_bytes == 2663
- assert response.provisioned_iops == 1740
- assert response.region == "region_value"
- assert response.replica_zones == ["replica_zones_value"]
- assert response.resource_policies == ["resource_policies_value"]
- assert response.satisfies_pzs is True
- assert response.self_link == "self_link_value"
- assert response.size_gb == 739
- assert response.source_disk == "source_disk_value"
- assert response.source_disk_id == "source_disk_id_value"
- assert response.source_image == "source_image_value"
- assert response.source_image_id == "source_image_id_value"
- assert response.source_snapshot == "source_snapshot_value"
- assert response.source_snapshot_id == "source_snapshot_id_value"
- assert response.source_storage_object == "source_storage_object_value"
- assert response.status == "status_value"
- assert response.type_ == "type__value"
- assert response.users == ["users_value"]
- assert response.zone == "zone_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetRegionDiskRequest):
+def test_create_snapshot_unary_rest_required_fields(
+ request_type=compute.CreateSnapshotRegionDiskRequest,
+):
transport_class = transports.RegionDisksRestTransport
request_init = {}
@@ -1666,7 +1654,7 @@ def test_get_rest_required_fields(request_type=compute.GetRegionDiskRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).create_snapshot._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1677,7 +1665,9 @@ def test_get_rest_required_fields(request_type=compute.GetRegionDiskRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).create_snapshot._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1695,7 +1685,7 @@ def test_get_rest_required_fields(request_type=compute.GetRegionDiskRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Disk()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1706,44 +1696,46 @@ def test_get_rest_required_fields(request_type=compute.GetRegionDiskRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Disk.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.create_snapshot_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_create_snapshot_unary_rest_unset_required_fields():
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.create_snapshot._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"disk",
"project",
"region",
+ "snapshotResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_create_snapshot_unary_rest_interceptors(null_interceptor):
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1756,9 +1748,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionDisksRestInterceptor, "post_get"
+ transports.RegionDisksRestInterceptor, "post_create_snapshot"
) as post, mock.patch.object(
- transports.RegionDisksRestInterceptor, "pre_get"
+ transports.RegionDisksRestInterceptor, "pre_create_snapshot"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1773,17 +1765,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Disk.to_json(compute.Disk())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRegionDiskRequest()
+ request = compute.CreateSnapshotRegionDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Disk
+ post.return_value = compute.Operation
- client.get(
+ client.create_snapshot_unary(
request,
metadata=[
("key", "val"),
@@ -1795,8 +1787,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRegionDiskRequest
+def test_create_snapshot_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.CreateSnapshotRegionDiskRequest
):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1805,64 +1797,97 @@ def test_get_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a BadRequest error.
- with mock.patch.object(Session, "request") as req, pytest.raises(
- core_exceptions.BadRequest
- ):
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 400
- response_value.request = Request()
- req.return_value = response_value
- client.get(request)
-
-
-def test_get_rest_flattened():
- client = RegionDisksClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport="rest",
- )
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.Disk()
-
- # get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2", "disk": "sample3"}
-
- # get truthy value for each flattened field
- mock_args = dict(
+ request_init["snapshot_resource"] = {
+ "auto_created": True,
+ "chain_name": "chain_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "download_bytes": 1502,
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "snapshot_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "status": "status_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.create_snapshot_unary(request)
+
+
+def test_create_snapshot_unary_rest_flattened():
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
project="project_value",
region="region_value",
disk="disk_value",
+ snapshot_resource=compute.Snapshot(auto_created=True),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Disk.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.create_snapshot_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/disks/{disk}"
+ "%s/compute/v1/projects/{project}/regions/{region}/disks/{disk}/createSnapshot"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_create_snapshot_unary_rest_flattened_error(transport: str = "rest"):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1871,15 +1896,16 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRegionDiskRequest(),
+ client.create_snapshot_unary(
+ compute.CreateSnapshotRegionDiskRequest(),
project="project_value",
region="region_value",
disk="disk_value",
+ snapshot_resource=compute.Snapshot(auto_created=True),
)
-def test_get_rest_error():
+def test_create_snapshot_unary_rest_error():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1888,53 +1914,89 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicyRegionDiskRequest,
+ compute.DeleteRegionDiskRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_delete_rest(request_type):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicyRegionDiskRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteRegionDiskRequest):
transport_class = transports.RegionDisksRestTransport
request_init = {}
+ request_init["disk"] = ""
request_init["project"] = ""
request_init["region"] = ""
- request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1946,29 +2008,29 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["disk"] = "disk_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
- jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "disk" in jsonified_request
+ assert jsonified_request["disk"] == "disk_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1977,7 +2039,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1988,44 +2050,44 @@ def test_get_iam_policy_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
+ set(("requestId",))
& set(
(
+ "disk",
"project",
"region",
- "resource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2038,9 +2100,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionDisksRestInterceptor, "post_get_iam_policy"
+ transports.RegionDisksRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.RegionDisksRestInterceptor, "pre_get_iam_policy"
+ transports.RegionDisksRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2055,17 +2117,17 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetIamPolicyRegionDiskRequest()
+ request = compute.DeleteRegionDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.get_iam_policy(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -2077,8 +2139,8 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.GetIamPolicyRegionDiskRequest
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteRegionDiskRequest
):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2086,7 +2148,7 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2098,10 +2160,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.delete(request)
-def test_get_iam_policy_rest_flattened():
+def test_delete_rest_flattened():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2110,45 +2172,41 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "region": "sample2",
- "resource": "sample3",
- }
+ sample_request = {"project": "sample1", "region": "sample2", "disk": "sample3"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- resource="resource_value",
+ disk="disk_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/disks/{resource}/getIamPolicy"
+ "%s/compute/v1/projects/{project}/regions/{region}/disks/{disk}"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2157,15 +2215,15 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicyRegionDiskRequest(),
+ client.delete(
+ compute.DeleteRegionDiskRequest(),
project="project_value",
region="region_value",
- resource="resource_value",
+ disk="disk_value",
)
-def test_get_iam_policy_rest_error():
+def test_delete_rest_error():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2174,62 +2232,18 @@ def test_get_iam_policy_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertRegionDiskRequest,
+ compute.DeleteRegionDiskRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_delete_unary_rest(request_type):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["disk_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "disk_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "guest_os_features": [{"type_": "type__value"}],
- "id": 205,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "last_attach_timestamp": "last_attach_timestamp_value",
- "last_detach_timestamp": "last_detach_timestamp_value",
- "license_codes": [1361, 1362],
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "location_hint": "location_hint_value",
- "name": "name_value",
- "options": "options_value",
- "physical_block_size_bytes": 2663,
- "provisioned_iops": 1740,
- "region": "region_value",
- "replica_zones": ["replica_zones_value_1", "replica_zones_value_2"],
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "size_gb": 739,
- "source_disk": "source_disk_value",
- "source_disk_id": "source_disk_id_value",
- "source_image": "source_image_value",
- "source_image_encryption_key": {},
- "source_image_id": "source_image_id_value",
- "source_snapshot": "source_snapshot_value",
- "source_snapshot_encryption_key": {},
- "source_snapshot_id": "source_snapshot_id_value",
- "source_storage_object": "source_storage_object_value",
- "status": "status_value",
- "type_": "type__value",
- "users": ["users_value_1", "users_value_2"],
- "zone": "zone_value",
- }
+ request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -2266,40 +2280,19 @@ def test_insert_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertRegionDiskRequest,
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteRegionDiskRequest,
):
transport_class = transports.RegionDisksRestTransport
request_init = {}
+ request_init["disk"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -2313,27 +2306,25 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["disk"] = "disk_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "request_id",
- "source_image",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "disk" in jsonified_request
+ assert jsonified_request["disk"] == "disk_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -2357,10 +2348,9 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "delete",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -2369,29 +2359,24 @@ def test_insert_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "requestId",
- "sourceImage",
- )
- )
+ set(("requestId",))
& set(
(
- "diskResource",
+ "disk",
"project",
"region",
)
@@ -2400,7 +2385,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2413,9 +2398,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionDisksRestInterceptor, "post_insert"
+ transports.RegionDisksRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.RegionDisksRestInterceptor, "pre_insert"
+ transports.RegionDisksRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2432,7 +2417,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.InsertRegionDiskRequest()
+ request = compute.DeleteRegionDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2440,7 +2425,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.insert_unary(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -2452,8 +2437,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertRegionDiskRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteRegionDiskRequest
):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2461,51 +2446,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["disk_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "disk_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "guest_os_features": [{"type_": "type__value"}],
- "id": 205,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "last_attach_timestamp": "last_attach_timestamp_value",
- "last_detach_timestamp": "last_detach_timestamp_value",
- "license_codes": [1361, 1362],
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "location_hint": "location_hint_value",
- "name": "name_value",
- "options": "options_value",
- "physical_block_size_bytes": 2663,
- "provisioned_iops": 1740,
- "region": "region_value",
- "replica_zones": ["replica_zones_value_1", "replica_zones_value_2"],
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "size_gb": 739,
- "source_disk": "source_disk_value",
- "source_disk_id": "source_disk_id_value",
- "source_image": "source_image_value",
- "source_image_encryption_key": {},
- "source_image_id": "source_image_id_value",
- "source_snapshot": "source_snapshot_value",
- "source_snapshot_encryption_key": {},
- "source_snapshot_id": "source_snapshot_id_value",
- "source_storage_object": "source_storage_object_value",
- "status": "status_value",
- "type_": "type__value",
- "users": ["users_value_1", "users_value_2"],
- "zone": "zone_value",
- }
+ request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2517,10 +2458,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.delete_unary(request)
-def test_insert_unary_rest_flattened():
+def test_delete_unary_rest_flattened():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2532,13 +2473,13 @@ def test_insert_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {"project": "sample1", "region": "sample2", "disk": "sample3"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- disk_resource=compute.Disk(creation_timestamp="creation_timestamp_value"),
+ disk="disk_value",
)
mock_args.update(sample_request)
@@ -2550,20 +2491,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/disks"
+ "%s/compute/v1/projects/{project}/regions/{region}/disks/{disk}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2572,15 +2513,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertRegionDiskRequest(),
+ client.delete_unary(
+ compute.DeleteRegionDiskRequest(),
project="project_value",
region="region_value",
- disk_resource=compute.Disk(creation_timestamp="creation_timestamp_value"),
+ disk="disk_value",
)
-def test_insert_unary_rest_error():
+def test_delete_unary_rest_error():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2589,50 +2530,105 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListRegionDisksRequest,
+ compute.GetRegionDiskRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_get_rest(request_type):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.DiskList(
- id="id_value",
+ return_value = compute.Disk(
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ id=205,
kind="kind_value",
- next_page_token="next_page_token_value",
+ label_fingerprint="label_fingerprint_value",
+ last_attach_timestamp="last_attach_timestamp_value",
+ last_detach_timestamp="last_detach_timestamp_value",
+ license_codes=[1360],
+ licenses=["licenses_value"],
+ location_hint="location_hint_value",
+ name="name_value",
+ options="options_value",
+ physical_block_size_bytes=2663,
+ provisioned_iops=1740,
+ region="region_value",
+ replica_zones=["replica_zones_value"],
+ resource_policies=["resource_policies_value"],
+ satisfies_pzs=True,
self_link="self_link_value",
+ size_gb=739,
+ source_disk="source_disk_value",
+ source_disk_id="source_disk_id_value",
+ source_image="source_image_value",
+ source_image_id="source_image_id_value",
+ source_snapshot="source_snapshot_value",
+ source_snapshot_id="source_snapshot_id_value",
+ source_storage_object="source_storage_object_value",
+ status="status_value",
+ type_="type__value",
+ users=["users_value"],
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.DiskList.to_json(return_value)
+ json_return_value = compute.Disk.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, compute.Disk)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.id == 205
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.label_fingerprint == "label_fingerprint_value"
+ assert response.last_attach_timestamp == "last_attach_timestamp_value"
+ assert response.last_detach_timestamp == "last_detach_timestamp_value"
+ assert response.license_codes == [1360]
+ assert response.licenses == ["licenses_value"]
+ assert response.location_hint == "location_hint_value"
+ assert response.name == "name_value"
+ assert response.options == "options_value"
+ assert response.physical_block_size_bytes == 2663
+ assert response.provisioned_iops == 1740
+ assert response.region == "region_value"
+ assert response.replica_zones == ["replica_zones_value"]
+ assert response.resource_policies == ["resource_policies_value"]
+ assert response.satisfies_pzs is True
assert response.self_link == "self_link_value"
+ assert response.size_gb == 739
+ assert response.source_disk == "source_disk_value"
+ assert response.source_disk_id == "source_disk_id_value"
+ assert response.source_image == "source_image_value"
+ assert response.source_image_id == "source_image_id_value"
+ assert response.source_snapshot == "source_snapshot_value"
+ assert response.source_snapshot_id == "source_snapshot_id_value"
+ assert response.source_storage_object == "source_storage_object_value"
+ assert response.status == "status_value"
+ assert response.type_ == "type__value"
+ assert response.users == ["users_value"]
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(request_type=compute.ListRegionDisksRequest):
+def test_get_rest_required_fields(request_type=compute.GetRegionDiskRequest):
transport_class = transports.RegionDisksRestTransport
request_init = {}
+ request_init["disk"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -2646,30 +2642,23 @@ def test_list_rest_required_fields(request_type=compute.ListRegionDisksRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["disk"] = "disk_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "disk" in jsonified_request
+ assert jsonified_request["disk"] == "disk_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -2682,7 +2671,7 @@ def test_list_rest_required_fields(request_type=compute.ListRegionDisksRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.DiskList()
+ return_value = compute.Disk()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2700,35 +2689,28 @@ def test_list_rest_required_fields(request_type=compute.ListRegionDisksRequest):
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.DiskList.to_json(return_value)
+ json_return_value = compute.Disk.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(())
& set(
(
+ "disk",
"project",
"region",
)
@@ -2737,7 +2719,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2750,9 +2732,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionDisksRestInterceptor, "post_list"
+ transports.RegionDisksRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.RegionDisksRestInterceptor, "pre_list"
+ transports.RegionDisksRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2767,17 +2749,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.DiskList.to_json(compute.DiskList())
+ req.return_value._content = compute.Disk.to_json(compute.Disk())
- request = compute.ListRegionDisksRequest()
+ request = compute.GetRegionDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.DiskList
+ post.return_value = compute.Disk
- client.list(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -2789,8 +2771,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListRegionDisksRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRegionDiskRequest
):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2798,7 +2780,7 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2810,10 +2792,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.get(request)
-def test_list_rest_flattened():
+def test_get_rest_flattened():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2822,40 +2804,41 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.DiskList()
+ return_value = compute.Disk()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {"project": "sample1", "region": "sample2", "disk": "sample3"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ disk="disk_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.DiskList.to_json(return_value)
+ json_return_value = compute.Disk.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/disks"
+ "%s/compute/v1/projects/{project}/regions/{region}/disks/{disk}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2864,165 +2847,70 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListRegionDisksRequest(),
+ client.get(
+ compute.GetRegionDiskRequest(),
project="project_value",
region="region_value",
+ disk="disk_value",
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_get_rest_error():
client = RegionDisksClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.DiskList(
- items=[
- compute.Disk(),
- compute.Disk(),
- compute.Disk(),
- ],
- next_page_token="abc",
- ),
- compute.DiskList(
- items=[],
- next_page_token="def",
- ),
- compute.DiskList(
- items=[
- compute.Disk(),
- ],
- next_page_token="ghi",
- ),
- compute.DiskList(
- items=[
- compute.Disk(),
- compute.Disk(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.DiskList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Disk) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.RemoveResourcePoliciesRegionDiskRequest,
+ compute.GetIamPolicyRegionDiskRequest,
dict,
],
)
-def test_remove_resource_policies_unary_rest(request_type):
+def test_get_iam_policy_rest(request_type):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
- request_init["region_disks_remove_resource_policies_request_resource"] = {
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
- }
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
- kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
- self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_resource_policies_unary(request)
+ response = client.get_iam_policy(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
-def test_remove_resource_policies_unary_rest_required_fields(
- request_type=compute.RemoveResourcePoliciesRegionDiskRequest,
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicyRegionDiskRequest,
):
transport_class = transports.RegionDisksRestTransport
request_init = {}
- request_init["disk"] = ""
request_init["project"] = ""
request_init["region"] = ""
+ request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -3034,29 +2922,29 @@ def test_remove_resource_policies_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["disk"] = "disk_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
+ jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "disk" in jsonified_request
- assert jsonified_request["disk"] == "disk_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3065,7 +2953,7 @@ def test_remove_resource_policies_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Policy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3076,46 +2964,44 @@ def test_remove_resource_policies_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_resource_policies_unary(request)
+ response = client.get_iam_policy(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_remove_resource_policies_unary_rest_unset_required_fields():
+def test_get_iam_policy_rest_unset_required_fields():
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.remove_resource_policies._get_unset_required_fields({})
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(("optionsRequestedPolicyVersion",))
& set(
(
- "disk",
"project",
"region",
- "regionDisksRemoveResourcePoliciesRequestResource",
+ "resource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
+def test_get_iam_policy_rest_interceptors(null_interceptor):
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3128,9 +3014,9 @@ def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionDisksRestInterceptor, "post_remove_resource_policies"
+ transports.RegionDisksRestInterceptor, "post_get_iam_policy"
) as post, mock.patch.object(
- transports.RegionDisksRestInterceptor, "pre_remove_resource_policies"
+ transports.RegionDisksRestInterceptor, "pre_get_iam_policy"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3145,17 +3031,17 @@ def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
- request = compute.RemoveResourcePoliciesRegionDiskRequest()
+ request = compute.GetIamPolicyRegionDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.Policy
- client.remove_resource_policies_unary(
+ client.get_iam_policy(
request,
metadata=[
("key", "val"),
@@ -3167,9 +3053,8 @@ def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_remove_resource_policies_unary_rest_bad_request(
- transport: str = "rest",
- request_type=compute.RemoveResourcePoliciesRegionDiskRequest,
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetIamPolicyRegionDiskRequest
):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3177,10 +3062,7 @@ def test_remove_resource_policies_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
- request_init["region_disks_remove_resource_policies_request_resource"] = {
- "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
- }
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3192,10 +3074,10 @@ def test_remove_resource_policies_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.remove_resource_policies_unary(request)
+ client.get_iam_policy(request)
-def test_remove_resource_policies_unary_rest_flattened():
+def test_get_iam_policy_rest_flattened():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3204,44 +3086,45 @@ def test_remove_resource_policies_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Policy()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "resource": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- disk="disk_value",
- region_disks_remove_resource_policies_request_resource=compute.RegionDisksRemoveResourcePoliciesRequest(
- resource_policies=["resource_policies_value"]
- ),
+ resource="resource_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.remove_resource_policies_unary(**mock_args)
+ client.get_iam_policy(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/disks/{disk}/removeResourcePolicies"
+ "%s/compute/v1/projects/{project}/regions/{region}/disks/{resource}/getIamPolicy"
% client.transport._host,
args[1],
)
-def test_remove_resource_policies_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3250,18 +3133,15 @@ def test_remove_resource_policies_unary_rest_flattened_error(transport: str = "r
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.remove_resource_policies_unary(
- compute.RemoveResourcePoliciesRegionDiskRequest(),
+ client.get_iam_policy(
+ compute.GetIamPolicyRegionDiskRequest(),
project="project_value",
region="region_value",
- disk="disk_value",
- region_disks_remove_resource_policies_request_resource=compute.RegionDisksRemoveResourcePoliciesRequest(
- resource_policies=["resource_policies_value"]
- ),
+ resource="resource_value",
)
-def test_remove_resource_policies_unary_rest_error():
+def test_get_iam_policy_rest_error():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3270,19 +3150,62 @@ def test_remove_resource_policies_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ResizeRegionDiskRequest,
+ compute.InsertRegionDiskRequest,
dict,
],
)
-def test_resize_unary_rest(request_type):
+def test_insert_rest(request_type):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
- request_init["region_disks_resize_request_resource"] = {"size_gb": 739}
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["disk_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "guest_os_features": [{"type_": "type__value"}],
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_attach_timestamp": "last_attach_timestamp_value",
+ "last_detach_timestamp": "last_detach_timestamp_value",
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "options": "options_value",
+ "physical_block_size_bytes": 2663,
+ "provisioned_iops": 1740,
+ "region": "region_value",
+ "replica_zones": ["replica_zones_value_1", "replica_zones_value_2"],
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "size_gb": 739,
+ "source_disk": "source_disk_value",
+ "source_disk_id": "source_disk_id_value",
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_image_id": "source_image_id_value",
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ "source_snapshot_id": "source_snapshot_id_value",
+ "source_storage_object": "source_storage_object_value",
+ "status": "status_value",
+ "type_": "type__value",
+ "users": ["users_value_1", "users_value_2"],
+ "zone": "zone_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -3319,10 +3242,10 @@ def test_resize_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.resize_unary(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -3347,13 +3270,10 @@ def test_resize_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_resize_unary_rest_required_fields(
- request_type=compute.ResizeRegionDiskRequest,
-):
+def test_insert_rest_required_fields(request_type=compute.InsertRegionDiskRequest):
transport_class = transports.RegionDisksRestTransport
request_init = {}
- request_init["disk"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -3367,25 +3287,27 @@ def test_resize_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).resize._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["disk"] = "disk_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).resize._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "source_image",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "disk" in jsonified_request
- assert jsonified_request["disk"] == "disk_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -3421,34 +3343,38 @@ def test_resize_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.resize_unary(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_resize_unary_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.resize._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "requestId",
+ "sourceImage",
+ )
+ )
& set(
(
- "disk",
+ "diskResource",
"project",
"region",
- "regionDisksResizeRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_resize_unary_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3461,9 +3387,9 @@ def test_resize_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionDisksRestInterceptor, "post_resize"
+ transports.RegionDisksRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.RegionDisksRestInterceptor, "pre_resize"
+ transports.RegionDisksRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3480,7 +3406,7 @@ def test_resize_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ResizeRegionDiskRequest()
+ request = compute.InsertRegionDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3488,7 +3414,7 @@ def test_resize_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.resize_unary(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -3500,8 +3426,8 @@ def test_resize_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_resize_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.ResizeRegionDiskRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionDiskRequest
):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3509,8 +3435,51 @@ def test_resize_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
- request_init["region_disks_resize_request_resource"] = {"size_gb": 739}
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["disk_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "guest_os_features": [{"type_": "type__value"}],
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_attach_timestamp": "last_attach_timestamp_value",
+ "last_detach_timestamp": "last_detach_timestamp_value",
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "options": "options_value",
+ "physical_block_size_bytes": 2663,
+ "provisioned_iops": 1740,
+ "region": "region_value",
+ "replica_zones": ["replica_zones_value_1", "replica_zones_value_2"],
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "size_gb": 739,
+ "source_disk": "source_disk_value",
+ "source_disk_id": "source_disk_id_value",
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_image_id": "source_image_id_value",
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ "source_snapshot_id": "source_snapshot_id_value",
+ "source_storage_object": "source_storage_object_value",
+ "status": "status_value",
+ "type_": "type__value",
+ "users": ["users_value_1", "users_value_2"],
+ "zone": "zone_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3522,10 +3491,10 @@ def test_resize_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.resize_unary(request)
+ client.insert(request)
-def test_resize_unary_rest_flattened():
+def test_insert_rest_flattened():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3537,16 +3506,13 @@ def test_resize_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+ sample_request = {"project": "sample1", "region": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- disk="disk_value",
- region_disks_resize_request_resource=compute.RegionDisksResizeRequest(
- size_gb=739
- ),
+ disk_resource=compute.Disk(creation_timestamp="creation_timestamp_value"),
)
mock_args.update(sample_request)
@@ -3558,20 +3524,20 @@ def test_resize_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.resize_unary(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/disks/{disk}/resize"
+ "%s/compute/v1/projects/{project}/regions/{region}/disks"
% client.transport._host,
args[1],
)
-def test_resize_unary_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3580,18 +3546,15 @@ def test_resize_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.resize_unary(
- compute.ResizeRegionDiskRequest(),
+ client.insert(
+ compute.InsertRegionDiskRequest(),
project="project_value",
region="region_value",
- disk="disk_value",
- region_disks_resize_request_resource=compute.RegionDisksResizeRequest(
- size_gb=739
- ),
+ disk_resource=compute.Disk(creation_timestamp="creation_timestamp_value"),
)
-def test_resize_unary_rest_error():
+def test_insert_rest_error():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3600,88 +3563,2375 @@ def test_resize_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetIamPolicyRegionDiskRequest,
+ compute.InsertRegionDiskRequest,
dict,
],
)
-def test_set_iam_policy_rest(request_type):
+def test_insert_unary_rest(request_type):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
- request_init["region_set_policy_request_resource"] = {
- "bindings": [
- {
- "binding_id": "binding_id_value",
- "condition": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "members": ["members_value_1", "members_value_2"],
- "role": "role_value",
- }
- ],
- "etag": "etag_value",
- "policy": {
- "audit_configs": [
- {
- "audit_log_configs": [
- {
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "ignore_child_exemptions": True,
- "log_type": "log_type_value",
- }
- ],
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "service": "service_value",
- }
- ],
- "bindings": {},
- "etag": "etag_value",
- "iam_owned": True,
- "rules": [
- {
- "action": "action_value",
- "conditions": [
- {
- "iam": "iam_value",
- "op": "op_value",
- "svc": "svc_value",
- "sys": "sys_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "description": "description_value",
- "ins": ["ins_value_1", "ins_value_2"],
- "log_configs": [
- {
- "cloud_audit": {
- "authorization_logging_options": {
- "permission_type": "permission_type_value"
- },
- "log_name": "log_name_value",
- },
- "counter": {
- "custom_fields": [
- {"name": "name_value", "value": "value_value"}
- ],
- "field": "field_value",
- "metric": "metric_value",
- },
- "data_access": {"log_mode": "log_mode_value"},
- }
- ],
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["disk_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "guest_os_features": [{"type_": "type__value"}],
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_attach_timestamp": "last_attach_timestamp_value",
+ "last_detach_timestamp": "last_detach_timestamp_value",
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "options": "options_value",
+ "physical_block_size_bytes": 2663,
+ "provisioned_iops": 1740,
+ "region": "region_value",
+ "replica_zones": ["replica_zones_value_1", "replica_zones_value_2"],
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "size_gb": 739,
+ "source_disk": "source_disk_value",
+ "source_disk_id": "source_disk_id_value",
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_image_id": "source_image_id_value",
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ "source_snapshot_id": "source_snapshot_id_value",
+ "source_storage_object": "source_storage_object_value",
+ "status": "status_value",
+ "type_": "type__value",
+ "users": ["users_value_1", "users_value_2"],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertRegionDiskRequest,
+):
+ transport_class = transports.RegionDisksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "source_image",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.RegionDisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "sourceImage",
+ )
+ )
+ & set(
+ (
+ "diskResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionDisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionDisksRestInterceptor(),
+ )
+ client = RegionDisksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionDisksRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionDisksRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionDiskRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionDiskRequest
+):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["disk_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "guest_os_features": [{"type_": "type__value"}],
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "last_attach_timestamp": "last_attach_timestamp_value",
+ "last_detach_timestamp": "last_detach_timestamp_value",
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "options": "options_value",
+ "physical_block_size_bytes": 2663,
+ "provisioned_iops": 1740,
+ "region": "region_value",
+ "replica_zones": ["replica_zones_value_1", "replica_zones_value_2"],
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"],
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "size_gb": 739,
+ "source_disk": "source_disk_value",
+ "source_disk_id": "source_disk_id_value",
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_image_id": "source_image_id_value",
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ "source_snapshot_id": "source_snapshot_id_value",
+ "source_storage_object": "source_storage_object_value",
+ "status": "status_value",
+ "type_": "type__value",
+ "users": ["users_value_1", "users_value_2"],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ disk_resource=compute.Disk(creation_timestamp="creation_timestamp_value"),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/disks"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertRegionDiskRequest(),
+ project="project_value",
+ region="region_value",
+ disk_resource=compute.Disk(creation_timestamp="creation_timestamp_value"),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListRegionDisksRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.DiskList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.DiskList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListRegionDisksRequest):
+ transport_class = transports.RegionDisksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.DiskList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.DiskList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.RegionDisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.RegionDisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionDisksRestInterceptor(),
+ )
+ client = RegionDisksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionDisksRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.RegionDisksRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.DiskList.to_json(compute.DiskList())
+
+ request = compute.ListRegionDisksRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.DiskList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListRegionDisksRequest
+):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.DiskList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.DiskList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/disks"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListRegionDisksRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.DiskList(
+ items=[
+ compute.Disk(),
+ compute.Disk(),
+ compute.Disk(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.DiskList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.DiskList(
+ items=[
+ compute.Disk(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.DiskList(
+ items=[
+ compute.Disk(),
+ compute.Disk(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.DiskList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Disk) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.RemoveResourcePoliciesRegionDiskRequest,
+ dict,
+ ],
+)
+def test_remove_resource_policies_rest(request_type):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+ request_init["region_disks_remove_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.remove_resource_policies(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_remove_resource_policies_rest_required_fields(
+ request_type=compute.RemoveResourcePoliciesRegionDiskRequest,
+):
+ transport_class = transports.RegionDisksRestTransport
+
+ request_init = {}
+ request_init["disk"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["disk"] = "disk_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "disk" in jsonified_request
+ assert jsonified_request["disk"] == "disk_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.remove_resource_policies(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_remove_resource_policies_rest_unset_required_fields():
+ transport = transports.RegionDisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.remove_resource_policies._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "disk",
+ "project",
+ "region",
+ "regionDisksRemoveResourcePoliciesRequestResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_remove_resource_policies_rest_interceptors(null_interceptor):
+ transport = transports.RegionDisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionDisksRestInterceptor(),
+ )
+ client = RegionDisksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionDisksRestInterceptor, "post_remove_resource_policies"
+ ) as post, mock.patch.object(
+ transports.RegionDisksRestInterceptor, "pre_remove_resource_policies"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.RemoveResourcePoliciesRegionDiskRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.remove_resource_policies(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_remove_resource_policies_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.RemoveResourcePoliciesRegionDiskRequest,
+):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+ request_init["region_disks_remove_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.remove_resource_policies(request)
+
+
+def test_remove_resource_policies_rest_flattened():
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ disk="disk_value",
+ region_disks_remove_resource_policies_request_resource=compute.RegionDisksRemoveResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.remove_resource_policies(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/disks/{disk}/removeResourcePolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_remove_resource_policies_rest_flattened_error(transport: str = "rest"):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.remove_resource_policies(
+ compute.RemoveResourcePoliciesRegionDiskRequest(),
+ project="project_value",
+ region="region_value",
+ disk="disk_value",
+ region_disks_remove_resource_policies_request_resource=compute.RegionDisksRemoveResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
+ )
+
+
+def test_remove_resource_policies_rest_error():
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.RemoveResourcePoliciesRegionDiskRequest,
+ dict,
+ ],
+)
+def test_remove_resource_policies_unary_rest(request_type):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+ request_init["region_disks_remove_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.remove_resource_policies_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_remove_resource_policies_unary_rest_required_fields(
+ request_type=compute.RemoveResourcePoliciesRegionDiskRequest,
+):
+ transport_class = transports.RegionDisksRestTransport
+
+ request_init = {}
+ request_init["disk"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["disk"] = "disk_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).remove_resource_policies._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "disk" in jsonified_request
+ assert jsonified_request["disk"] == "disk_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.remove_resource_policies_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_remove_resource_policies_unary_rest_unset_required_fields():
+ transport = transports.RegionDisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.remove_resource_policies._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "disk",
+ "project",
+ "region",
+ "regionDisksRemoveResourcePoliciesRequestResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_remove_resource_policies_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionDisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionDisksRestInterceptor(),
+ )
+ client = RegionDisksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionDisksRestInterceptor, "post_remove_resource_policies"
+ ) as post, mock.patch.object(
+ transports.RegionDisksRestInterceptor, "pre_remove_resource_policies"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.RemoveResourcePoliciesRegionDiskRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.remove_resource_policies_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_remove_resource_policies_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.RemoveResourcePoliciesRegionDiskRequest,
+):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+ request_init["region_disks_remove_resource_policies_request_resource"] = {
+ "resource_policies": ["resource_policies_value_1", "resource_policies_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.remove_resource_policies_unary(request)
+
+
+def test_remove_resource_policies_unary_rest_flattened():
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ disk="disk_value",
+ region_disks_remove_resource_policies_request_resource=compute.RegionDisksRemoveResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.remove_resource_policies_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/disks/{disk}/removeResourcePolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_remove_resource_policies_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.remove_resource_policies_unary(
+ compute.RemoveResourcePoliciesRegionDiskRequest(),
+ project="project_value",
+ region="region_value",
+ disk="disk_value",
+ region_disks_remove_resource_policies_request_resource=compute.RegionDisksRemoveResourcePoliciesRequest(
+ resource_policies=["resource_policies_value"]
+ ),
+ )
+
+
+def test_remove_resource_policies_unary_rest_error():
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ResizeRegionDiskRequest,
+ dict,
+ ],
+)
+def test_resize_rest(request_type):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+ request_init["region_disks_resize_request_resource"] = {"size_gb": 739}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.resize(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_resize_rest_required_fields(request_type=compute.ResizeRegionDiskRequest):
+ transport_class = transports.RegionDisksRestTransport
+
+ request_init = {}
+ request_init["disk"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["disk"] = "disk_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "disk" in jsonified_request
+ assert jsonified_request["disk"] == "disk_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.resize(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_resize_rest_unset_required_fields():
+ transport = transports.RegionDisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.resize._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "disk",
+ "project",
+ "region",
+ "regionDisksResizeRequestResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_resize_rest_interceptors(null_interceptor):
+ transport = transports.RegionDisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionDisksRestInterceptor(),
+ )
+ client = RegionDisksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionDisksRestInterceptor, "post_resize"
+ ) as post, mock.patch.object(
+ transports.RegionDisksRestInterceptor, "pre_resize"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.ResizeRegionDiskRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.resize(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_resize_rest_bad_request(
+ transport: str = "rest", request_type=compute.ResizeRegionDiskRequest
+):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+ request_init["region_disks_resize_request_resource"] = {"size_gb": 739}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.resize(request)
+
+
+def test_resize_rest_flattened():
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ disk="disk_value",
+ region_disks_resize_request_resource=compute.RegionDisksResizeRequest(
+ size_gb=739
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.resize(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/disks/{disk}/resize"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_resize_rest_flattened_error(transport: str = "rest"):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.resize(
+ compute.ResizeRegionDiskRequest(),
+ project="project_value",
+ region="region_value",
+ disk="disk_value",
+ region_disks_resize_request_resource=compute.RegionDisksResizeRequest(
+ size_gb=739
+ ),
+ )
+
+
+def test_resize_rest_error():
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ResizeRegionDiskRequest,
+ dict,
+ ],
+)
+def test_resize_unary_rest(request_type):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+ request_init["region_disks_resize_request_resource"] = {"size_gb": 739}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.resize_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_resize_unary_rest_required_fields(
+ request_type=compute.ResizeRegionDiskRequest,
+):
+ transport_class = transports.RegionDisksRestTransport
+
+ request_init = {}
+ request_init["disk"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["disk"] = "disk_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "disk" in jsonified_request
+ assert jsonified_request["disk"] == "disk_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.resize_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_resize_unary_rest_unset_required_fields():
+ transport = transports.RegionDisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.resize._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "disk",
+ "project",
+ "region",
+ "regionDisksResizeRequestResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_resize_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionDisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionDisksRestInterceptor(),
+ )
+ client = RegionDisksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionDisksRestInterceptor, "post_resize"
+ ) as post, mock.patch.object(
+ transports.RegionDisksRestInterceptor, "pre_resize"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.ResizeRegionDiskRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.resize_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_resize_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.ResizeRegionDiskRequest
+):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+ request_init["region_disks_resize_request_resource"] = {"size_gb": 739}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.resize_unary(request)
+
+
+def test_resize_unary_rest_flattened():
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2", "disk": "sample3"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ disk="disk_value",
+ region_disks_resize_request_resource=compute.RegionDisksResizeRequest(
+ size_gb=739
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.resize_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/disks/{disk}/resize"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_resize_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.resize_unary(
+ compute.ResizeRegionDiskRequest(),
+ project="project_value",
+ region="region_value",
+ disk="disk_value",
+ region_disks_resize_request_resource=compute.RegionDisksResizeRequest(
+ size_gb=739
+ ),
+ )
+
+
+def test_resize_unary_rest_error():
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetIamPolicyRegionDiskRequest,
+ dict,
+ ],
+)
+def test_set_iam_policy_rest(request_type):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init["region_set_policy_request_resource"] = {
+ "bindings": [
+ {
+ "binding_id": "binding_id_value",
+ "condition": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "members": ["members_value_1", "members_value_2"],
+ "role": "role_value",
+ }
+ ],
+ "etag": "etag_value",
+ "policy": {
+ "audit_configs": [
+ {
+ "audit_log_configs": [
+ {
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "ignore_child_exemptions": True,
+ "log_type": "log_type_value",
+ }
+ ],
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "service": "service_value",
+ }
+ ],
+ "bindings": {},
+ "etag": "etag_value",
+ "iam_owned": True,
+ "rules": [
+ {
+ "action": "action_value",
+ "conditions": [
+ {
+ "iam": "iam_value",
+ "op": "op_value",
+ "svc": "svc_value",
+ "sys": "sys_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "ins": ["ins_value_1", "ins_value_2"],
+ "log_configs": [
+ {
+ "cloud_audit": {
+ "authorization_logging_options": {
+ "permission_type": "permission_type_value"
+ },
+ "log_name": "log_name_value",
+ },
+ "counter": {
+ "custom_fields": [
+ {"name": "name_value", "value": "value_value"}
+ ],
+ "field": "field_value",
+ "metric": "metric_value",
+ },
+ "data_access": {"log_mode": "log_mode_value"},
+ }
+ ],
+ "not_ins": ["not_ins_value_1", "not_ins_value_2"],
+ "permissions": ["permissions_value_1", "permissions_value_2"],
+ }
+ ],
+ "version": 774,
+ },
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_set_iam_policy_rest_required_fields(
+ request_type=compute.SetIamPolicyRegionDiskRequest,
+):
+ transport_class = transports.RegionDisksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["resource"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["resource"] = "resource_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_iam_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_iam_policy_rest_unset_required_fields():
+ transport = transports.RegionDisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "project",
+ "region",
+ "regionSetPolicyRequestResource",
+ "resource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_iam_policy_rest_interceptors(null_interceptor):
+ transport = transports.RegionDisksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionDisksRestInterceptor(),
+ )
+ client = RegionDisksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionDisksRestInterceptor, "post_set_iam_policy"
+ ) as post, mock.patch.object(
+ transports.RegionDisksRestInterceptor, "pre_set_iam_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
+
+ request = compute.SetIamPolicyRegionDiskRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Policy
+
+ client.set_iam_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetIamPolicyRegionDiskRequest
+):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init["region_set_policy_request_resource"] = {
+ "bindings": [
+ {
+ "binding_id": "binding_id_value",
+ "condition": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "members": ["members_value_1", "members_value_2"],
+ "role": "role_value",
+ }
+ ],
+ "etag": "etag_value",
+ "policy": {
+ "audit_configs": [
+ {
+ "audit_log_configs": [
+ {
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "ignore_child_exemptions": True,
+ "log_type": "log_type_value",
+ }
+ ],
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "service": "service_value",
+ }
+ ],
+ "bindings": {},
+ "etag": "etag_value",
+ "iam_owned": True,
+ "rules": [
+ {
+ "action": "action_value",
+ "conditions": [
+ {
+ "iam": "iam_value",
+ "op": "op_value",
+ "svc": "svc_value",
+ "sys": "sys_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "ins": ["ins_value_1", "ins_value_2"],
+ "log_configs": [
+ {
+ "cloud_audit": {
+ "authorization_logging_options": {
+ "permission_type": "permission_type_value"
+ },
+ "log_name": "log_name_value",
+ },
+ "counter": {
+ "custom_fields": [
+ {"name": "name_value", "value": "value_value"}
+ ],
+ "field": "field_value",
+ "metric": "metric_value",
+ },
+ "data_access": {"log_mode": "log_mode_value"},
+ }
+ ],
"not_ins": ["not_ins_value_1", "not_ins_value_2"],
"permissions": ["permissions_value_1", "permissions_value_2"],
}
@@ -3691,32 +5941,179 @@ def test_set_iam_policy_rest(request_type):
}
request = request_type(request_init)
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_iam_policy(request)
+
+
+def test_set_iam_policy_rest_flattened():
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "resource": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ resource="resource_value",
+ region_set_policy_request_resource=compute.RegionSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_iam_policy(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/disks/{resource}/setIamPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_iam_policy(
+ compute.SetIamPolicyRegionDiskRequest(),
+ project="project_value",
+ region="region_value",
+ resource="resource_value",
+ region_set_policy_request_resource=compute.RegionSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
+ ),
+ )
+
+
+def test_set_iam_policy_rest_error():
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetLabelsRegionDiskRequest,
+ dict,
+ ],
+)
+def test_set_labels_rest(request_type):
+ client = RegionDisksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init["region_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ }
+ request = request_type(request_init)
+
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.set_labels(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_set_iam_policy_rest_required_fields(
- request_type=compute.SetIamPolicyRegionDiskRequest,
+def test_set_labels_rest_required_fields(
+ request_type=compute.SetLabelsRegionDiskRequest,
):
transport_class = transports.RegionDisksRestTransport
@@ -3735,7 +6132,7 @@ def test_set_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).set_labels._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3746,7 +6143,9 @@ def test_set_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).set_labels._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -3764,7 +6163,7 @@ def test_set_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3783,30 +6182,30 @@ def test_set_iam_policy_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.set_labels(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_iam_policy_rest_unset_required_fields():
+def test_set_labels_rest_unset_required_fields():
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.set_labels._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
"region",
- "regionSetPolicyRequestResource",
+ "regionSetLabelsRequestResource",
"resource",
)
)
@@ -3814,7 +6213,7 @@ def test_set_iam_policy_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_iam_policy_rest_interceptors(null_interceptor):
+def test_set_labels_rest_interceptors(null_interceptor):
transport = transports.RegionDisksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3827,9 +6226,9 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionDisksRestInterceptor, "post_set_iam_policy"
+ transports.RegionDisksRestInterceptor, "post_set_labels"
) as post, mock.patch.object(
- transports.RegionDisksRestInterceptor, "pre_set_iam_policy"
+ transports.RegionDisksRestInterceptor, "pre_set_labels"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3844,17 +6243,17 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetIamPolicyRegionDiskRequest()
+ request = compute.SetLabelsRegionDiskRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.set_iam_policy(
+ client.set_labels(
request,
metadata=[
("key", "val"),
@@ -3866,8 +6265,8 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.SetIamPolicyRegionDiskRequest
+def test_set_labels_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetLabelsRegionDiskRequest
):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3876,82 +6275,9 @@ def test_set_iam_policy_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
- request_init["region_set_policy_request_resource"] = {
- "bindings": [
- {
- "binding_id": "binding_id_value",
- "condition": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "members": ["members_value_1", "members_value_2"],
- "role": "role_value",
- }
- ],
- "etag": "etag_value",
- "policy": {
- "audit_configs": [
- {
- "audit_log_configs": [
- {
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "ignore_child_exemptions": True,
- "log_type": "log_type_value",
- }
- ],
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "service": "service_value",
- }
- ],
- "bindings": {},
- "etag": "etag_value",
- "iam_owned": True,
- "rules": [
- {
- "action": "action_value",
- "conditions": [
- {
- "iam": "iam_value",
- "op": "op_value",
- "svc": "svc_value",
- "sys": "sys_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "description": "description_value",
- "ins": ["ins_value_1", "ins_value_2"],
- "log_configs": [
- {
- "cloud_audit": {
- "authorization_logging_options": {
- "permission_type": "permission_type_value"
- },
- "log_name": "log_name_value",
- },
- "counter": {
- "custom_fields": [
- {"name": "name_value", "value": "value_value"}
- ],
- "field": "field_value",
- "metric": "metric_value",
- },
- "data_access": {"log_mode": "log_mode_value"},
- }
- ],
- "not_ins": ["not_ins_value_1", "not_ins_value_2"],
- "permissions": ["permissions_value_1", "permissions_value_2"],
- }
- ],
- "version": 774,
- },
+ request_init["region_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
}
request = request_type(request_init)
@@ -3964,10 +6290,10 @@ def test_set_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_iam_policy(request)
+ client.set_labels(request)
-def test_set_iam_policy_rest_flattened():
+def test_set_labels_rest_flattened():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3976,7 +6302,7 @@ def test_set_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -3990,8 +6316,8 @@ def test_set_iam_policy_rest_flattened():
project="project_value",
region="region_value",
resource="resource_value",
- region_set_policy_request_resource=compute.RegionSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
+ region_set_labels_request_resource=compute.RegionSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
),
)
mock_args.update(sample_request)
@@ -3999,25 +6325,25 @@ def test_set_iam_policy_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_iam_policy(**mock_args)
+ client.set_labels(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/disks/{resource}/setIamPolicy"
+ "%s/compute/v1/projects/{project}/regions/{region}/disks/{resource}/setLabels"
% client.transport._host,
args[1],
)
-def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_set_labels_rest_flattened_error(transport: str = "rest"):
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4026,18 +6352,18 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_iam_policy(
- compute.SetIamPolicyRegionDiskRequest(),
+ client.set_labels(
+ compute.SetLabelsRegionDiskRequest(),
project="project_value",
region="region_value",
resource="resource_value",
- region_set_policy_request_resource=compute.RegionSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
+ region_set_labels_request_resource=compute.RegionSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
),
)
-def test_set_iam_policy_rest_error():
+def test_set_labels_rest_error():
client = RegionDisksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4102,28 +6428,6 @@ def test_set_labels_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_set_labels_unary_rest_required_fields(
@@ -4754,6 +7058,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionDisksClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_disks_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -4796,6 +7113,14 @@ def test_region_disks_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_disks_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_health_check_services.py b/tests/unit/gapic/compute_v1/test_region_health_check_services.py
index 090195bae..b651f12c7 100644
--- a/tests/unit/gapic/compute_v1/test_region_health_check_services.py
+++ b/tests/unit/gapic/compute_v1/test_region_health_check_services.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -563,7 +565,7 @@ def test_region_health_check_services_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -611,10 +613,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -639,7 +641,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteRegionHealthCheckServiceRequest,
):
transport_class = transports.RegionHealthCheckServicesRestTransport
@@ -712,14 +714,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.RegionHealthCheckServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -738,7 +740,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.RegionHealthCheckServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -778,7 +780,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -790,7 +792,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteRegionHealthCheckServiceRequest
):
client = RegionHealthCheckServicesClient(
@@ -815,10 +817,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -852,7 +854,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -865,7 +867,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -874,7 +876,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteRegionHealthCheckServiceRequest(),
project="project_value",
region="region_value",
@@ -882,7 +884,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -891,11 +893,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRegionHealthCheckServiceRequest,
+ compute.DeleteRegionHealthCheckServiceRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -912,50 +914,45 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheckService(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
- health_checks=["health_checks_value"],
- health_status_aggregation_policy="health_status_aggregation_policy_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- network_endpoint_groups=["network_endpoint_groups_value"],
- notification_endpoints=["notification_endpoints_value"],
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheckService.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.HealthCheckService)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.health_checks == ["health_checks_value"]
- assert (
- response.health_status_aggregation_policy
- == "health_status_aggregation_policy_value"
- )
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.network_endpoint_groups == ["network_endpoint_groups_value"]
- assert response.notification_endpoints == ["notification_endpoints_value"]
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(
- request_type=compute.GetRegionHealthCheckServiceRequest,
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteRegionHealthCheckServiceRequest,
):
transport_class = transports.RegionHealthCheckServicesRestTransport
@@ -974,7 +971,7 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -985,7 +982,9 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1003,7 +1002,7 @@ def test_get_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheckService()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1014,32 +1013,32 @@ def test_get_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheckService.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.RegionHealthCheckServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"healthCheckService",
@@ -1051,7 +1050,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.RegionHealthCheckServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1064,9 +1063,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionHealthCheckServicesRestInterceptor, "post_get"
+ transports.RegionHealthCheckServicesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.RegionHealthCheckServicesRestInterceptor, "pre_get"
+ transports.RegionHealthCheckServicesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1081,19 +1080,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.HealthCheckService.to_json(
- compute.HealthCheckService()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRegionHealthCheckServiceRequest()
+ request = compute.DeleteRegionHealthCheckServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.HealthCheckService
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1105,8 +1102,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRegionHealthCheckServiceRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteRegionHealthCheckServiceRequest
):
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1130,10 +1127,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1142,7 +1139,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheckService()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1162,12 +1159,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheckService.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1180,7 +1177,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1189,15 +1186,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRegionHealthCheckServiceRequest(),
+ client.delete_unary(
+ compute.DeleteRegionHealthCheckServiceRequest(),
project="project_value",
region="region_value",
health_check_service="health_check_service_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1206,108 +1203,76 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertRegionHealthCheckServiceRequest,
+ compute.GetRegionHealthCheckServiceRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["health_check_service_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "health_checks": ["health_checks_value_1", "health_checks_value_2"],
- "health_status_aggregation_policy": "health_status_aggregation_policy_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "network_endpoint_groups": [
- "network_endpoint_groups_value_1",
- "network_endpoint_groups_value_2",
- ],
- "notification_endpoints": [
- "notification_endpoints_value_1",
- "notification_endpoints_value_2",
- ],
- "region": "region_value",
- "self_link": "self_link_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "health_check_service": "sample3",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.HealthCheckService(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
+ health_checks=["health_checks_value"],
+ health_status_aggregation_policy="health_status_aggregation_policy_value",
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ network_endpoint_groups=["network_endpoint_groups_value"],
+ notification_endpoints=["notification_endpoints_value"],
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.HealthCheckService.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.HealthCheckService)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
+ assert response.health_checks == ["health_checks_value"]
+ assert (
+ response.health_status_aggregation_policy
+ == "health_status_aggregation_policy_value"
+ )
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.network_endpoint_groups == ["network_endpoint_groups_value"]
+ assert response.notification_endpoints == ["notification_endpoints_value"]
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertRegionHealthCheckServiceRequest,
+def test_get_rest_required_fields(
+ request_type=compute.GetRegionHealthCheckServiceRequest,
):
transport_class = transports.RegionHealthCheckServicesRestTransport
request_init = {}
+ request_init["health_check_service"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -1321,22 +1286,23 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["healthCheckService"] = "health_check_service_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "healthCheckService" in jsonified_request
+ assert jsonified_request["healthCheckService"] == "health_check_service_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -1349,7 +1315,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.HealthCheckService()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1360,36 +1326,35 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.HealthCheckService.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.RegionHealthCheckServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
- "healthCheckServiceResource",
+ "healthCheckService",
"project",
"region",
)
@@ -1398,7 +1363,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.RegionHealthCheckServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1411,9 +1376,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionHealthCheckServicesRestInterceptor, "post_insert"
+ transports.RegionHealthCheckServicesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.RegionHealthCheckServicesRestInterceptor, "pre_insert"
+ transports.RegionHealthCheckServicesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1428,17 +1393,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.HealthCheckService.to_json(
+ compute.HealthCheckService()
+ )
- request = compute.InsertRegionHealthCheckServiceRequest()
+ request = compute.GetRegionHealthCheckServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.HealthCheckService
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1450,8 +1417,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertRegionHealthCheckServiceRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRegionHealthCheckServiceRequest
):
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1459,26 +1426,10 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["health_check_service_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "health_checks": ["health_checks_value_1", "health_checks_value_2"],
- "health_status_aggregation_policy": "health_status_aggregation_policy_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "network_endpoint_groups": [
- "network_endpoint_groups_value_1",
- "network_endpoint_groups_value_2",
- ],
- "notification_endpoints": [
- "notification_endpoints_value_1",
- "notification_endpoints_value_2",
- ],
- "region": "region_value",
- "self_link": "self_link_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "health_check_service": "sample3",
}
request = request_type(request_init)
@@ -1491,10 +1442,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get(request)
-def test_insert_unary_rest_flattened():
+def test_get_rest_flattened():
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1503,43 +1454,45 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.HealthCheckService()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "health_check_service": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- health_check_service_resource=compute.HealthCheckService(
- creation_timestamp="creation_timestamp_value"
- ),
+ health_check_service="health_check_service_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.HealthCheckService.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/healthCheckServices"
+ "%s/compute/v1/projects/{project}/regions/{region}/healthCheckServices/{health_check_service}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1548,17 +1501,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertRegionHealthCheckServiceRequest(),
+ client.get(
+ compute.GetRegionHealthCheckServiceRequest(),
project="project_value",
region="region_value",
- health_check_service_resource=compute.HealthCheckService(
- creation_timestamp="creation_timestamp_value"
- ),
+ health_check_service="health_check_service_value",
)
-def test_insert_unary_rest_error():
+def test_get_rest_error():
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1567,11 +1518,11 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListRegionHealthCheckServicesRequest,
+ compute.InsertRegionHealthCheckServiceRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_insert_rest(request_type):
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1579,40 +1530,1151 @@ def test_list_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2"}
+ request_init["health_check_service_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "health_status_aggregation_policy": "health_status_aggregation_policy_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "network_endpoint_groups": [
+ "network_endpoint_groups_value_1",
+ "network_endpoint_groups_value_2",
+ ],
+ "notification_endpoints": [
+ "notification_endpoints_value_1",
+ "notification_endpoints_value_2",
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheckServicesList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertRegionHealthCheckServiceRequest,
+):
+ transport_class = transports.RegionHealthCheckServicesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.RegionHealthCheckServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "healthCheckServiceResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.RegionHealthCheckServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionHealthCheckServicesRestInterceptor(),
+ )
+ client = RegionHealthCheckServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionHealthCheckServicesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionHealthCheckServicesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionHealthCheckServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionHealthCheckServiceRequest
+):
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["health_check_service_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "health_status_aggregation_policy": "health_status_aggregation_policy_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "network_endpoint_groups": [
+ "network_endpoint_groups_value_1",
+ "network_endpoint_groups_value_2",
+ ],
+ "notification_endpoints": [
+ "notification_endpoints_value_1",
+ "notification_endpoints_value_2",
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ health_check_service_resource=compute.HealthCheckService(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/healthCheckServices"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertRegionHealthCheckServiceRequest(),
+ project="project_value",
+ region="region_value",
+ health_check_service_resource=compute.HealthCheckService(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionHealthCheckServiceRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["health_check_service_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "health_status_aggregation_policy": "health_status_aggregation_policy_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "network_endpoint_groups": [
+ "network_endpoint_groups_value_1",
+ "network_endpoint_groups_value_2",
+ ],
+ "notification_endpoints": [
+ "notification_endpoints_value_1",
+ "notification_endpoints_value_2",
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertRegionHealthCheckServiceRequest,
+):
+ transport_class = transports.RegionHealthCheckServicesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.RegionHealthCheckServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "healthCheckServiceResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionHealthCheckServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionHealthCheckServicesRestInterceptor(),
+ )
+ client = RegionHealthCheckServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionHealthCheckServicesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionHealthCheckServicesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionHealthCheckServiceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionHealthCheckServiceRequest
+):
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["health_check_service_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "health_status_aggregation_policy": "health_status_aggregation_policy_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "network_endpoint_groups": [
+ "network_endpoint_groups_value_1",
+ "network_endpoint_groups_value_2",
+ ],
+ "notification_endpoints": [
+ "notification_endpoints_value_1",
+ "notification_endpoints_value_2",
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ health_check_service_resource=compute.HealthCheckService(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/healthCheckServices"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertRegionHealthCheckServiceRequest(),
+ project="project_value",
+ region="region_value",
+ health_check_service_resource=compute.HealthCheckService(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListRegionHealthCheckServicesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.HealthCheckServicesList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.HealthCheckServicesList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(
+ request_type=compute.ListRegionHealthCheckServicesRequest,
+):
+ transport_class = transports.RegionHealthCheckServicesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.HealthCheckServicesList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.HealthCheckServicesList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.RegionHealthCheckServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.RegionHealthCheckServicesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionHealthCheckServicesRestInterceptor(),
+ )
+ client = RegionHealthCheckServicesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionHealthCheckServicesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.RegionHealthCheckServicesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.HealthCheckServicesList.to_json(
+ compute.HealthCheckServicesList()
+ )
+
+ request = compute.ListRegionHealthCheckServicesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.HealthCheckServicesList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListRegionHealthCheckServicesRequest
+):
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.HealthCheckServicesList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.HealthCheckServicesList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/healthCheckServices"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListRegionHealthCheckServicesRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.HealthCheckServicesList(
+ items=[
+ compute.HealthCheckService(),
+ compute.HealthCheckService(),
+ compute.HealthCheckService(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.HealthCheckServicesList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.HealthCheckServicesList(
+ items=[
+ compute.HealthCheckService(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.HealthCheckServicesList(
+ items=[
+ compute.HealthCheckService(),
+ compute.HealthCheckService(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.HealthCheckServicesList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.HealthCheckService) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRegionHealthCheckServiceRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = RegionHealthCheckServicesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "health_check_service": "sample3",
+ }
+ request_init["health_check_service_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "health_status_aggregation_policy": "health_status_aggregation_policy_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "network_endpoint_groups": [
+ "network_endpoint_groups_value_1",
+ "network_endpoint_groups_value_2",
+ ],
+ "notification_endpoints": [
+ "notification_endpoints_value_1",
+ "notification_endpoints_value_2",
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheckServicesList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(
- request_type=compute.ListRegionHealthCheckServicesRequest,
+def test_patch_rest_required_fields(
+ request_type=compute.PatchRegionHealthCheckServiceRequest,
):
transport_class = transports.RegionHealthCheckServicesRestTransport
request_init = {}
+ request_init["health_check_service"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -1626,30 +2688,25 @@ def test_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["healthCheckService"] = "health_check_service_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "healthCheckService" in jsonified_request
+ assert jsonified_request["healthCheckService"] == "health_check_service_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -1662,7 +2719,7 @@ def test_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheckServicesList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1673,42 +2730,37 @@ def test_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheckServicesList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_rest_unset_required_fields():
transport = transports.RegionHealthCheckServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
+ "healthCheckService",
+ "healthCheckServiceResource",
"project",
"region",
)
@@ -1717,7 +2769,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.RegionHealthCheckServicesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1730,9 +2782,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionHealthCheckServicesRestInterceptor, "post_list"
+ transports.RegionHealthCheckServicesRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.RegionHealthCheckServicesRestInterceptor, "pre_list"
+ transports.RegionHealthCheckServicesRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1747,19 +2799,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.HealthCheckServicesList.to_json(
- compute.HealthCheckServicesList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListRegionHealthCheckServicesRequest()
+ request = compute.PatchRegionHealthCheckServiceRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.HealthCheckServicesList
+ post.return_value = compute.Operation
- client.list(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -1771,8 +2821,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListRegionHealthCheckServicesRequest
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRegionHealthCheckServiceRequest
):
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1780,7 +2830,31 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "health_check_service": "sample3",
+ }
+ request_init["health_check_service_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "health_checks": ["health_checks_value_1", "health_checks_value_2"],
+ "health_status_aggregation_policy": "health_status_aggregation_policy_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "network_endpoint_groups": [
+ "network_endpoint_groups_value_1",
+ "network_endpoint_groups_value_2",
+ ],
+ "notification_endpoints": [
+ "notification_endpoints_value_1",
+ "notification_endpoints_value_2",
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1792,10 +2866,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch(request)
-def test_list_rest_flattened():
+def test_patch_rest_flattened():
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1804,40 +2878,48 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheckServicesList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "health_check_service": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ health_check_service="health_check_service_value",
+ health_check_service_resource=compute.HealthCheckService(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheckServicesList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/healthCheckServices"
+ "%s/compute/v1/projects/{project}/regions/{region}/healthCheckServices/{health_check_service}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = RegionHealthCheckServicesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1846,73 +2928,22 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListRegionHealthCheckServicesRequest(),
+ client.patch(
+ compute.PatchRegionHealthCheckServiceRequest(),
project="project_value",
region="region_value",
+ health_check_service="health_check_service_value",
+ health_check_service_resource=compute.HealthCheckService(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_rest_error():
client = RegionHealthCheckServicesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.HealthCheckServicesList(
- items=[
- compute.HealthCheckService(),
- compute.HealthCheckService(),
- compute.HealthCheckService(),
- ],
- next_page_token="abc",
- ),
- compute.HealthCheckServicesList(
- items=[],
- next_page_token="def",
- ),
- compute.HealthCheckServicesList(
- items=[
- compute.HealthCheckService(),
- ],
- next_page_token="ghi",
- ),
- compute.HealthCheckServicesList(
- items=[
- compute.HealthCheckService(),
- compute.HealthCheckService(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.HealthCheckServicesList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.HealthCheckService) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
@@ -1993,28 +3024,6 @@ def test_patch_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_patch_unary_rest_required_fields(
@@ -2369,6 +3378,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionHealthCheckServicesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_health_check_services_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2404,6 +3426,14 @@ def test_region_health_check_services_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_health_check_services_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_health_checks.py b/tests/unit/gapic/compute_v1/test_region_health_checks.py
index f32742aec..14b971857 100644
--- a/tests/unit/gapic/compute_v1/test_region_health_checks.py
+++ b/tests/unit/gapic/compute_v1/test_region_health_checks.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -547,7 +549,7 @@ def test_region_health_checks_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -595,10 +597,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -623,7 +625,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteRegionHealthCheckRequest,
):
transport_class = transports.RegionHealthChecksRestTransport
@@ -696,14 +698,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.RegionHealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -722,7 +724,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.RegionHealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -762,7 +764,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -774,7 +776,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteRegionHealthCheckRequest
):
client = RegionHealthChecksClient(
@@ -799,10 +801,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -836,7 +838,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -849,7 +851,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -858,7 +860,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteRegionHealthCheckRequest(),
project="project_value",
region="region_value",
@@ -866,7 +868,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -875,11 +877,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRegionHealthCheckRequest,
+ compute.DeleteRegionHealthCheckRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -896,46 +898,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheck(
- check_interval_sec=1884,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- healthy_threshold=1819,
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- timeout_sec=1185,
- type_="type__value",
- unhealthy_threshold=2046,
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheck.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.HealthCheck)
- assert response.check_interval_sec == 1884
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.healthy_threshold == 1819
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.timeout_sec == 1185
- assert response.type_ == "type__value"
- assert response.unhealthy_threshold == 2046
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetRegionHealthCheckRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteRegionHealthCheckRequest,
+):
transport_class = transports.RegionHealthChecksRestTransport
request_init = {}
@@ -953,7 +955,7 @@ def test_get_rest_required_fields(request_type=compute.GetRegionHealthCheckReque
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -964,7 +966,9 @@ def test_get_rest_required_fields(request_type=compute.GetRegionHealthCheckReque
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -982,7 +986,7 @@ def test_get_rest_required_fields(request_type=compute.GetRegionHealthCheckReque
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheck()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -993,32 +997,32 @@ def test_get_rest_required_fields(request_type=compute.GetRegionHealthCheckReque
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheck.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.RegionHealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"healthCheck",
@@ -1030,7 +1034,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.RegionHealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1043,9 +1047,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionHealthChecksRestInterceptor, "post_get"
+ transports.RegionHealthChecksRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.RegionHealthChecksRestInterceptor, "pre_get"
+ transports.RegionHealthChecksRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1060,17 +1064,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.HealthCheck.to_json(compute.HealthCheck())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRegionHealthCheckRequest()
+ request = compute.DeleteRegionHealthCheckRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.HealthCheck
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1082,8 +1086,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRegionHealthCheckRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteRegionHealthCheckRequest
):
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1107,10 +1111,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1119,7 +1123,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheck()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1139,12 +1143,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheck.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1157,7 +1161,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1166,15 +1170,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRegionHealthCheckRequest(),
+ client.delete_unary(
+ compute.DeleteRegionHealthCheckRequest(),
project="project_value",
region="region_value",
health_check="health_check_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1183,152 +1187,71 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertRegionHealthCheckRequest,
+ compute.GetRegionHealthCheckRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["health_check_resource"] = {
- "check_interval_sec": 1884,
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "grpc_health_check": {
- "grpc_service_name": "grpc_service_name_value",
- "port": 453,
- "port_name": "port_name_value",
- "port_specification": "port_specification_value",
- },
- "healthy_threshold": 1819,
- "http2_health_check": {
- "host": "host_value",
- "port": 453,
- "port_name": "port_name_value",
- "port_specification": "port_specification_value",
- "proxy_header": "proxy_header_value",
- "request_path": "request_path_value",
- "response": "response_value",
- },
- "http_health_check": {
- "host": "host_value",
- "port": 453,
- "port_name": "port_name_value",
- "port_specification": "port_specification_value",
- "proxy_header": "proxy_header_value",
- "request_path": "request_path_value",
- "response": "response_value",
- },
- "https_health_check": {
- "host": "host_value",
- "port": 453,
- "port_name": "port_name_value",
- "port_specification": "port_specification_value",
- "proxy_header": "proxy_header_value",
- "request_path": "request_path_value",
- "response": "response_value",
- },
- "id": 205,
- "kind": "kind_value",
- "log_config": {"enable": True},
- "name": "name_value",
- "region": "region_value",
- "self_link": "self_link_value",
- "ssl_health_check": {
- "port": 453,
- "port_name": "port_name_value",
- "port_specification": "port_specification_value",
- "proxy_header": "proxy_header_value",
- "request": "request_value",
- "response": "response_value",
- },
- "tcp_health_check": {
- "port": 453,
- "port_name": "port_name_value",
- "port_specification": "port_specification_value",
- "proxy_header": "proxy_header_value",
- "request": "request_value",
- "response": "response_value",
- },
- "timeout_sec": 1185,
- "type_": "type__value",
- "unhealthy_threshold": 2046,
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "health_check": "sample3",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.HealthCheck(
+ check_interval_sec=1884,
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ healthy_threshold=1819,
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ timeout_sec=1185,
+ type_="type__value",
+ unhealthy_threshold=2046,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.HealthCheck.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.HealthCheck)
+ assert response.check_interval_sec == 1884
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.healthy_threshold == 1819
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.timeout_sec == 1185
+ assert response.type_ == "type__value"
+ assert response.unhealthy_threshold == 2046
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertRegionHealthCheckRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetRegionHealthCheckRequest):
transport_class = transports.RegionHealthChecksRestTransport
request_init = {}
+ request_init["health_check"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -1342,22 +1265,23 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["healthCheck"] = "health_check_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "healthCheck" in jsonified_request
+ assert jsonified_request["healthCheck"] == "health_check_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -1370,7 +1294,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.HealthCheck()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1381,7 +1305,1617 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.HealthCheck.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.RegionHealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "healthCheck",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.RegionHealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionHealthChecksRestInterceptor(),
+ )
+ client = RegionHealthChecksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionHealthChecksRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.RegionHealthChecksRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.HealthCheck.to_json(compute.HealthCheck())
+
+ request = compute.GetRegionHealthCheckRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.HealthCheck
+
+ client.get(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRegionHealthCheckRequest
+):
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "health_check": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.HealthCheck()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "health_check": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ health_check="health_check_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.HealthCheck.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/healthChecks/{health_check}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetRegionHealthCheckRequest(),
+ project="project_value",
+ region="region_value",
+ health_check="health_check_value",
+ )
+
+
+def test_get_rest_error():
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionHealthCheckRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["health_check_resource"] = {
+ "check_interval_sec": 1884,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_health_check": {
+ "grpc_service_name": "grpc_service_name_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ },
+ "healthy_threshold": 1819,
+ "http2_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "http_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "https_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True},
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "ssl_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "tcp_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "timeout_sec": 1185,
+ "type_": "type__value",
+ "unhealthy_threshold": 2046,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertRegionHealthCheckRequest,
+):
+ transport_class = transports.RegionHealthChecksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.RegionHealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "healthCheckResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.RegionHealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionHealthChecksRestInterceptor(),
+ )
+ client = RegionHealthChecksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionHealthChecksRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionHealthChecksRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionHealthCheckRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionHealthCheckRequest
+):
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["health_check_resource"] = {
+ "check_interval_sec": 1884,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_health_check": {
+ "grpc_service_name": "grpc_service_name_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ },
+ "healthy_threshold": 1819,
+ "http2_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "http_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "https_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True},
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "ssl_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "tcp_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "timeout_sec": 1185,
+ "type_": "type__value",
+ "unhealthy_threshold": 2046,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ health_check_resource=compute.HealthCheck(check_interval_sec=1884),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/healthChecks"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertRegionHealthCheckRequest(),
+ project="project_value",
+ region="region_value",
+ health_check_resource=compute.HealthCheck(check_interval_sec=1884),
+ )
+
+
+def test_insert_rest_error():
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionHealthCheckRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["health_check_resource"] = {
+ "check_interval_sec": 1884,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_health_check": {
+ "grpc_service_name": "grpc_service_name_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ },
+ "healthy_threshold": 1819,
+ "http2_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "http_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "https_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True},
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "ssl_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "tcp_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "timeout_sec": 1185,
+ "type_": "type__value",
+ "unhealthy_threshold": 2046,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertRegionHealthCheckRequest,
+):
+ transport_class = transports.RegionHealthChecksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.RegionHealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "healthCheckResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionHealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionHealthChecksRestInterceptor(),
+ )
+ client = RegionHealthChecksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionHealthChecksRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionHealthChecksRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionHealthCheckRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionHealthCheckRequest
+):
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["health_check_resource"] = {
+ "check_interval_sec": 1884,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_health_check": {
+ "grpc_service_name": "grpc_service_name_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ },
+ "healthy_threshold": 1819,
+ "http2_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "http_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "https_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True},
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "ssl_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "tcp_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "timeout_sec": 1185,
+ "type_": "type__value",
+ "unhealthy_threshold": 2046,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ health_check_resource=compute.HealthCheck(check_interval_sec=1884),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/healthChecks"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertRegionHealthCheckRequest(),
+ project="project_value",
+ region="region_value",
+ health_check_resource=compute.HealthCheck(check_interval_sec=1884),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListRegionHealthChecksRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.HealthCheckList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.HealthCheckList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListRegionHealthChecksRequest):
+ transport_class = transports.RegionHealthChecksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.HealthCheckList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.HealthCheckList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.RegionHealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.RegionHealthChecksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionHealthChecksRestInterceptor(),
+ )
+ client = RegionHealthChecksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionHealthChecksRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.RegionHealthChecksRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.HealthCheckList.to_json(
+ compute.HealthCheckList()
+ )
+
+ request = compute.ListRegionHealthChecksRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.HealthCheckList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListRegionHealthChecksRequest
+):
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.HealthCheckList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.HealthCheckList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/healthChecks"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListRegionHealthChecksRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.HealthCheckList(
+ items=[
+ compute.HealthCheck(),
+ compute.HealthCheck(),
+ compute.HealthCheck(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.HealthCheckList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.HealthCheckList(
+ items=[
+ compute.HealthCheck(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.HealthCheckList(
+ items=[
+ compute.HealthCheck(),
+ compute.HealthCheck(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.HealthCheckList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.HealthCheck) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRegionHealthCheckRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "health_check": "sample3",
+ }
+ request_init["health_check_resource"] = {
+ "check_interval_sec": 1884,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_health_check": {
+ "grpc_service_name": "grpc_service_name_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ },
+ "healthy_threshold": 1819,
+ "http2_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "http_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "https_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True},
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "ssl_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "tcp_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "timeout_sec": 1185,
+ "type_": "type__value",
+ "unhealthy_threshold": 2046,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchRegionHealthCheckRequest):
+ transport_class = transports.RegionHealthChecksRestTransport
+
+ request_init = {}
+ request_init["health_check"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["healthCheck"] = "health_check_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "healthCheck" in jsonified_request
+ assert jsonified_request["healthCheck"] == "health_check_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionHealthChecksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -1393,23 +2927,24 @@ def test_insert_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.patch(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_patch_rest_unset_required_fields():
transport = transports.RegionHealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
+ "healthCheck",
"healthCheckResource",
"project",
"region",
@@ -1419,7 +2954,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.RegionHealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1432,9 +2967,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionHealthChecksRestInterceptor, "post_insert"
+ transports.RegionHealthChecksRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.RegionHealthChecksRestInterceptor, "pre_insert"
+ transports.RegionHealthChecksRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1451,7 +2986,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.InsertRegionHealthCheckRequest()
+ request = compute.PatchRegionHealthCheckRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1459,7 +2994,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.insert_unary(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -1471,8 +3006,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertRegionHealthCheckRequest
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRegionHealthCheckRequest
):
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1480,7 +3015,11 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "health_check": "sample3",
+ }
request_init["health_check_resource"] = {
"check_interval_sec": 1884,
"creation_timestamp": "creation_timestamp_value",
@@ -1556,10 +3095,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.patch(request)
-def test_insert_unary_rest_flattened():
+def test_patch_rest_flattened():
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1571,12 +3110,17 @@ def test_insert_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "health_check": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ health_check="health_check_value",
health_check_resource=compute.HealthCheck(check_interval_sec=1884),
)
mock_args.update(sample_request)
@@ -1589,20 +3133,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/healthChecks"
+ "%s/compute/v1/projects/{project}/regions/{region}/healthChecks/{health_check}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1611,15 +3155,16 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertRegionHealthCheckRequest(),
+ client.patch(
+ compute.PatchRegionHealthCheckRequest(),
project="project_value",
region="region_value",
+ health_check="health_check_value",
health_check_resource=compute.HealthCheck(check_interval_sec=1884),
)
-def test_insert_unary_rest_error():
+def test_patch_rest_error():
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1628,50 +3173,135 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListRegionHealthChecksRequest,
+ compute.PatchRegionHealthCheckRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_patch_unary_rest(request_type):
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "health_check": "sample3",
+ }
+ request_init["health_check_resource"] = {
+ "check_interval_sec": 1884,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_health_check": {
+ "grpc_service_name": "grpc_service_name_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ },
+ "healthy_threshold": 1819,
+ "http2_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "http_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "https_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True},
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "ssl_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "tcp_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "timeout_sec": 1185,
+ "type_": "type__value",
+ "unhealthy_threshold": 2046,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheckList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheckList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_list_rest_required_fields(request_type=compute.ListRegionHealthChecksRequest):
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchRegionHealthCheckRequest,
+):
transport_class = transports.RegionHealthChecksRestTransport
request_init = {}
+ request_init["health_check"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -1685,30 +3315,25 @@ def test_list_rest_required_fields(request_type=compute.ListRegionHealthChecksRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["healthCheck"] = "health_check_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "healthCheck" in jsonified_request
+ assert jsonified_request["healthCheck"] == "health_check_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -1721,7 +3346,7 @@ def test_list_rest_required_fields(request_type=compute.ListRegionHealthChecksRe
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheckList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1732,42 +3357,37 @@ def test_list_rest_required_fields(request_type=compute.ListRegionHealthChecksRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheckList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_unary_rest_unset_required_fields():
transport = transports.RegionHealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials
- )
-
- unset_fields = transport.list._get_unset_required_fields({})
- assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
& set(
(
+ "healthCheck",
+ "healthCheckResource",
"project",
"region",
)
@@ -1776,7 +3396,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_unary_rest_interceptors(null_interceptor):
transport = transports.RegionHealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1789,9 +3409,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionHealthChecksRestInterceptor, "post_list"
+ transports.RegionHealthChecksRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.RegionHealthChecksRestInterceptor, "pre_list"
+ transports.RegionHealthChecksRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1806,19 +3426,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.HealthCheckList.to_json(
- compute.HealthCheckList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListRegionHealthChecksRequest()
+ request = compute.PatchRegionHealthCheckRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.HealthCheckList
+ post.return_value = compute.Operation
- client.list(
+ client.patch_unary(
request,
metadata=[
("key", "val"),
@@ -1830,8 +3448,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListRegionHealthChecksRequest
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRegionHealthCheckRequest
):
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1839,7 +3457,75 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "health_check": "sample3",
+ }
+ request_init["health_check_resource"] = {
+ "check_interval_sec": 1884,
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_health_check": {
+ "grpc_service_name": "grpc_service_name_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ },
+ "healthy_threshold": 1819,
+ "http2_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "http_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "https_health_check": {
+ "host": "host_value",
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request_path": "request_path_value",
+ "response": "response_value",
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "log_config": {"enable": True},
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "ssl_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "tcp_health_check": {
+ "port": 453,
+ "port_name": "port_name_value",
+ "port_specification": "port_specification_value",
+ "proxy_header": "proxy_header_value",
+ "request": "request_value",
+ "response": "response_value",
+ },
+ "timeout_sec": 1185,
+ "type_": "type__value",
+ "unhealthy_threshold": 2046,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1851,10 +3537,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch_unary(request)
-def test_list_rest_flattened():
+def test_patch_unary_rest_flattened():
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1863,40 +3549,46 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.HealthCheckList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "health_check": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ health_check="health_check_value",
+ health_check_resource=compute.HealthCheck(check_interval_sec=1884),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.HealthCheckList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/healthChecks"
+ "%s/compute/v1/projects/{project}/regions/{region}/healthChecks/{health_check}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1905,82 +3597,29 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListRegionHealthChecksRequest(),
+ client.patch_unary(
+ compute.PatchRegionHealthCheckRequest(),
project="project_value",
region="region_value",
+ health_check="health_check_value",
+ health_check_resource=compute.HealthCheck(check_interval_sec=1884),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_unary_rest_error():
client = RegionHealthChecksClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.HealthCheckList(
- items=[
- compute.HealthCheck(),
- compute.HealthCheck(),
- compute.HealthCheck(),
- ],
- next_page_token="abc",
- ),
- compute.HealthCheckList(
- items=[],
- next_page_token="def",
- ),
- compute.HealthCheckList(
- items=[
- compute.HealthCheck(),
- ],
- next_page_token="ghi",
- ),
- compute.HealthCheckList(
- items=[
- compute.HealthCheck(),
- compute.HealthCheck(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.HealthCheckList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.HealthCheck) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchRegionHealthCheckRequest,
+ compute.UpdateRegionHealthCheckRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_update_rest(request_type):
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2092,10 +3731,10 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.update(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2120,8 +3759,8 @@ def test_patch_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchRegionHealthCheckRequest,
+def test_update_rest_required_fields(
+ request_type=compute.UpdateRegionHealthCheckRequest,
):
transport_class = transports.RegionHealthChecksRestTransport
@@ -2140,7 +3779,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2151,7 +3790,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -2182,7 +3821,7 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "put",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -2194,19 +3833,19 @@ def test_patch_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.update(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_update_rest_unset_required_fields():
transport = transports.RegionHealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.update._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
@@ -2221,7 +3860,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_update_rest_interceptors(null_interceptor):
transport = transports.RegionHealthChecksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2234,9 +3873,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionHealthChecksRestInterceptor, "post_patch"
+ transports.RegionHealthChecksRestInterceptor, "post_update"
) as post, mock.patch.object(
- transports.RegionHealthChecksRestInterceptor, "pre_patch"
+ transports.RegionHealthChecksRestInterceptor, "pre_update"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2253,7 +3892,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchRegionHealthCheckRequest()
+ request = compute.UpdateRegionHealthCheckRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2261,7 +3900,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.update(
request,
metadata=[
("key", "val"),
@@ -2273,8 +3912,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchRegionHealthCheckRequest
+def test_update_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateRegionHealthCheckRequest
):
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2362,10 +4001,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.update(request)
-def test_patch_unary_rest_flattened():
+def test_update_rest_flattened():
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2400,7 +4039,7 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.update(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -2413,7 +4052,7 @@ def test_patch_unary_rest_flattened():
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_rest_flattened_error(transport: str = "rest"):
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2422,8 +4061,8 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchRegionHealthCheckRequest(),
+ client.update(
+ compute.UpdateRegionHealthCheckRequest(),
project="project_value",
region="region_value",
health_check="health_check_value",
@@ -2431,7 +4070,7 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_patch_unary_rest_error():
+def test_update_rest_error():
client = RegionHealthChecksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2560,28 +4199,6 @@ def test_update_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_unary_rest_required_fields(
@@ -2976,6 +4593,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionHealthChecksClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_health_checks_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3012,6 +4642,14 @@ def test_region_health_checks_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_health_checks_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_instance_group_managers.py b/tests/unit/gapic/compute_v1/test_region_instance_group_managers.py
index 1337bca92..de1866da3 100644
--- a/tests/unit/gapic/compute_v1/test_region_instance_group_managers.py
+++ b/tests/unit/gapic/compute_v1/test_region_instance_group_managers.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -563,7 +565,7 @@ def test_region_instance_group_managers_client_client_options_credentials_file(
dict,
],
)
-def test_abandon_instances_unary_rest(request_type):
+def test_abandon_instances_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -614,10 +616,10 @@ def test_abandon_instances_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.abandon_instances_unary(request)
+ response = client.abandon_instances(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -642,7 +644,7 @@ def test_abandon_instances_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_abandon_instances_unary_rest_required_fields(
+def test_abandon_instances_rest_required_fields(
request_type=compute.AbandonInstancesRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -716,14 +718,14 @@ def test_abandon_instances_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.abandon_instances_unary(request)
+ response = client.abandon_instances(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_abandon_instances_unary_rest_unset_required_fields():
+def test_abandon_instances_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -743,7 +745,7 @@ def test_abandon_instances_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_abandon_instances_unary_rest_interceptors(null_interceptor):
+def test_abandon_instances_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -783,7 +785,7 @@ def test_abandon_instances_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.abandon_instances_unary(
+ client.abandon_instances(
request,
metadata=[
("key", "val"),
@@ -795,7 +797,7 @@ def test_abandon_instances_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_abandon_instances_unary_rest_bad_request(
+def test_abandon_instances_rest_bad_request(
transport: str = "rest",
request_type=compute.AbandonInstancesRegionInstanceGroupManagerRequest,
):
@@ -824,10 +826,10 @@ def test_abandon_instances_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.abandon_instances_unary(request)
+ client.abandon_instances(request)
-def test_abandon_instances_unary_rest_flattened():
+def test_abandon_instances_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -864,7 +866,7 @@ def test_abandon_instances_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.abandon_instances_unary(**mock_args)
+ client.abandon_instances(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -877,7 +879,7 @@ def test_abandon_instances_unary_rest_flattened():
)
-def test_abandon_instances_unary_rest_flattened_error(transport: str = "rest"):
+def test_abandon_instances_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -886,7 +888,7 @@ def test_abandon_instances_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.abandon_instances_unary(
+ client.abandon_instances(
compute.AbandonInstancesRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
@@ -897,7 +899,7 @@ def test_abandon_instances_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_abandon_instances_unary_rest_error():
+def test_abandon_instances_rest_error():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -906,11 +908,11 @@ def test_abandon_instances_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest,
+ compute.AbandonInstancesRegionInstanceGroupManagerRequest,
dict,
],
)
-def test_apply_updates_to_instances_unary_rest(request_type):
+def test_abandon_instances_unary_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -922,12 +924,9 @@ def test_apply_updates_to_instances_unary_rest(request_type):
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init["region_instance_group_managers_apply_updates_request_resource"] = {
- "all_instances": True,
- "instances": ["instances_value_1", "instances_value_2"],
- "minimal_action": "minimal_action_value",
- "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
- }
+ request_init[
+ "region_instance_group_managers_abandon_instances_request_resource"
+ ] = {"instances": ["instances_value_1", "instances_value_2"]}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -964,36 +963,14 @@ def test_apply_updates_to_instances_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.apply_updates_to_instances_unary(request)
+ response = client.abandon_instances_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_apply_updates_to_instances_unary_rest_required_fields(
- request_type=compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest,
+def test_abandon_instances_unary_rest_required_fields(
+ request_type=compute.AbandonInstancesRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -1012,7 +989,7 @@ def test_apply_updates_to_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).apply_updates_to_instances._get_unset_required_fields(jsonified_request)
+ ).abandon_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1023,7 +1000,9 @@ def test_apply_updates_to_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).apply_updates_to_instances._get_unset_required_fields(jsonified_request)
+ ).abandon_instances._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1064,34 +1043,34 @@ def test_apply_updates_to_instances_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.apply_updates_to_instances_unary(request)
+ response = client.abandon_instances_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_apply_updates_to_instances_unary_rest_unset_required_fields():
+def test_abandon_instances_unary_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.apply_updates_to_instances._get_unset_required_fields({})
+ unset_fields = transport.abandon_instances._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"instanceGroupManager",
"project",
"region",
- "regionInstanceGroupManagersApplyUpdatesRequestResource",
+ "regionInstanceGroupManagersAbandonInstancesRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_apply_updates_to_instances_unary_rest_interceptors(null_interceptor):
+def test_abandon_instances_unary_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1104,11 +1083,9 @@ def test_apply_updates_to_instances_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor,
- "post_apply_updates_to_instances",
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_abandon_instances"
) as post, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor,
- "pre_apply_updates_to_instances",
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_abandon_instances"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1125,7 +1102,7 @@ def test_apply_updates_to_instances_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest()
+ request = compute.AbandonInstancesRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1133,7 +1110,7 @@ def test_apply_updates_to_instances_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.apply_updates_to_instances_unary(
+ client.abandon_instances_unary(
request,
metadata=[
("key", "val"),
@@ -1145,9 +1122,9 @@ def test_apply_updates_to_instances_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_apply_updates_to_instances_unary_rest_bad_request(
+def test_abandon_instances_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest,
+ request_type=compute.AbandonInstancesRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1160,12 +1137,9 @@ def test_apply_updates_to_instances_unary_rest_bad_request(
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init["region_instance_group_managers_apply_updates_request_resource"] = {
- "all_instances": True,
- "instances": ["instances_value_1", "instances_value_2"],
- "minimal_action": "minimal_action_value",
- "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
- }
+ request_init[
+ "region_instance_group_managers_abandon_instances_request_resource"
+ ] = {"instances": ["instances_value_1", "instances_value_2"]}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1177,10 +1151,10 @@ def test_apply_updates_to_instances_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.apply_updates_to_instances_unary(request)
+ client.abandon_instances_unary(request)
-def test_apply_updates_to_instances_unary_rest_flattened():
+def test_abandon_instances_unary_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1203,8 +1177,8 @@ def test_apply_updates_to_instances_unary_rest_flattened():
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_managers_apply_updates_request_resource=compute.RegionInstanceGroupManagersApplyUpdatesRequest(
- all_instances=True
+ region_instance_group_managers_abandon_instances_request_resource=compute.RegionInstanceGroupManagersAbandonInstancesRequest(
+ instances=["instances_value"]
),
)
mock_args.update(sample_request)
@@ -1217,20 +1191,20 @@ def test_apply_updates_to_instances_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.apply_updates_to_instances_unary(**mock_args)
+ client.abandon_instances_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/applyUpdatesToInstances"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/abandonInstances"
% client.transport._host,
args[1],
)
-def test_apply_updates_to_instances_unary_rest_flattened_error(transport: str = "rest"):
+def test_abandon_instances_unary_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1239,18 +1213,18 @@ def test_apply_updates_to_instances_unary_rest_flattened_error(transport: str =
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.apply_updates_to_instances_unary(
- compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest(),
+ client.abandon_instances_unary(
+ compute.AbandonInstancesRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_managers_apply_updates_request_resource=compute.RegionInstanceGroupManagersApplyUpdatesRequest(
- all_instances=True
+ region_instance_group_managers_abandon_instances_request_resource=compute.RegionInstanceGroupManagersAbandonInstancesRequest(
+ instances=["instances_value"]
),
)
-def test_apply_updates_to_instances_unary_rest_error():
+def test_abandon_instances_unary_rest_error():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1259,11 +1233,11 @@ def test_apply_updates_to_instances_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.CreateInstancesRegionInstanceGroupManagerRequest,
+ compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest,
dict,
],
)
-def test_create_instances_unary_rest(request_type):
+def test_apply_updates_to_instances_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1275,15 +1249,11 @@ def test_create_instances_unary_rest(request_type):
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init["region_instance_group_managers_create_instances_request_resource"] = {
- "instances": [
- {
- "fingerprint": "fingerprint_value",
- "name": "name_value",
- "preserved_state": {"disks": {}, "metadata": {}},
- "status": "status_value",
- }
- ]
+ request_init["region_instance_group_managers_apply_updates_request_resource"] = {
+ "all_instances": True,
+ "instances": ["instances_value_1", "instances_value_2"],
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
}
request = request_type(request_init)
@@ -1321,10 +1291,10 @@ def test_create_instances_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.create_instances_unary(request)
+ response = client.apply_updates_to_instances(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1349,8 +1319,8 @@ def test_create_instances_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_create_instances_unary_rest_required_fields(
- request_type=compute.CreateInstancesRegionInstanceGroupManagerRequest,
+def test_apply_updates_to_instances_rest_required_fields(
+ request_type=compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -1369,7 +1339,7 @@ def test_create_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).create_instances._get_unset_required_fields(jsonified_request)
+ ).apply_updates_to_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1380,9 +1350,7 @@ def test_create_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).create_instances._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).apply_updates_to_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1423,34 +1391,34 @@ def test_create_instances_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.create_instances_unary(request)
+ response = client.apply_updates_to_instances(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_create_instances_unary_rest_unset_required_fields():
+def test_apply_updates_to_instances_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.create_instances._get_unset_required_fields({})
+ unset_fields = transport.apply_updates_to_instances._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"instanceGroupManager",
"project",
"region",
- "regionInstanceGroupManagersCreateInstancesRequestResource",
+ "regionInstanceGroupManagersApplyUpdatesRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_create_instances_unary_rest_interceptors(null_interceptor):
+def test_apply_updates_to_instances_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1463,9 +1431,11 @@ def test_create_instances_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "post_create_instances"
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "post_apply_updates_to_instances",
) as post, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "pre_create_instances"
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "pre_apply_updates_to_instances",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1482,7 +1452,7 @@ def test_create_instances_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.CreateInstancesRegionInstanceGroupManagerRequest()
+ request = compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1490,7 +1460,7 @@ def test_create_instances_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.create_instances_unary(
+ client.apply_updates_to_instances(
request,
metadata=[
("key", "val"),
@@ -1502,9 +1472,9 @@ def test_create_instances_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_create_instances_unary_rest_bad_request(
+def test_apply_updates_to_instances_rest_bad_request(
transport: str = "rest",
- request_type=compute.CreateInstancesRegionInstanceGroupManagerRequest,
+ request_type=compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1517,15 +1487,11 @@ def test_create_instances_unary_rest_bad_request(
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init["region_instance_group_managers_create_instances_request_resource"] = {
- "instances": [
- {
- "fingerprint": "fingerprint_value",
- "name": "name_value",
- "preserved_state": {"disks": {}, "metadata": {}},
- "status": "status_value",
- }
- ]
+ request_init["region_instance_group_managers_apply_updates_request_resource"] = {
+ "all_instances": True,
+ "instances": ["instances_value_1", "instances_value_2"],
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
}
request = request_type(request_init)
@@ -1538,10 +1504,10 @@ def test_create_instances_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.create_instances_unary(request)
+ client.apply_updates_to_instances(request)
-def test_create_instances_unary_rest_flattened():
+def test_apply_updates_to_instances_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1564,8 +1530,8 @@ def test_create_instances_unary_rest_flattened():
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_managers_create_instances_request_resource=compute.RegionInstanceGroupManagersCreateInstancesRequest(
- instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")]
+ region_instance_group_managers_apply_updates_request_resource=compute.RegionInstanceGroupManagersApplyUpdatesRequest(
+ all_instances=True
),
)
mock_args.update(sample_request)
@@ -1578,20 +1544,20 @@ def test_create_instances_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.create_instances_unary(**mock_args)
+ client.apply_updates_to_instances(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/createInstances"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/applyUpdatesToInstances"
% client.transport._host,
args[1],
)
-def test_create_instances_unary_rest_flattened_error(transport: str = "rest"):
+def test_apply_updates_to_instances_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1600,18 +1566,18 @@ def test_create_instances_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.create_instances_unary(
- compute.CreateInstancesRegionInstanceGroupManagerRequest(),
+ client.apply_updates_to_instances(
+ compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_managers_create_instances_request_resource=compute.RegionInstanceGroupManagersCreateInstancesRequest(
- instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")]
+ region_instance_group_managers_apply_updates_request_resource=compute.RegionInstanceGroupManagersApplyUpdatesRequest(
+ all_instances=True
),
)
-def test_create_instances_unary_rest_error():
+def test_apply_updates_to_instances_rest_error():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1620,11 +1586,11 @@ def test_create_instances_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteRegionInstanceGroupManagerRequest,
+ compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest,
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_apply_updates_to_instances_unary_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1636,6 +1602,12 @@ def test_delete_unary_rest(request_type):
"region": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["region_instance_group_managers_apply_updates_request_resource"] = {
+ "all_instances": True,
+ "instances": ["instances_value_1", "instances_value_2"],
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1672,36 +1644,14 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.apply_updates_to_instances_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteRegionInstanceGroupManagerRequest,
+def test_apply_updates_to_instances_unary_rest_required_fields(
+ request_type=compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -1720,7 +1670,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).apply_updates_to_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1731,9 +1681,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).apply_updates_to_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1762,9 +1710,10 @@ def test_delete_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1773,33 +1722,34 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.apply_updates_to_instances_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_apply_updates_to_instances_unary_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.apply_updates_to_instances._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"instanceGroupManager",
"project",
"region",
+ "regionInstanceGroupManagersApplyUpdatesRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_apply_updates_to_instances_unary_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1812,9 +1762,11 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "post_delete"
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "post_apply_updates_to_instances",
) as post, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "pre_delete"
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "pre_apply_updates_to_instances",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1831,7 +1783,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteRegionInstanceGroupManagerRequest()
+ request = compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1839,7 +1791,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.apply_updates_to_instances_unary(
request,
metadata=[
("key", "val"),
@@ -1851,9 +1803,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_apply_updates_to_instances_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.DeleteRegionInstanceGroupManagerRequest,
+ request_type=compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1866,6 +1818,12 @@ def test_delete_unary_rest_bad_request(
"region": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["region_instance_group_managers_apply_updates_request_resource"] = {
+ "all_instances": True,
+ "instances": ["instances_value_1", "instances_value_2"],
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1877,10 +1835,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.apply_updates_to_instances_unary(request)
-def test_delete_unary_rest_flattened():
+def test_apply_updates_to_instances_unary_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1903,6 +1861,9 @@ def test_delete_unary_rest_flattened():
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
+ region_instance_group_managers_apply_updates_request_resource=compute.RegionInstanceGroupManagersApplyUpdatesRequest(
+ all_instances=True
+ ),
)
mock_args.update(sample_request)
@@ -1914,20 +1875,20 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.apply_updates_to_instances_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/applyUpdatesToInstances"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_apply_updates_to_instances_unary_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1936,15 +1897,18 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteRegionInstanceGroupManagerRequest(),
+ client.apply_updates_to_instances_unary(
+ compute.ApplyUpdatesToInstancesRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
+ region_instance_group_managers_apply_updates_request_resource=compute.RegionInstanceGroupManagersApplyUpdatesRequest(
+ all_instances=True
+ ),
)
-def test_delete_unary_rest_error():
+def test_apply_updates_to_instances_unary_rest_error():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1953,11 +1917,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteInstancesRegionInstanceGroupManagerRequest,
+ compute.CreateInstancesRegionInstanceGroupManagerRequest,
dict,
],
)
-def test_delete_instances_unary_rest(request_type):
+def test_create_instances_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1969,9 +1933,15 @@ def test_delete_instances_unary_rest(request_type):
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init["region_instance_group_managers_delete_instances_request_resource"] = {
- "instances": ["instances_value_1", "instances_value_2"],
- "skip_instances_on_validation_error": True,
+ request_init["region_instance_group_managers_create_instances_request_resource"] = {
+ "instances": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
}
request = request_type(request_init)
@@ -2009,10 +1979,10 @@ def test_delete_instances_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_instances_unary(request)
+ response = client.create_instances(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2037,8 +2007,8 @@ def test_delete_instances_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_instances_unary_rest_required_fields(
- request_type=compute.DeleteInstancesRegionInstanceGroupManagerRequest,
+def test_create_instances_rest_required_fields(
+ request_type=compute.CreateInstancesRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -2057,7 +2027,7 @@ def test_delete_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_instances._get_unset_required_fields(jsonified_request)
+ ).create_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2068,7 +2038,7 @@ def test_delete_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_instances._get_unset_required_fields(jsonified_request)
+ ).create_instances._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -2111,19 +2081,19 @@ def test_delete_instances_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_instances_unary(request)
+ response = client.create_instances(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_instances_unary_rest_unset_required_fields():
+def test_create_instances_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete_instances._get_unset_required_fields({})
+ unset_fields = transport.create_instances._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
@@ -2131,14 +2101,14 @@ def test_delete_instances_unary_rest_unset_required_fields():
"instanceGroupManager",
"project",
"region",
- "regionInstanceGroupManagersDeleteInstancesRequestResource",
+ "regionInstanceGroupManagersCreateInstancesRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_instances_unary_rest_interceptors(null_interceptor):
+def test_create_instances_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2151,9 +2121,9 @@ def test_delete_instances_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "post_delete_instances"
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_create_instances"
) as post, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "pre_delete_instances"
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_create_instances"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2170,7 +2140,7 @@ def test_delete_instances_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteInstancesRegionInstanceGroupManagerRequest()
+ request = compute.CreateInstancesRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2178,7 +2148,7 @@ def test_delete_instances_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_instances_unary(
+ client.create_instances(
request,
metadata=[
("key", "val"),
@@ -2190,9 +2160,9 @@ def test_delete_instances_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_instances_unary_rest_bad_request(
+def test_create_instances_rest_bad_request(
transport: str = "rest",
- request_type=compute.DeleteInstancesRegionInstanceGroupManagerRequest,
+ request_type=compute.CreateInstancesRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2205,9 +2175,15 @@ def test_delete_instances_unary_rest_bad_request(
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init["region_instance_group_managers_delete_instances_request_resource"] = {
- "instances": ["instances_value_1", "instances_value_2"],
- "skip_instances_on_validation_error": True,
+ request_init["region_instance_group_managers_create_instances_request_resource"] = {
+ "instances": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
}
request = request_type(request_init)
@@ -2220,10 +2196,10 @@ def test_delete_instances_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_instances_unary(request)
+ client.create_instances(request)
-def test_delete_instances_unary_rest_flattened():
+def test_create_instances_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2246,8 +2222,8 @@ def test_delete_instances_unary_rest_flattened():
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_managers_delete_instances_request_resource=compute.RegionInstanceGroupManagersDeleteInstancesRequest(
- instances=["instances_value"]
+ region_instance_group_managers_create_instances_request_resource=compute.RegionInstanceGroupManagersCreateInstancesRequest(
+ instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")]
),
)
mock_args.update(sample_request)
@@ -2260,20 +2236,20 @@ def test_delete_instances_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_instances_unary(**mock_args)
+ client.create_instances(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/deleteInstances"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/createInstances"
% client.transport._host,
args[1],
)
-def test_delete_instances_unary_rest_flattened_error(transport: str = "rest"):
+def test_create_instances_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2282,18 +2258,18 @@ def test_delete_instances_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_instances_unary(
- compute.DeleteInstancesRegionInstanceGroupManagerRequest(),
+ client.create_instances(
+ compute.CreateInstancesRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_managers_delete_instances_request_resource=compute.RegionInstanceGroupManagersDeleteInstancesRequest(
- instances=["instances_value"]
+ region_instance_group_managers_create_instances_request_resource=compute.RegionInstanceGroupManagersCreateInstancesRequest(
+ instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")]
),
)
-def test_delete_instances_unary_rest_error():
+def test_create_instances_rest_error():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2302,11 +2278,11 @@ def test_delete_instances_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest,
+ compute.CreateInstancesRegionInstanceGroupManagerRequest,
dict,
],
)
-def test_delete_per_instance_configs_unary_rest(request_type):
+def test_create_instances_unary_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2318,9 +2294,16 @@ def test_delete_per_instance_configs_unary_rest(request_type):
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init[
- "region_instance_group_manager_delete_instance_config_req_resource"
- ] = {"names": ["names_value_1", "names_value_2"]}
+ request_init["region_instance_group_managers_create_instances_request_resource"] = {
+ "instances": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -2357,36 +2340,14 @@ def test_delete_per_instance_configs_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_per_instance_configs_unary(request)
+ response = client.create_instances_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_delete_per_instance_configs_unary_rest_required_fields(
- request_type=compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest,
+def test_create_instances_unary_rest_required_fields(
+ request_type=compute.CreateInstancesRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -2405,7 +2366,7 @@ def test_delete_per_instance_configs_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_per_instance_configs._get_unset_required_fields(jsonified_request)
+ ).create_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2416,7 +2377,9 @@ def test_delete_per_instance_configs_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete_per_instance_configs._get_unset_required_fields(jsonified_request)
+ ).create_instances._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2457,34 +2420,34 @@ def test_delete_per_instance_configs_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_per_instance_configs_unary(request)
+ response = client.create_instances_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_per_instance_configs_unary_rest_unset_required_fields():
+def test_create_instances_unary_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete_per_instance_configs._get_unset_required_fields({})
+ unset_fields = transport.create_instances._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"instanceGroupManager",
"project",
"region",
- "regionInstanceGroupManagerDeleteInstanceConfigReqResource",
+ "regionInstanceGroupManagersCreateInstancesRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_per_instance_configs_unary_rest_interceptors(null_interceptor):
+def test_create_instances_unary_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2497,11 +2460,9 @@ def test_delete_per_instance_configs_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor,
- "post_delete_per_instance_configs",
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_create_instances"
) as post, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor,
- "pre_delete_per_instance_configs",
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_create_instances"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2518,7 +2479,7 @@ def test_delete_per_instance_configs_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest()
+ request = compute.CreateInstancesRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2526,7 +2487,7 @@ def test_delete_per_instance_configs_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_per_instance_configs_unary(
+ client.create_instances_unary(
request,
metadata=[
("key", "val"),
@@ -2538,9 +2499,9 @@ def test_delete_per_instance_configs_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_per_instance_configs_unary_rest_bad_request(
+def test_create_instances_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest,
+ request_type=compute.CreateInstancesRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2553,9 +2514,16 @@ def test_delete_per_instance_configs_unary_rest_bad_request(
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init[
- "region_instance_group_manager_delete_instance_config_req_resource"
- ] = {"names": ["names_value_1", "names_value_2"]}
+ request_init["region_instance_group_managers_create_instances_request_resource"] = {
+ "instances": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2567,10 +2535,10 @@ def test_delete_per_instance_configs_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_per_instance_configs_unary(request)
+ client.create_instances_unary(request)
-def test_delete_per_instance_configs_unary_rest_flattened():
+def test_create_instances_unary_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2593,8 +2561,8 @@ def test_delete_per_instance_configs_unary_rest_flattened():
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_manager_delete_instance_config_req_resource=compute.RegionInstanceGroupManagerDeleteInstanceConfigReq(
- names=["names_value"]
+ region_instance_group_managers_create_instances_request_resource=compute.RegionInstanceGroupManagersCreateInstancesRequest(
+ instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")]
),
)
mock_args.update(sample_request)
@@ -2607,22 +2575,20 @@ def test_delete_per_instance_configs_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_per_instance_configs_unary(**mock_args)
+ client.create_instances_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/deletePerInstanceConfigs"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/createInstances"
% client.transport._host,
args[1],
)
-def test_delete_per_instance_configs_unary_rest_flattened_error(
- transport: str = "rest",
-):
+def test_create_instances_unary_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2631,18 +2597,18 @@ def test_delete_per_instance_configs_unary_rest_flattened_error(
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_per_instance_configs_unary(
- compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest(),
+ client.create_instances_unary(
+ compute.CreateInstancesRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_manager_delete_instance_config_req_resource=compute.RegionInstanceGroupManagerDeleteInstanceConfigReq(
- names=["names_value"]
+ region_instance_group_managers_create_instances_request_resource=compute.RegionInstanceGroupManagersCreateInstancesRequest(
+ instances=[compute.PerInstanceConfig(fingerprint="fingerprint_value")]
),
)
-def test_delete_per_instance_configs_unary_rest_error():
+def test_create_instances_unary_rest_error():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2651,11 +2617,11 @@ def test_delete_per_instance_configs_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRegionInstanceGroupManagerRequest,
+ compute.DeleteRegionInstanceGroupManagerRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2672,51 +2638,67 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManager(
- base_instance_name="base_instance_name_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
- instance_group="instance_group_value",
- instance_template="instance_template_value",
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- target_pools=["target_pools_value"],
- target_size=1185,
- zone="zone_value",
- )
-
- # Wrap the value into a proper Response obj
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupManager.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.InstanceGroupManager)
- assert response.base_instance_name == "base_instance_name_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
- assert response.instance_group == "instance_group_value"
- assert response.instance_template == "instance_template_value"
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.target_pools == ["target_pools_value"]
- assert response.target_size == 1185
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
assert response.zone == "zone_value"
-def test_get_rest_required_fields(
- request_type=compute.GetRegionInstanceGroupManagerRequest,
+def test_delete_rest_required_fields(
+ request_type=compute.DeleteRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -2735,7 +2717,7 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2746,7 +2728,9 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2764,7 +2748,7 @@ def test_get_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManager()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2775,32 +2759,32 @@ def test_get_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupManager.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"instanceGroupManager",
@@ -2812,7 +2796,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2825,9 +2809,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "post_get"
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "pre_get"
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2842,19 +2826,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.InstanceGroupManager.to_json(
- compute.InstanceGroupManager()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRegionInstanceGroupManagerRequest()
+ request = compute.DeleteRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.InstanceGroupManager
+ post.return_value = compute.Operation
- client.get(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -2866,8 +2848,9 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRegionInstanceGroupManagerRequest
+def test_delete_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DeleteRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2891,10 +2874,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete(request)
-def test_get_rest_flattened():
+def test_delete_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2903,7 +2886,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.InstanceGroupManager()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -2923,12 +2906,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.InstanceGroupManager.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -2941,7 +2924,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2950,15 +2933,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRegionInstanceGroupManagerRequest(),
+ client.delete(
+ compute.DeleteRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
)
-def test_get_rest_error():
+def test_delete_rest_error():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2967,82 +2950,21 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertRegionInstanceGroupManagerRequest,
+ compute.DeleteRegionInstanceGroupManagerRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_delete_unary_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["instance_group_manager_resource"] = {
- "auto_healing_policies": [
- {"health_check": "health_check_value", "initial_delay_sec": 1778}
- ],
- "base_instance_name": "base_instance_name_value",
- "creation_timestamp": "creation_timestamp_value",
- "current_actions": {
- "abandoning": 1041,
- "creating": 845,
- "creating_without_retries": 2589,
- "deleting": 844,
- "none": 432,
- "recreating": 1060,
- "refreshing": 1069,
- "restarting": 1091,
- "resuming": 874,
- "starting": 876,
- "stopping": 884,
- "suspending": 1088,
- "verifying": 979,
- },
- "description": "description_value",
- "distribution_policy": {
- "target_shape": "target_shape_value",
- "zones": [{"zone": "zone_value"}],
- },
- "fingerprint": "fingerprint_value",
- "id": 205,
- "instance_group": "instance_group_value",
- "instance_template": "instance_template_value",
- "kind": "kind_value",
- "name": "name_value",
- "named_ports": [{"name": "name_value", "port": 453}],
- "region": "region_value",
- "self_link": "self_link_value",
- "stateful_policy": {"preserved_state": {"disks": {}}},
- "status": {
- "autoscaler": "autoscaler_value",
- "is_stable": True,
- "stateful": {
- "has_stateful_config": True,
- "per_instance_configs": {"all_effective": True},
- },
- "version_target": {"is_reached": True},
- },
- "target_pools": ["target_pools_value_1", "target_pools_value_2"],
- "target_size": 1185,
- "update_policy": {
- "instance_redistribution_type": "instance_redistribution_type_value",
- "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
- "max_unavailable": {},
- "minimal_action": "minimal_action_value",
- "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
- "replacement_method": "replacement_method_value",
- "type_": "type__value",
- },
- "versions": [
- {
- "instance_template": "instance_template_value",
- "name": "name_value",
- "target_size": {},
- }
- ],
- "zone": "zone_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
}
request = request_type(request_init)
@@ -3080,40 +3002,19 @@ def test_insert_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertRegionInstanceGroupManagerRequest,
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
request_init = {}
+ request_init["instance_group_manager"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -3127,22 +3028,25 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -3166,10 +3070,9 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "delete",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -3178,24 +3081,24 @@ def test_insert_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
- "instanceGroupManagerResource",
+ "instanceGroupManager",
"project",
"region",
)
@@ -3204,7 +3107,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3217,9 +3120,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "post_insert"
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "pre_insert"
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3236,7 +3139,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.InsertRegionInstanceGroupManagerRequest()
+ request = compute.DeleteRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3244,7 +3147,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.insert_unary(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -3256,9 +3159,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
+def test_delete_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.InsertRegionInstanceGroupManagerRequest,
+ request_type=compute.DeleteRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3266,71 +3169,10 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["instance_group_manager_resource"] = {
- "auto_healing_policies": [
- {"health_check": "health_check_value", "initial_delay_sec": 1778}
- ],
- "base_instance_name": "base_instance_name_value",
- "creation_timestamp": "creation_timestamp_value",
- "current_actions": {
- "abandoning": 1041,
- "creating": 845,
- "creating_without_retries": 2589,
- "deleting": 844,
- "none": 432,
- "recreating": 1060,
- "refreshing": 1069,
- "restarting": 1091,
- "resuming": 874,
- "starting": 876,
- "stopping": 884,
- "suspending": 1088,
- "verifying": 979,
- },
- "description": "description_value",
- "distribution_policy": {
- "target_shape": "target_shape_value",
- "zones": [{"zone": "zone_value"}],
- },
- "fingerprint": "fingerprint_value",
- "id": 205,
- "instance_group": "instance_group_value",
- "instance_template": "instance_template_value",
- "kind": "kind_value",
- "name": "name_value",
- "named_ports": [{"name": "name_value", "port": 453}],
- "region": "region_value",
- "self_link": "self_link_value",
- "stateful_policy": {"preserved_state": {"disks": {}}},
- "status": {
- "autoscaler": "autoscaler_value",
- "is_stable": True,
- "stateful": {
- "has_stateful_config": True,
- "per_instance_configs": {"all_effective": True},
- },
- "version_target": {"is_reached": True},
- },
- "target_pools": ["target_pools_value_1", "target_pools_value_2"],
- "target_size": 1185,
- "update_policy": {
- "instance_redistribution_type": "instance_redistribution_type_value",
- "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
- "max_unavailable": {},
- "minimal_action": "minimal_action_value",
- "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
- "replacement_method": "replacement_method_value",
- "type_": "type__value",
- },
- "versions": [
- {
- "instance_template": "instance_template_value",
- "name": "name_value",
- "target_size": {},
- }
- ],
- "zone": "zone_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
}
request = request_type(request_init)
@@ -3343,10 +3185,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.delete_unary(request)
-def test_insert_unary_rest_flattened():
+def test_delete_unary_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3358,19 +3200,17 @@ def test_insert_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- instance_group_manager_resource=compute.InstanceGroupManager(
- auto_healing_policies=[
- compute.InstanceGroupManagerAutoHealingPolicy(
- health_check="health_check_value"
- )
- ]
- ),
+ instance_group_manager="instance_group_manager_value",
)
mock_args.update(sample_request)
@@ -3382,20 +3222,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3404,21 +3244,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertRegionInstanceGroupManagerRequest(),
+ client.delete_unary(
+ compute.DeleteRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
- instance_group_manager_resource=compute.InstanceGroupManager(
- auto_healing_policies=[
- compute.InstanceGroupManagerAutoHealingPolicy(
- health_check="health_check_value"
- )
- ]
- ),
+ instance_group_manager="instance_group_manager_value",
)
-def test_insert_unary_rest_error():
+def test_delete_unary_rest_error():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3427,52 +3261,97 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListRegionInstanceGroupManagersRequest,
+ compute.DeleteInstancesRegionInstanceGroupManagerRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_delete_instances_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["region_instance_group_managers_delete_instances_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"],
+ "skip_instances_on_validation_error": True,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RegionInstanceGroupManagerList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RegionInstanceGroupManagerList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.delete_instances(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(
- request_type=compute.ListRegionInstanceGroupManagersRequest,
+def test_delete_instances_rest_required_fields(
+ request_type=compute.DeleteInstancesRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
request_init = {}
+ request_init["instance_group_manager"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -3486,30 +3365,25 @@ def test_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).delete_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).delete_instances._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -3522,7 +3396,7 @@ def test_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.RegionInstanceGroupManagerList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3533,53 +3407,46 @@ def test_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RegionInstanceGroupManagerList.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.delete_instances(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_delete_instances_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.delete_instances._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
+ "instanceGroupManager",
"project",
"region",
+ "regionInstanceGroupManagersDeleteInstancesRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_delete_instances_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3592,9 +3459,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "post_list"
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_delete_instances"
) as post, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "pre_list"
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_delete_instances"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3609,19 +3476,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.RegionInstanceGroupManagerList.to_json(
- compute.RegionInstanceGroupManagerList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListRegionInstanceGroupManagersRequest()
+ request = compute.DeleteInstancesRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.RegionInstanceGroupManagerList
+ post.return_value = compute.Operation
- client.list(
+ client.delete_instances(
request,
metadata=[
("key", "val"),
@@ -3633,8 +3498,9 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListRegionInstanceGroupManagersRequest
+def test_delete_instances_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DeleteInstancesRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3642,7 +3508,15 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["region_instance_group_managers_delete_instances_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"],
+ "skip_instances_on_validation_error": True,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3654,10 +3528,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.delete_instances(request)
-def test_list_rest_flattened():
+def test_delete_instances_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3666,40 +3540,48 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RegionInstanceGroupManagerList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ region_instance_group_managers_delete_instances_request_resource=compute.RegionInstanceGroupManagersDeleteInstancesRequest(
+ instances=["instances_value"]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RegionInstanceGroupManagerList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.delete_instances(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/deleteInstances"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_delete_instances_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3708,87 +3590,34 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListRegionInstanceGroupManagersRequest(),
+ client.delete_instances(
+ compute.DeleteInstancesRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ region_instance_group_managers_delete_instances_request_resource=compute.RegionInstanceGroupManagersDeleteInstancesRequest(
+ instances=["instances_value"]
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_delete_instances_rest_error():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DeleteInstancesRegionInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_delete_instances_unary_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
- )
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.RegionInstanceGroupManagerList(
- items=[
- compute.InstanceGroupManager(),
- compute.InstanceGroupManager(),
- compute.InstanceGroupManager(),
- ],
- next_page_token="abc",
- ),
- compute.RegionInstanceGroupManagerList(
- items=[],
- next_page_token="def",
- ),
- compute.RegionInstanceGroupManagerList(
- items=[
- compute.InstanceGroupManager(),
- ],
- next_page_token="ghi",
- ),
- compute.RegionInstanceGroupManagerList(
- items=[
- compute.InstanceGroupManager(),
- compute.InstanceGroupManager(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(
- compute.RegionInstanceGroupManagerList.to_json(x) for x in response
- )
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.InstanceGroupManager) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
-
-@pytest.mark.parametrize(
- "request_type",
- [
- compute.ListErrorsRegionInstanceGroupManagersRequest,
- dict,
- ],
-)
-def test_list_errors_rest(request_type):
- client = RegionInstanceGroupManagersClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport="rest",
+ transport="rest",
)
# send a request that will satisfy transcoding
@@ -3797,32 +3626,54 @@ def test_list_errors_rest(request_type):
"region": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["region_instance_group_managers_delete_instances_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"],
+ "skip_instances_on_validation_error": True,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RegionInstanceGroupManagersListErrorsResponse(
- next_page_token="next_page_token_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.RegionInstanceGroupManagersListErrorsResponse.to_json(return_value)
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_errors(request)
+ response = client.delete_instances_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListErrorsPager)
- assert response.next_page_token == "next_page_token_value"
+ assert isinstance(response, compute.Operation)
-def test_list_errors_rest_required_fields(
- request_type=compute.ListErrorsRegionInstanceGroupManagersRequest,
+def test_delete_instances_unary_rest_required_fields(
+ request_type=compute.DeleteInstancesRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -3841,7 +3692,7 @@ def test_list_errors_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_errors._get_unset_required_fields(jsonified_request)
+ ).delete_instances._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3852,17 +3703,9 @@ def test_list_errors_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_errors._get_unset_required_fields(jsonified_request)
+ ).delete_instances._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -3880,7 +3723,7 @@ def test_list_errors_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.RegionInstanceGroupManagersListErrorsResponse()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3891,56 +3734,46 @@ def test_list_errors_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.RegionInstanceGroupManagersListErrorsResponse.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_errors(request)
+ response = client.delete_instances_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_errors_rest_unset_required_fields():
+def test_delete_instances_unary_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list_errors._get_unset_required_fields({})
+ unset_fields = transport.delete_instances._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
"instanceGroupManager",
"project",
"region",
+ "regionInstanceGroupManagersDeleteInstancesRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_errors_rest_interceptors(null_interceptor):
+def test_delete_instances_unary_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3953,9 +3786,9 @@ def test_list_errors_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "post_list_errors"
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_delete_instances"
) as post, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "pre_list_errors"
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_delete_instances"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3970,21 +3803,17 @@ def test_list_errors_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = (
- compute.RegionInstanceGroupManagersListErrorsResponse.to_json(
- compute.RegionInstanceGroupManagersListErrorsResponse()
- )
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListErrorsRegionInstanceGroupManagersRequest()
+ request = compute.DeleteInstancesRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.RegionInstanceGroupManagersListErrorsResponse
+ post.return_value = compute.Operation
- client.list_errors(
+ client.delete_instances_unary(
request,
metadata=[
("key", "val"),
@@ -3996,9 +3825,9 @@ def test_list_errors_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_errors_rest_bad_request(
+def test_delete_instances_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.ListErrorsRegionInstanceGroupManagersRequest,
+ request_type=compute.DeleteInstancesRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4011,6 +3840,10 @@ def test_list_errors_rest_bad_request(
"region": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["region_instance_group_managers_delete_instances_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"],
+ "skip_instances_on_validation_error": True,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -4022,10 +3855,10 @@ def test_list_errors_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list_errors(request)
+ client.delete_instances_unary(request)
-def test_list_errors_rest_flattened():
+def test_delete_instances_unary_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4034,7 +3867,7 @@ def test_list_errors_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RegionInstanceGroupManagersListErrorsResponse()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -4048,33 +3881,34 @@ def test_list_errors_rest_flattened():
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
+ region_instance_group_managers_delete_instances_request_resource=compute.RegionInstanceGroupManagersDeleteInstancesRequest(
+ instances=["instances_value"]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.RegionInstanceGroupManagersListErrorsResponse.to_json(return_value)
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list_errors(**mock_args)
+ client.delete_instances_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/listErrors"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/deleteInstances"
% client.transport._host,
args[1],
)
-def test_list_errors_rest_flattened_error(transport: str = "rest"):
+def test_delete_instances_unary_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4083,129 +3917,111 @@ def test_list_errors_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list_errors(
- compute.ListErrorsRegionInstanceGroupManagersRequest(),
+ client.delete_instances_unary(
+ compute.DeleteInstancesRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
+ region_instance_group_managers_delete_instances_request_resource=compute.RegionInstanceGroupManagersDeleteInstancesRequest(
+ instances=["instances_value"]
+ ),
)
-def test_list_errors_rest_pager(transport: str = "rest"):
+def test_delete_instances_unary_rest_error():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_delete_per_instance_configs_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ transport="rest",
)
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.RegionInstanceGroupManagersListErrorsResponse(
- items=[
- compute.InstanceManagedByIgmError(),
- compute.InstanceManagedByIgmError(),
- compute.InstanceManagedByIgmError(),
- ],
- next_page_token="abc",
- ),
- compute.RegionInstanceGroupManagersListErrorsResponse(
- items=[],
- next_page_token="def",
- ),
- compute.RegionInstanceGroupManagersListErrorsResponse(
- items=[
- compute.InstanceManagedByIgmError(),
- ],
- next_page_token="ghi",
- ),
- compute.RegionInstanceGroupManagersListErrorsResponse(
- items=[
- compute.InstanceManagedByIgmError(),
- compute.InstanceManagedByIgmError(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(
- compute.RegionInstanceGroupManagersListErrorsResponse.to_json(x)
- for x in response
- )
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {
- "project": "sample1",
- "region": "sample2",
- "instance_group_manager": "sample3",
- }
-
- pager = client.list_errors(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.InstanceManagedByIgmError) for i in results)
-
- pages = list(client.list_errors(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
-
-@pytest.mark.parametrize(
- "request_type",
- [
- compute.ListManagedInstancesRegionInstanceGroupManagersRequest,
- dict,
- ],
-)
-def test_list_managed_instances_rest(request_type):
- client = RegionInstanceGroupManagersClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport="rest",
- )
-
- # send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "region": "sample2",
- "instance_group_manager": "sample3",
- }
- request = request_type(request_init)
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init[
+ "region_instance_group_manager_delete_instance_config_req_resource"
+ ] = {"names": ["names_value_1", "names_value_2"]}
+ request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RegionInstanceGroupManagersListInstancesResponse(
- next_page_token="next_page_token_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.RegionInstanceGroupManagersListInstancesResponse.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_managed_instances(request)
+ response = client.delete_per_instance_configs(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListManagedInstancesPager)
- assert response.next_page_token == "next_page_token_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_managed_instances_rest_required_fields(
- request_type=compute.ListManagedInstancesRegionInstanceGroupManagersRequest,
+def test_delete_per_instance_configs_rest_required_fields(
+ request_type=compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -4224,7 +4040,7 @@ def test_list_managed_instances_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_managed_instances._get_unset_required_fields(jsonified_request)
+ ).delete_per_instance_configs._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4235,17 +4051,7 @@ def test_list_managed_instances_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_managed_instances._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ ).delete_per_instance_configs._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -4263,7 +4069,7 @@ def test_list_managed_instances_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.RegionInstanceGroupManagersListInstancesResponse()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -4277,53 +4083,43 @@ def test_list_managed_instances_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.RegionInstanceGroupManagersListInstancesResponse.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_managed_instances(request)
+ response = client.delete_per_instance_configs(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_managed_instances_rest_unset_required_fields():
+def test_delete_per_instance_configs_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list_managed_instances._get_unset_required_fields({})
+ unset_fields = transport.delete_per_instance_configs._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(())
& set(
(
"instanceGroupManager",
"project",
"region",
+ "regionInstanceGroupManagerDeleteInstanceConfigReqResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_managed_instances_rest_interceptors(null_interceptor):
+def test_delete_per_instance_configs_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -4337,10 +4133,10 @@ def test_list_managed_instances_rest_interceptors(null_interceptor):
path_template, "transcode"
) as transcode, mock.patch.object(
transports.RegionInstanceGroupManagersRestInterceptor,
- "post_list_managed_instances",
+ "post_delete_per_instance_configs",
) as post, mock.patch.object(
transports.RegionInstanceGroupManagersRestInterceptor,
- "pre_list_managed_instances",
+ "pre_delete_per_instance_configs",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4355,21 +4151,17 @@ def test_list_managed_instances_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = (
- compute.RegionInstanceGroupManagersListInstancesResponse.to_json(
- compute.RegionInstanceGroupManagersListInstancesResponse()
- )
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListManagedInstancesRegionInstanceGroupManagersRequest()
+ request = compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.RegionInstanceGroupManagersListInstancesResponse
+ post.return_value = compute.Operation
- client.list_managed_instances(
+ client.delete_per_instance_configs(
request,
metadata=[
("key", "val"),
@@ -4381,9 +4173,9 @@ def test_list_managed_instances_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_managed_instances_rest_bad_request(
+def test_delete_per_instance_configs_rest_bad_request(
transport: str = "rest",
- request_type=compute.ListManagedInstancesRegionInstanceGroupManagersRequest,
+ request_type=compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4396,6 +4188,9 @@ def test_list_managed_instances_rest_bad_request(
"region": "sample2",
"instance_group_manager": "sample3",
}
+ request_init[
+ "region_instance_group_manager_delete_instance_config_req_resource"
+ ] = {"names": ["names_value_1", "names_value_2"]}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -4407,10 +4202,10 @@ def test_list_managed_instances_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list_managed_instances(request)
+ client.delete_per_instance_configs(request)
-def test_list_managed_instances_rest_flattened():
+def test_delete_per_instance_configs_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4419,7 +4214,7 @@ def test_list_managed_instances_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RegionInstanceGroupManagersListInstancesResponse()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -4433,35 +4228,34 @@ def test_list_managed_instances_rest_flattened():
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
+ region_instance_group_manager_delete_instance_config_req_resource=compute.RegionInstanceGroupManagerDeleteInstanceConfigReq(
+ names=["names_value"]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.RegionInstanceGroupManagersListInstancesResponse.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list_managed_instances(**mock_args)
+ client.delete_per_instance_configs(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/listManagedInstances"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/deletePerInstanceConfigs"
% client.transport._host,
args[1],
)
-def test_list_managed_instances_rest_flattened_error(transport: str = "rest"):
+def test_delete_per_instance_configs_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4470,94 +4264,35 @@ def test_list_managed_instances_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list_managed_instances(
- compute.ListManagedInstancesRegionInstanceGroupManagersRequest(),
+ client.delete_per_instance_configs(
+ compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
+ region_instance_group_manager_delete_instance_config_req_resource=compute.RegionInstanceGroupManagerDeleteInstanceConfigReq(
+ names=["names_value"]
+ ),
)
-def test_list_managed_instances_rest_pager(transport: str = "rest"):
+def test_delete_per_instance_configs_rest_error():
client = RegionInstanceGroupManagersClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.RegionInstanceGroupManagersListInstancesResponse(
- managed_instances=[
- compute.ManagedInstance(),
- compute.ManagedInstance(),
- compute.ManagedInstance(),
- ],
- next_page_token="abc",
- ),
- compute.RegionInstanceGroupManagersListInstancesResponse(
- managed_instances=[],
- next_page_token="def",
- ),
- compute.RegionInstanceGroupManagersListInstancesResponse(
- managed_instances=[
- compute.ManagedInstance(),
- ],
- next_page_token="ghi",
- ),
- compute.RegionInstanceGroupManagersListInstancesResponse(
- managed_instances=[
- compute.ManagedInstance(),
- compute.ManagedInstance(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
- # Wrap the values into proper Response objs
- response = tuple(
- compute.RegionInstanceGroupManagersListInstancesResponse.to_json(x)
- for x in response
- )
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {
- "project": "sample1",
- "region": "sample2",
- "instance_group_manager": "sample3",
- }
-
- pager = client.list_managed_instances(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.ManagedInstance) for i in results)
-
- pages = list(client.list_managed_instances(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
-
-@pytest.mark.parametrize(
- "request_type",
- [
- compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest,
- dict,
- ],
-)
-def test_list_per_instance_configs_rest(request_type):
- client = RegionInstanceGroupManagersClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport="rest",
- )
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_delete_per_instance_configs_unary_rest(request_type):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
# send a request that will satisfy transcoding
request_init = {
@@ -4565,34 +4300,53 @@ def test_list_per_instance_configs_rest(request_type):
"region": "sample2",
"instance_group_manager": "sample3",
}
+ request_init[
+ "region_instance_group_manager_delete_instance_config_req_resource"
+ ] = {"names": ["names_value_1", "names_value_2"]}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RegionInstanceGroupManagersListInstanceConfigsResp(
- next_page_token="next_page_token_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.RegionInstanceGroupManagersListInstanceConfigsResp.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_per_instance_configs(request)
+ response = client.delete_per_instance_configs_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPerInstanceConfigsPager)
- assert response.next_page_token == "next_page_token_value"
+ assert isinstance(response, compute.Operation)
-def test_list_per_instance_configs_rest_required_fields(
- request_type=compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest,
+def test_delete_per_instance_configs_unary_rest_required_fields(
+ request_type=compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -4611,7 +4365,7 @@ def test_list_per_instance_configs_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_per_instance_configs._get_unset_required_fields(jsonified_request)
+ ).delete_per_instance_configs._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4622,17 +4376,7 @@ def test_list_per_instance_configs_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_per_instance_configs._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ ).delete_per_instance_configs._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -4650,7 +4394,7 @@ def test_list_per_instance_configs_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.RegionInstanceGroupManagersListInstanceConfigsResp()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -4664,53 +4408,43 @@ def test_list_per_instance_configs_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.RegionInstanceGroupManagersListInstanceConfigsResp.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_per_instance_configs(request)
+ response = client.delete_per_instance_configs_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_per_instance_configs_rest_unset_required_fields():
+def test_delete_per_instance_configs_unary_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list_per_instance_configs._get_unset_required_fields({})
+ unset_fields = transport.delete_per_instance_configs._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(())
& set(
(
"instanceGroupManager",
"project",
"region",
+ "regionInstanceGroupManagerDeleteInstanceConfigReqResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_per_instance_configs_rest_interceptors(null_interceptor):
+def test_delete_per_instance_configs_unary_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -4724,10 +4458,10 @@ def test_list_per_instance_configs_rest_interceptors(null_interceptor):
path_template, "transcode"
) as transcode, mock.patch.object(
transports.RegionInstanceGroupManagersRestInterceptor,
- "post_list_per_instance_configs",
+ "post_delete_per_instance_configs",
) as post, mock.patch.object(
transports.RegionInstanceGroupManagersRestInterceptor,
- "pre_list_per_instance_configs",
+ "pre_delete_per_instance_configs",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4742,21 +4476,17 @@ def test_list_per_instance_configs_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = (
- compute.RegionInstanceGroupManagersListInstanceConfigsResp.to_json(
- compute.RegionInstanceGroupManagersListInstanceConfigsResp()
- )
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest()
+ request = compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.RegionInstanceGroupManagersListInstanceConfigsResp
+ post.return_value = compute.Operation
- client.list_per_instance_configs(
+ client.delete_per_instance_configs_unary(
request,
metadata=[
("key", "val"),
@@ -4768,9 +4498,9 @@ def test_list_per_instance_configs_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_per_instance_configs_rest_bad_request(
+def test_delete_per_instance_configs_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest,
+ request_type=compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4783,6 +4513,9 @@ def test_list_per_instance_configs_rest_bad_request(
"region": "sample2",
"instance_group_manager": "sample3",
}
+ request_init[
+ "region_instance_group_manager_delete_instance_config_req_resource"
+ ] = {"names": ["names_value_1", "names_value_2"]}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -4794,10 +4527,10 @@ def test_list_per_instance_configs_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list_per_instance_configs(request)
+ client.delete_per_instance_configs_unary(request)
-def test_list_per_instance_configs_rest_flattened():
+def test_delete_per_instance_configs_unary_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4806,7 +4539,7 @@ def test_list_per_instance_configs_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RegionInstanceGroupManagersListInstanceConfigsResp()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -4820,35 +4553,36 @@ def test_list_per_instance_configs_rest_flattened():
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
+ region_instance_group_manager_delete_instance_config_req_resource=compute.RegionInstanceGroupManagerDeleteInstanceConfigReq(
+ names=["names_value"]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.RegionInstanceGroupManagersListInstanceConfigsResp.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list_per_instance_configs(**mock_args)
+ client.delete_per_instance_configs_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/listPerInstanceConfigs"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/deletePerInstanceConfigs"
% client.transport._host,
args[1],
)
-def test_list_per_instance_configs_rest_flattened_error(transport: str = "rest"):
+def test_delete_per_instance_configs_unary_rest_flattened_error(
+ transport: str = "rest",
+):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4857,90 +4591,31 @@ def test_list_per_instance_configs_rest_flattened_error(transport: str = "rest")
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list_per_instance_configs(
- compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest(),
+ client.delete_per_instance_configs_unary(
+ compute.DeletePerInstanceConfigsRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
+ region_instance_group_manager_delete_instance_config_req_resource=compute.RegionInstanceGroupManagerDeleteInstanceConfigReq(
+ names=["names_value"]
+ ),
)
-def test_list_per_instance_configs_rest_pager(transport: str = "rest"):
+def test_delete_per_instance_configs_unary_rest_error():
client = RegionInstanceGroupManagersClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.RegionInstanceGroupManagersListInstanceConfigsResp(
- items=[
- compute.PerInstanceConfig(),
- compute.PerInstanceConfig(),
- compute.PerInstanceConfig(),
- ],
- next_page_token="abc",
- ),
- compute.RegionInstanceGroupManagersListInstanceConfigsResp(
- items=[],
- next_page_token="def",
- ),
- compute.RegionInstanceGroupManagersListInstanceConfigsResp(
- items=[
- compute.PerInstanceConfig(),
- ],
- next_page_token="ghi",
- ),
- compute.RegionInstanceGroupManagersListInstanceConfigsResp(
- items=[
- compute.PerInstanceConfig(),
- compute.PerInstanceConfig(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(
- compute.RegionInstanceGroupManagersListInstanceConfigsResp.to_json(x)
- for x in response
- )
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {
- "project": "sample1",
- "region": "sample2",
- "instance_group_manager": "sample3",
- }
-
- pager = client.list_per_instance_configs(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.PerInstanceConfig) for i in results)
-
- pages = list(client.list_per_instance_configs(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchRegionInstanceGroupManagerRequest,
+ compute.GetRegionInstanceGroupManagerRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_get_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4952,137 +4627,56 @@ def test_patch_unary_rest(request_type):
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init["instance_group_manager_resource"] = {
- "auto_healing_policies": [
- {"health_check": "health_check_value", "initial_delay_sec": 1778}
- ],
- "base_instance_name": "base_instance_name_value",
- "creation_timestamp": "creation_timestamp_value",
- "current_actions": {
- "abandoning": 1041,
- "creating": 845,
- "creating_without_retries": 2589,
- "deleting": 844,
- "none": 432,
- "recreating": 1060,
- "refreshing": 1069,
- "restarting": 1091,
- "resuming": 874,
- "starting": 876,
- "stopping": 884,
- "suspending": 1088,
- "verifying": 979,
- },
- "description": "description_value",
- "distribution_policy": {
- "target_shape": "target_shape_value",
- "zones": [{"zone": "zone_value"}],
- },
- "fingerprint": "fingerprint_value",
- "id": 205,
- "instance_group": "instance_group_value",
- "instance_template": "instance_template_value",
- "kind": "kind_value",
- "name": "name_value",
- "named_ports": [{"name": "name_value", "port": 453}],
- "region": "region_value",
- "self_link": "self_link_value",
- "stateful_policy": {"preserved_state": {"disks": {}}},
- "status": {
- "autoscaler": "autoscaler_value",
- "is_stable": True,
- "stateful": {
- "has_stateful_config": True,
- "per_instance_configs": {"all_effective": True},
- },
- "version_target": {"is_reached": True},
- },
- "target_pools": ["target_pools_value_1", "target_pools_value_2"],
- "target_size": 1185,
- "update_policy": {
- "instance_redistribution_type": "instance_redistribution_type_value",
- "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
- "max_unavailable": {},
- "minimal_action": "minimal_action_value",
- "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
- "replacement_method": "replacement_method_value",
- "type_": "type__value",
- },
- "versions": [
- {
- "instance_template": "instance_template_value",
- "name": "name_value",
- "target_size": {},
- }
- ],
- "zone": "zone_value",
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.InstanceGroupManager(
+ base_instance_name="base_instance_name_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
+ instance_group="instance_group_value",
+ instance_template="instance_template_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
+ target_pools=["target_pools_value"],
+ target_size=1185,
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InstanceGroupManager.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.InstanceGroupManager)
+ assert response.base_instance_name == "base_instance_name_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert response.instance_group == "instance_group_value"
+ assert response.instance_template == "instance_template_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
+ assert response.target_pools == ["target_pools_value"]
+ assert response.target_size == 1185
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchRegionInstanceGroupManagerRequest,
+def test_get_rest_required_fields(
+ request_type=compute.GetRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -5101,7 +4695,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -5112,9 +4706,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -5132,7 +4724,7 @@ def test_patch_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.InstanceGroupManager()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -5143,37 +4735,35 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.InstanceGroupManager.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"instanceGroupManager",
- "instanceGroupManagerResource",
"project",
"region",
)
@@ -5182,7 +4772,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -5195,9 +4785,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "post_patch"
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "pre_patch"
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -5212,17 +4802,19 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.InstanceGroupManager.to_json(
+ compute.InstanceGroupManager()
+ )
- request = compute.PatchRegionInstanceGroupManagerRequest()
+ request = compute.GetRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.InstanceGroupManager
- client.patch_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -5234,8 +4826,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchRegionInstanceGroupManagerRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRegionInstanceGroupManagerRequest
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -5248,6 +4840,105 @@ def test_patch_unary_rest_bad_request(
"region": "sample2",
"instance_group_manager": "sample3",
}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.InstanceGroupManager()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.InstanceGroupManager.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetRegionInstanceGroupManagerRequest(),
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+
+
+def test_get_rest_error():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
request_init["instance_group_manager_resource"] = {
"auto_healing_policies": [
{"health_check": "health_check_value", "initial_delay_sec": 1778}
@@ -5315,6 +5006,5259 @@ def test_patch_unary_rest_bad_request(
}
request = request_type(request_init)
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertRegionInstanceGroupManagerRequest,
+):
+ transport_class = transports.RegionInstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManagerResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstanceGroupManagersRestInterceptor(),
+ )
+ client = RegionInstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.InsertRegionInstanceGroupManagerRequest,
+):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["instance_group_manager_resource"] = {
+ "auto_healing_policies": [
+ {"health_check": "health_check_value", "initial_delay_sec": 1778}
+ ],
+ "base_instance_name": "base_instance_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "current_actions": {
+ "abandoning": 1041,
+ "creating": 845,
+ "creating_without_retries": 2589,
+ "deleting": 844,
+ "none": 432,
+ "recreating": 1060,
+ "refreshing": 1069,
+ "restarting": 1091,
+ "resuming": 874,
+ "starting": 876,
+ "stopping": 884,
+ "suspending": 1088,
+ "verifying": 979,
+ },
+ "description": "description_value",
+ "distribution_policy": {
+ "target_shape": "target_shape_value",
+ "zones": [{"zone": "zone_value"}],
+ },
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "instance_group": "instance_group_value",
+ "instance_template": "instance_template_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "stateful_policy": {"preserved_state": {"disks": {}}},
+ "status": {
+ "autoscaler": "autoscaler_value",
+ "is_stable": True,
+ "stateful": {
+ "has_stateful_config": True,
+ "per_instance_configs": {"all_effective": True},
+ },
+ "version_target": {"is_reached": True},
+ },
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ "target_size": 1185,
+ "update_policy": {
+ "instance_redistribution_type": "instance_redistribution_type_value",
+ "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
+ "max_unavailable": {},
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ "replacement_method": "replacement_method_value",
+ "type_": "type__value",
+ },
+ "versions": [
+ {
+ "instance_template": "instance_template_value",
+ "name": "name_value",
+ "target_size": {},
+ }
+ ],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertRegionInstanceGroupManagerRequest(),
+ project="project_value",
+ region="region_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["instance_group_manager_resource"] = {
+ "auto_healing_policies": [
+ {"health_check": "health_check_value", "initial_delay_sec": 1778}
+ ],
+ "base_instance_name": "base_instance_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "current_actions": {
+ "abandoning": 1041,
+ "creating": 845,
+ "creating_without_retries": 2589,
+ "deleting": 844,
+ "none": 432,
+ "recreating": 1060,
+ "refreshing": 1069,
+ "restarting": 1091,
+ "resuming": 874,
+ "starting": 876,
+ "stopping": 884,
+ "suspending": 1088,
+ "verifying": 979,
+ },
+ "description": "description_value",
+ "distribution_policy": {
+ "target_shape": "target_shape_value",
+ "zones": [{"zone": "zone_value"}],
+ },
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "instance_group": "instance_group_value",
+ "instance_template": "instance_template_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "stateful_policy": {"preserved_state": {"disks": {}}},
+ "status": {
+ "autoscaler": "autoscaler_value",
+ "is_stable": True,
+ "stateful": {
+ "has_stateful_config": True,
+ "per_instance_configs": {"all_effective": True},
+ },
+ "version_target": {"is_reached": True},
+ },
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ "target_size": 1185,
+ "update_policy": {
+ "instance_redistribution_type": "instance_redistribution_type_value",
+ "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
+ "max_unavailable": {},
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ "replacement_method": "replacement_method_value",
+ "type_": "type__value",
+ },
+ "versions": [
+ {
+ "instance_template": "instance_template_value",
+ "name": "name_value",
+ "target_size": {},
+ }
+ ],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertRegionInstanceGroupManagerRequest,
+):
+ transport_class = transports.RegionInstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManagerResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstanceGroupManagersRestInterceptor(),
+ )
+ client = RegionInstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.InsertRegionInstanceGroupManagerRequest,
+):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["instance_group_manager_resource"] = {
+ "auto_healing_policies": [
+ {"health_check": "health_check_value", "initial_delay_sec": 1778}
+ ],
+ "base_instance_name": "base_instance_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "current_actions": {
+ "abandoning": 1041,
+ "creating": 845,
+ "creating_without_retries": 2589,
+ "deleting": 844,
+ "none": 432,
+ "recreating": 1060,
+ "refreshing": 1069,
+ "restarting": 1091,
+ "resuming": 874,
+ "starting": 876,
+ "stopping": 884,
+ "suspending": 1088,
+ "verifying": 979,
+ },
+ "description": "description_value",
+ "distribution_policy": {
+ "target_shape": "target_shape_value",
+ "zones": [{"zone": "zone_value"}],
+ },
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "instance_group": "instance_group_value",
+ "instance_template": "instance_template_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "stateful_policy": {"preserved_state": {"disks": {}}},
+ "status": {
+ "autoscaler": "autoscaler_value",
+ "is_stable": True,
+ "stateful": {
+ "has_stateful_config": True,
+ "per_instance_configs": {"all_effective": True},
+ },
+ "version_target": {"is_reached": True},
+ },
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ "target_size": 1185,
+ "update_policy": {
+ "instance_redistribution_type": "instance_redistribution_type_value",
+ "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
+ "max_unavailable": {},
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ "replacement_method": "replacement_method_value",
+ "type_": "type__value",
+ },
+ "versions": [
+ {
+ "instance_template": "instance_template_value",
+ "name": "name_value",
+ "target_size": {},
+ }
+ ],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertRegionInstanceGroupManagerRequest(),
+ project="project_value",
+ region="region_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListRegionInstanceGroupManagersRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RegionInstanceGroupManagerList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.RegionInstanceGroupManagerList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(
+ request_type=compute.ListRegionInstanceGroupManagersRequest,
+):
+ transport_class = transports.RegionInstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RegionInstanceGroupManagerList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.RegionInstanceGroupManagerList.to_json(
+ return_value
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstanceGroupManagersRestInterceptor(),
+ )
+ client = RegionInstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.RegionInstanceGroupManagerList.to_json(
+ compute.RegionInstanceGroupManagerList()
+ )
+
+ request = compute.ListRegionInstanceGroupManagersRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.RegionInstanceGroupManagerList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListRegionInstanceGroupManagersRequest
+):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RegionInstanceGroupManagerList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.RegionInstanceGroupManagerList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListRegionInstanceGroupManagersRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.RegionInstanceGroupManagerList(
+ items=[
+ compute.InstanceGroupManager(),
+ compute.InstanceGroupManager(),
+ compute.InstanceGroupManager(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.RegionInstanceGroupManagerList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.RegionInstanceGroupManagerList(
+ items=[
+ compute.InstanceGroupManager(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.RegionInstanceGroupManagerList(
+ items=[
+ compute.InstanceGroupManager(),
+ compute.InstanceGroupManager(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.RegionInstanceGroupManagerList.to_json(x) for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.InstanceGroupManager) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListErrorsRegionInstanceGroupManagersRequest,
+ dict,
+ ],
+)
+def test_list_errors_rest(request_type):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RegionInstanceGroupManagersListErrorsResponse(
+ next_page_token="next_page_token_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.RegionInstanceGroupManagersListErrorsResponse.to_json(return_value)
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list_errors(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListErrorsPager)
+ assert response.next_page_token == "next_page_token_value"
+
+
+def test_list_errors_rest_required_fields(
+ request_type=compute.ListErrorsRegionInstanceGroupManagersRequest,
+):
+ transport_class = transports.RegionInstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_errors._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_errors._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RegionInstanceGroupManagersListErrorsResponse()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.RegionInstanceGroupManagersListErrorsResponse.to_json(
+ return_value
+ )
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list_errors(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_errors_rest_unset_required_fields():
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list_errors._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "instanceGroupManager",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_errors_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstanceGroupManagersRestInterceptor(),
+ )
+ client = RegionInstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_list_errors"
+ ) as post, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_list_errors"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = (
+ compute.RegionInstanceGroupManagersListErrorsResponse.to_json(
+ compute.RegionInstanceGroupManagersListErrorsResponse()
+ )
+ )
+
+ request = compute.ListErrorsRegionInstanceGroupManagersRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.RegionInstanceGroupManagersListErrorsResponse
+
+ client.list_errors(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_errors_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.ListErrorsRegionInstanceGroupManagersRequest,
+):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list_errors(request)
+
+
+def test_list_errors_rest_flattened():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RegionInstanceGroupManagersListErrorsResponse()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.RegionInstanceGroupManagersListErrorsResponse.to_json(return_value)
+ )
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list_errors(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/listErrors"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_errors_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list_errors(
+ compute.ListErrorsRegionInstanceGroupManagersRequest(),
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+
+
+def test_list_errors_rest_pager(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.RegionInstanceGroupManagersListErrorsResponse(
+ items=[
+ compute.InstanceManagedByIgmError(),
+ compute.InstanceManagedByIgmError(),
+ compute.InstanceManagedByIgmError(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.RegionInstanceGroupManagersListErrorsResponse(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.RegionInstanceGroupManagersListErrorsResponse(
+ items=[
+ compute.InstanceManagedByIgmError(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.RegionInstanceGroupManagersListErrorsResponse(
+ items=[
+ compute.InstanceManagedByIgmError(),
+ compute.InstanceManagedByIgmError(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.RegionInstanceGroupManagersListErrorsResponse.to_json(x)
+ for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ pager = client.list_errors(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.InstanceManagedByIgmError) for i in results)
+
+ pages = list(client.list_errors(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListManagedInstancesRegionInstanceGroupManagersRequest,
+ dict,
+ ],
+)
+def test_list_managed_instances_rest(request_type):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RegionInstanceGroupManagersListInstancesResponse(
+ next_page_token="next_page_token_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.RegionInstanceGroupManagersListInstancesResponse.to_json(
+ return_value
+ )
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list_managed_instances(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListManagedInstancesPager)
+ assert response.next_page_token == "next_page_token_value"
+
+
+def test_list_managed_instances_rest_required_fields(
+ request_type=compute.ListManagedInstancesRegionInstanceGroupManagersRequest,
+):
+ transport_class = transports.RegionInstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_managed_instances._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_managed_instances._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RegionInstanceGroupManagersListInstancesResponse()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.RegionInstanceGroupManagersListInstancesResponse.to_json(
+ return_value
+ )
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list_managed_instances(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_managed_instances_rest_unset_required_fields():
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list_managed_instances._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "instanceGroupManager",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_managed_instances_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstanceGroupManagersRestInterceptor(),
+ )
+ client = RegionInstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "post_list_managed_instances",
+ ) as post, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "pre_list_managed_instances",
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = (
+ compute.RegionInstanceGroupManagersListInstancesResponse.to_json(
+ compute.RegionInstanceGroupManagersListInstancesResponse()
+ )
+ )
+
+ request = compute.ListManagedInstancesRegionInstanceGroupManagersRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.RegionInstanceGroupManagersListInstancesResponse
+
+ client.list_managed_instances(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_managed_instances_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.ListManagedInstancesRegionInstanceGroupManagersRequest,
+):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list_managed_instances(request)
+
+
+def test_list_managed_instances_rest_flattened():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RegionInstanceGroupManagersListInstancesResponse()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.RegionInstanceGroupManagersListInstancesResponse.to_json(
+ return_value
+ )
+ )
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list_managed_instances(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/listManagedInstances"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_managed_instances_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list_managed_instances(
+ compute.ListManagedInstancesRegionInstanceGroupManagersRequest(),
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+
+
+def test_list_managed_instances_rest_pager(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.RegionInstanceGroupManagersListInstancesResponse(
+ managed_instances=[
+ compute.ManagedInstance(),
+ compute.ManagedInstance(),
+ compute.ManagedInstance(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.RegionInstanceGroupManagersListInstancesResponse(
+ managed_instances=[],
+ next_page_token="def",
+ ),
+ compute.RegionInstanceGroupManagersListInstancesResponse(
+ managed_instances=[
+ compute.ManagedInstance(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.RegionInstanceGroupManagersListInstancesResponse(
+ managed_instances=[
+ compute.ManagedInstance(),
+ compute.ManagedInstance(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.RegionInstanceGroupManagersListInstancesResponse.to_json(x)
+ for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ pager = client.list_managed_instances(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.ManagedInstance) for i in results)
+
+ pages = list(client.list_managed_instances(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest,
+ dict,
+ ],
+)
+def test_list_per_instance_configs_rest(request_type):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RegionInstanceGroupManagersListInstanceConfigsResp(
+ next_page_token="next_page_token_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.RegionInstanceGroupManagersListInstanceConfigsResp.to_json(
+ return_value
+ )
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list_per_instance_configs(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPerInstanceConfigsPager)
+ assert response.next_page_token == "next_page_token_value"
+
+
+def test_list_per_instance_configs_rest_required_fields(
+ request_type=compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest,
+):
+ transport_class = transports.RegionInstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_per_instance_configs._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_per_instance_configs._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RegionInstanceGroupManagersListInstanceConfigsResp()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.RegionInstanceGroupManagersListInstanceConfigsResp.to_json(
+ return_value
+ )
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list_per_instance_configs(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_per_instance_configs_rest_unset_required_fields():
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list_per_instance_configs._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "instanceGroupManager",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_per_instance_configs_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstanceGroupManagersRestInterceptor(),
+ )
+ client = RegionInstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "post_list_per_instance_configs",
+ ) as post, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "pre_list_per_instance_configs",
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = (
+ compute.RegionInstanceGroupManagersListInstanceConfigsResp.to_json(
+ compute.RegionInstanceGroupManagersListInstanceConfigsResp()
+ )
+ )
+
+ request = compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.RegionInstanceGroupManagersListInstanceConfigsResp
+
+ client.list_per_instance_configs(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_per_instance_configs_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest,
+):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list_per_instance_configs(request)
+
+
+def test_list_per_instance_configs_rest_flattened():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RegionInstanceGroupManagersListInstanceConfigsResp()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.RegionInstanceGroupManagersListInstanceConfigsResp.to_json(
+ return_value
+ )
+ )
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list_per_instance_configs(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/listPerInstanceConfigs"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_per_instance_configs_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list_per_instance_configs(
+ compute.ListPerInstanceConfigsRegionInstanceGroupManagersRequest(),
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ )
+
+
+def test_list_per_instance_configs_rest_pager(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.RegionInstanceGroupManagersListInstanceConfigsResp(
+ items=[
+ compute.PerInstanceConfig(),
+ compute.PerInstanceConfig(),
+ compute.PerInstanceConfig(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.RegionInstanceGroupManagersListInstanceConfigsResp(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.RegionInstanceGroupManagersListInstanceConfigsResp(
+ items=[
+ compute.PerInstanceConfig(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.RegionInstanceGroupManagersListInstanceConfigsResp(
+ items=[
+ compute.PerInstanceConfig(),
+ compute.PerInstanceConfig(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.RegionInstanceGroupManagersListInstanceConfigsResp.to_json(x)
+ for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ pager = client.list_per_instance_configs(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.PerInstanceConfig) for i in results)
+
+ pages = list(client.list_per_instance_configs(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRegionInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_manager_resource"] = {
+ "auto_healing_policies": [
+ {"health_check": "health_check_value", "initial_delay_sec": 1778}
+ ],
+ "base_instance_name": "base_instance_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "current_actions": {
+ "abandoning": 1041,
+ "creating": 845,
+ "creating_without_retries": 2589,
+ "deleting": 844,
+ "none": 432,
+ "recreating": 1060,
+ "refreshing": 1069,
+ "restarting": 1091,
+ "resuming": 874,
+ "starting": 876,
+ "stopping": 884,
+ "suspending": 1088,
+ "verifying": 979,
+ },
+ "description": "description_value",
+ "distribution_policy": {
+ "target_shape": "target_shape_value",
+ "zones": [{"zone": "zone_value"}],
+ },
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "instance_group": "instance_group_value",
+ "instance_template": "instance_template_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "stateful_policy": {"preserved_state": {"disks": {}}},
+ "status": {
+ "autoscaler": "autoscaler_value",
+ "is_stable": True,
+ "stateful": {
+ "has_stateful_config": True,
+ "per_instance_configs": {"all_effective": True},
+ },
+ "version_target": {"is_reached": True},
+ },
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ "target_size": 1185,
+ "update_policy": {
+ "instance_redistribution_type": "instance_redistribution_type_value",
+ "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
+ "max_unavailable": {},
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ "replacement_method": "replacement_method_value",
+ "type_": "type__value",
+ },
+ "versions": [
+ {
+ "instance_template": "instance_template_value",
+ "name": "name_value",
+ "target_size": {},
+ }
+ ],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(
+ request_type=compute.PatchRegionInstanceGroupManagerRequest,
+):
+ transport_class = transports.RegionInstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManager",
+ "instanceGroupManagerResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstanceGroupManagersRestInterceptor(),
+ )
+ client = RegionInstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchRegionInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRegionInstanceGroupManagerRequest
+):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_manager_resource"] = {
+ "auto_healing_policies": [
+ {"health_check": "health_check_value", "initial_delay_sec": 1778}
+ ],
+ "base_instance_name": "base_instance_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "current_actions": {
+ "abandoning": 1041,
+ "creating": 845,
+ "creating_without_retries": 2589,
+ "deleting": 844,
+ "none": 432,
+ "recreating": 1060,
+ "refreshing": 1069,
+ "restarting": 1091,
+ "resuming": 874,
+ "starting": 876,
+ "stopping": 884,
+ "suspending": 1088,
+ "verifying": 979,
+ },
+ "description": "description_value",
+ "distribution_policy": {
+ "target_shape": "target_shape_value",
+ "zones": [{"zone": "zone_value"}],
+ },
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "instance_group": "instance_group_value",
+ "instance_template": "instance_template_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "stateful_policy": {"preserved_state": {"disks": {}}},
+ "status": {
+ "autoscaler": "autoscaler_value",
+ "is_stable": True,
+ "stateful": {
+ "has_stateful_config": True,
+ "per_instance_configs": {"all_effective": True},
+ },
+ "version_target": {"is_reached": True},
+ },
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ "target_size": 1185,
+ "update_policy": {
+ "instance_redistribution_type": "instance_redistribution_type_value",
+ "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
+ "max_unavailable": {},
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ "replacement_method": "replacement_method_value",
+ "type_": "type__value",
+ },
+ "versions": [
+ {
+ "instance_template": "instance_template_value",
+ "name": "name_value",
+ "target_size": {},
+ }
+ ],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchRegionInstanceGroupManagerRequest(),
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_patch_rest_error():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRegionInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_manager_resource"] = {
+ "auto_healing_policies": [
+ {"health_check": "health_check_value", "initial_delay_sec": 1778}
+ ],
+ "base_instance_name": "base_instance_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "current_actions": {
+ "abandoning": 1041,
+ "creating": 845,
+ "creating_without_retries": 2589,
+ "deleting": 844,
+ "none": 432,
+ "recreating": 1060,
+ "refreshing": 1069,
+ "restarting": 1091,
+ "resuming": 874,
+ "starting": 876,
+ "stopping": 884,
+ "suspending": 1088,
+ "verifying": 979,
+ },
+ "description": "description_value",
+ "distribution_policy": {
+ "target_shape": "target_shape_value",
+ "zones": [{"zone": "zone_value"}],
+ },
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "instance_group": "instance_group_value",
+ "instance_template": "instance_template_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "stateful_policy": {"preserved_state": {"disks": {}}},
+ "status": {
+ "autoscaler": "autoscaler_value",
+ "is_stable": True,
+ "stateful": {
+ "has_stateful_config": True,
+ "per_instance_configs": {"all_effective": True},
+ },
+ "version_target": {"is_reached": True},
+ },
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ "target_size": 1185,
+ "update_policy": {
+ "instance_redistribution_type": "instance_redistribution_type_value",
+ "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
+ "max_unavailable": {},
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ "replacement_method": "replacement_method_value",
+ "type_": "type__value",
+ },
+ "versions": [
+ {
+ "instance_template": "instance_template_value",
+ "name": "name_value",
+ "target_size": {},
+ }
+ ],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchRegionInstanceGroupManagerRequest,
+):
+ transport_class = transports.RegionInstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_unary_rest_unset_required_fields():
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManager",
+ "instanceGroupManagerResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstanceGroupManagersRestInterceptor(),
+ )
+ client = RegionInstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchRegionInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRegionInstanceGroupManagerRequest
+):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["instance_group_manager_resource"] = {
+ "auto_healing_policies": [
+ {"health_check": "health_check_value", "initial_delay_sec": 1778}
+ ],
+ "base_instance_name": "base_instance_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "current_actions": {
+ "abandoning": 1041,
+ "creating": 845,
+ "creating_without_retries": 2589,
+ "deleting": 844,
+ "none": 432,
+ "recreating": 1060,
+ "refreshing": 1069,
+ "restarting": 1091,
+ "resuming": 874,
+ "starting": 876,
+ "stopping": 884,
+ "suspending": 1088,
+ "verifying": 979,
+ },
+ "description": "description_value",
+ "distribution_policy": {
+ "target_shape": "target_shape_value",
+ "zones": [{"zone": "zone_value"}],
+ },
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "instance_group": "instance_group_value",
+ "instance_template": "instance_template_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "stateful_policy": {"preserved_state": {"disks": {}}},
+ "status": {
+ "autoscaler": "autoscaler_value",
+ "is_stable": True,
+ "stateful": {
+ "has_stateful_config": True,
+ "per_instance_configs": {"all_effective": True},
+ },
+ "version_target": {"is_reached": True},
+ },
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ "target_size": 1185,
+ "update_policy": {
+ "instance_redistribution_type": "instance_redistribution_type_value",
+ "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753},
+ "max_unavailable": {},
+ "minimal_action": "minimal_action_value",
+ "most_disruptive_allowed_action": "most_disruptive_allowed_action_value",
+ "replacement_method": "replacement_method_value",
+ "type_": "type__value",
+ },
+ "versions": [
+ {
+ "instance_template": "instance_template_value",
+ "name": "name_value",
+ "target_size": {},
+ }
+ ],
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_unary(request)
+
+
+def test_patch_unary_rest_flattened():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_unary(
+ compute.PatchRegionInstanceGroupManagerRequest(),
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ instance_group_manager_resource=compute.InstanceGroupManager(
+ auto_healing_policies=[
+ compute.InstanceGroupManagerAutoHealingPolicy(
+ health_check="health_check_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_patch_unary_rest_error():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_patch_per_instance_configs_rest(request_type):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["region_instance_group_manager_patch_instance_config_req_resource"] = {
+ "per_instance_configs": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_per_instance_configs(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_per_instance_configs_rest_required_fields(
+ request_type=compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest,
+):
+ transport_class = transports.RegionInstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_per_instance_configs._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_per_instance_configs._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_per_instance_configs(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_per_instance_configs_rest_unset_required_fields():
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch_per_instance_configs._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManager",
+ "project",
+ "region",
+ "regionInstanceGroupManagerPatchInstanceConfigReqResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_per_instance_configs_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstanceGroupManagersRestInterceptor(),
+ )
+ client = RegionInstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "post_patch_per_instance_configs",
+ ) as post, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "pre_patch_per_instance_configs",
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_per_instance_configs(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_per_instance_configs_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest,
+):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["region_instance_group_manager_patch_instance_config_req_resource"] = {
+ "per_instance_configs": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_per_instance_configs(request)
+
+
+def test_patch_per_instance_configs_rest_flattened():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ region_instance_group_manager_patch_instance_config_req_resource=compute.RegionInstanceGroupManagerPatchInstanceConfigReq(
+ per_instance_configs=[
+ compute.PerInstanceConfig(fingerprint="fingerprint_value")
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_per_instance_configs(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/patchPerInstanceConfigs"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_per_instance_configs_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_per_instance_configs(
+ compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest(),
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ region_instance_group_manager_patch_instance_config_req_resource=compute.RegionInstanceGroupManagerPatchInstanceConfigReq(
+ per_instance_configs=[
+ compute.PerInstanceConfig(fingerprint="fingerprint_value")
+ ]
+ ),
+ )
+
+
+def test_patch_per_instance_configs_rest_error():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_patch_per_instance_configs_unary_rest(request_type):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["region_instance_group_manager_patch_instance_config_req_resource"] = {
+ "per_instance_configs": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_per_instance_configs_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_per_instance_configs_unary_rest_required_fields(
+ request_type=compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest,
+):
+ transport_class = transports.RegionInstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_per_instance_configs._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_per_instance_configs._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_per_instance_configs_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_per_instance_configs_unary_rest_unset_required_fields():
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch_per_instance_configs._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManager",
+ "project",
+ "region",
+ "regionInstanceGroupManagerPatchInstanceConfigReqResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_per_instance_configs_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstanceGroupManagersRestInterceptor(),
+ )
+ client = RegionInstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "post_patch_per_instance_configs",
+ ) as post, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "pre_patch_per_instance_configs",
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_per_instance_configs_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_per_instance_configs_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest,
+):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["region_instance_group_manager_patch_instance_config_req_resource"] = {
+ "per_instance_configs": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_per_instance_configs_unary(request)
+
+
+def test_patch_per_instance_configs_unary_rest_flattened():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ region_instance_group_manager_patch_instance_config_req_resource=compute.RegionInstanceGroupManagerPatchInstanceConfigReq(
+ per_instance_configs=[
+ compute.PerInstanceConfig(fingerprint="fingerprint_value")
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_per_instance_configs_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/patchPerInstanceConfigs"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_per_instance_configs_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_per_instance_configs_unary(
+ compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest(),
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ region_instance_group_manager_patch_instance_config_req_resource=compute.RegionInstanceGroupManagerPatchInstanceConfigReq(
+ per_instance_configs=[
+ compute.PerInstanceConfig(fingerprint="fingerprint_value")
+ ]
+ ),
+ )
+
+
+def test_patch_per_instance_configs_unary_rest_error():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.RecreateInstancesRegionInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_recreate_instances_rest(request_type):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["region_instance_group_managers_recreate_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.recreate_instances(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_recreate_instances_rest_required_fields(
+ request_type=compute.RecreateInstancesRegionInstanceGroupManagerRequest,
+):
+ transport_class = transports.RegionInstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).recreate_instances._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).recreate_instances._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.recreate_instances(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_recreate_instances_rest_unset_required_fields():
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.recreate_instances._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManager",
+ "project",
+ "region",
+ "regionInstanceGroupManagersRecreateRequestResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_recreate_instances_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstanceGroupManagersRestInterceptor(),
+ )
+ client = RegionInstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_recreate_instances"
+ ) as post, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_recreate_instances"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.RecreateInstancesRegionInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.recreate_instances(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_recreate_instances_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.RecreateInstancesRegionInstanceGroupManagerRequest,
+):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["region_instance_group_managers_recreate_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.recreate_instances(request)
+
+
+def test_recreate_instances_rest_flattened():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ region_instance_group_managers_recreate_request_resource=compute.RegionInstanceGroupManagersRecreateRequest(
+ instances=["instances_value"]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.recreate_instances(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/recreateInstances"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_recreate_instances_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.recreate_instances(
+ compute.RecreateInstancesRegionInstanceGroupManagerRequest(),
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ region_instance_group_managers_recreate_request_resource=compute.RegionInstanceGroupManagersRecreateRequest(
+ instances=["instances_value"]
+ ),
+ )
+
+
+def test_recreate_instances_rest_error():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.RecreateInstancesRegionInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_recreate_instances_unary_rest(request_type):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["region_instance_group_managers_recreate_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.recreate_instances_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_recreate_instances_unary_rest_required_fields(
+ request_type=compute.RecreateInstancesRegionInstanceGroupManagerRequest,
+):
+ transport_class = transports.RegionInstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).recreate_instances._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).recreate_instances._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.recreate_instances_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_recreate_instances_unary_rest_unset_required_fields():
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.recreate_instances._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroupManager",
+ "project",
+ "region",
+ "regionInstanceGroupManagersRecreateRequestResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_recreate_instances_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstanceGroupManagersRestInterceptor(),
+ )
+ client = RegionInstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_recreate_instances"
+ ) as post, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_recreate_instances"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.RecreateInstancesRegionInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.recreate_instances_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_recreate_instances_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.RecreateInstancesRegionInstanceGroupManagerRequest,
+):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request_init["region_instance_group_managers_recreate_request_resource"] = {
+ "instances": ["instances_value_1", "instances_value_2"]
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.recreate_instances_unary(request)
+
+
+def test_recreate_instances_unary_rest_flattened():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ region_instance_group_managers_recreate_request_resource=compute.RegionInstanceGroupManagersRecreateRequest(
+ instances=["instances_value"]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.recreate_instances_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/recreateInstances"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_recreate_instances_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.recreate_instances_unary(
+ compute.RecreateInstancesRegionInstanceGroupManagerRequest(),
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ region_instance_group_managers_recreate_request_resource=compute.RegionInstanceGroupManagersRecreateRequest(
+ instances=["instances_value"]
+ ),
+ )
+
+
+def test_recreate_instances_unary_rest_error():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ResizeRegionInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_resize_rest(request_type):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.resize(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_resize_rest_required_fields(
+ request_type=compute.ResizeRegionInstanceGroupManagerRequest,
+):
+ transport_class = transports.RegionInstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["size"] = 0
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+ assert "size" not in jsonified_request
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+ assert "size" in jsonified_request
+ assert jsonified_request["size"] == request_init["size"]
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["size"] = 443
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "size",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "size" in jsonified_request
+ assert jsonified_request["size"] == 443
+
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.resize(request)
+
+ expected_params = [
+ (
+ "size",
+ 0,
+ ),
+ ]
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_resize_rest_unset_required_fields():
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.resize._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "size",
+ )
+ )
+ & set(
+ (
+ "instanceGroupManager",
+ "project",
+ "region",
+ "size",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_resize_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstanceGroupManagersRestInterceptor(),
+ )
+ client = RegionInstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_resize"
+ ) as post, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_resize"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.ResizeRegionInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.resize(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_resize_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.ResizeRegionInstanceGroupManagerRequest,
+):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.resize(request)
+
+
+def test_resize_rest_flattened():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ size=443,
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.resize(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/resize"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_resize_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.resize(
+ compute.ResizeRegionInstanceGroupManagerRequest(),
+ project="project_value",
+ region="region_value",
+ instance_group_manager="instance_group_manager_value",
+ size=443,
+ )
+
+
+def test_resize_rest_error():
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ResizeRegionInstanceGroupManagerRequest,
+ dict,
+ ],
+)
+def test_resize_unary_rest(request_type):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.resize_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_resize_unary_rest_required_fields(
+ request_type=compute.ResizeRegionInstanceGroupManagerRequest,
+):
+ transport_class = transports.RegionInstanceGroupManagersRestTransport
+
+ request_init = {}
+ request_init["instance_group_manager"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["size"] = 0
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+ assert "size" not in jsonified_request
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+ assert "size" in jsonified_request
+ assert jsonified_request["size"] == request_init["size"]
+
+ jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["size"] = 443
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "size",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroupManager" in jsonified_request
+ assert jsonified_request["instanceGroupManager"] == "instance_group_manager_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "size" in jsonified_request
+ assert jsonified_request["size"] == 443
+
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.resize_unary(request)
+
+ expected_params = [
+ (
+ "size",
+ 0,
+ ),
+ ]
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_resize_unary_rest_unset_required_fields():
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.resize._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "size",
+ )
+ )
+ & set(
+ (
+ "instanceGroupManager",
+ "project",
+ "region",
+ "size",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_resize_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstanceGroupManagersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstanceGroupManagersRestInterceptor(),
+ )
+ client = RegionInstanceGroupManagersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_resize"
+ ) as post, mock.patch.object(
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_resize"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.ResizeRegionInstanceGroupManagerRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.resize_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_resize_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.ResizeRegionInstanceGroupManagerRequest,
+):
+ client = RegionInstanceGroupManagersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group_manager": "sample3",
+ }
+ request = request_type(request_init)
+
# Mock the http request call within the method and fake a BadRequest error.
with mock.patch.object(Session, "request") as req, pytest.raises(
core_exceptions.BadRequest
@@ -5324,10 +10268,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.resize_unary(request)
-def test_patch_unary_rest_flattened():
+def test_resize_unary_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5350,13 +10294,7 @@ def test_patch_unary_rest_flattened():
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- instance_group_manager_resource=compute.InstanceGroupManager(
- auto_healing_policies=[
- compute.InstanceGroupManagerAutoHealingPolicy(
- health_check="health_check_value"
- )
- ]
- ),
+ size=443,
)
mock_args.update(sample_request)
@@ -5368,20 +10306,20 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.resize_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/resize"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_resize_unary_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -5390,22 +10328,16 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchRegionInstanceGroupManagerRequest(),
+ client.resize_unary(
+ compute.ResizeRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- instance_group_manager_resource=compute.InstanceGroupManager(
- auto_healing_policies=[
- compute.InstanceGroupManagerAutoHealingPolicy(
- health_check="health_check_value"
- )
- ]
- ),
+ size=443,
)
-def test_patch_unary_rest_error():
+def test_resize_unary_rest_error():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -5414,11 +10346,11 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest,
+ compute.SetInstanceTemplateRegionInstanceGroupManagerRequest,
dict,
],
)
-def test_patch_per_instance_configs_unary_rest(request_type):
+def test_set_instance_template_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5430,15 +10362,8 @@ def test_patch_per_instance_configs_unary_rest(request_type):
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init["region_instance_group_manager_patch_instance_config_req_resource"] = {
- "per_instance_configs": [
- {
- "fingerprint": "fingerprint_value",
- "name": "name_value",
- "preserved_state": {"disks": {}, "metadata": {}},
- "status": "status_value",
- }
- ]
+ request_init["region_instance_group_managers_set_template_request_resource"] = {
+ "instance_template": "instance_template_value"
}
request = request_type(request_init)
@@ -5476,10 +10401,10 @@ def test_patch_per_instance_configs_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_per_instance_configs_unary(request)
+ response = client.set_instance_template(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -5504,8 +10429,8 @@ def test_patch_per_instance_configs_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_per_instance_configs_unary_rest_required_fields(
- request_type=compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest,
+def test_set_instance_template_rest_required_fields(
+ request_type=compute.SetInstanceTemplateRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -5524,7 +10449,7 @@ def test_patch_per_instance_configs_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch_per_instance_configs._get_unset_required_fields(jsonified_request)
+ ).set_instance_template._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -5535,7 +10460,7 @@ def test_patch_per_instance_configs_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch_per_instance_configs._get_unset_required_fields(jsonified_request)
+ ).set_instance_template._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -5578,19 +10503,19 @@ def test_patch_per_instance_configs_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_per_instance_configs_unary(request)
+ response = client.set_instance_template(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_per_instance_configs_unary_rest_unset_required_fields():
+def test_set_instance_template_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch_per_instance_configs._get_unset_required_fields({})
+ unset_fields = transport.set_instance_template._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
@@ -5598,14 +10523,14 @@ def test_patch_per_instance_configs_unary_rest_unset_required_fields():
"instanceGroupManager",
"project",
"region",
- "regionInstanceGroupManagerPatchInstanceConfigReqResource",
+ "regionInstanceGroupManagersSetTemplateRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_per_instance_configs_unary_rest_interceptors(null_interceptor):
+def test_set_instance_template_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -5619,10 +10544,10 @@ def test_patch_per_instance_configs_unary_rest_interceptors(null_interceptor):
path_template, "transcode"
) as transcode, mock.patch.object(
transports.RegionInstanceGroupManagersRestInterceptor,
- "post_patch_per_instance_configs",
+ "post_set_instance_template",
) as post, mock.patch.object(
transports.RegionInstanceGroupManagersRestInterceptor,
- "pre_patch_per_instance_configs",
+ "pre_set_instance_template",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -5639,7 +10564,7 @@ def test_patch_per_instance_configs_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest()
+ request = compute.SetInstanceTemplateRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -5647,7 +10572,7 @@ def test_patch_per_instance_configs_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_per_instance_configs_unary(
+ client.set_instance_template(
request,
metadata=[
("key", "val"),
@@ -5659,9 +10584,9 @@ def test_patch_per_instance_configs_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_per_instance_configs_unary_rest_bad_request(
+def test_set_instance_template_rest_bad_request(
transport: str = "rest",
- request_type=compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest,
+ request_type=compute.SetInstanceTemplateRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -5674,15 +10599,8 @@ def test_patch_per_instance_configs_unary_rest_bad_request(
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init["region_instance_group_manager_patch_instance_config_req_resource"] = {
- "per_instance_configs": [
- {
- "fingerprint": "fingerprint_value",
- "name": "name_value",
- "preserved_state": {"disks": {}, "metadata": {}},
- "status": "status_value",
- }
- ]
+ request_init["region_instance_group_managers_set_template_request_resource"] = {
+ "instance_template": "instance_template_value"
}
request = request_type(request_init)
@@ -5695,10 +10613,10 @@ def test_patch_per_instance_configs_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_per_instance_configs_unary(request)
+ client.set_instance_template(request)
-def test_patch_per_instance_configs_unary_rest_flattened():
+def test_set_instance_template_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5721,10 +10639,8 @@ def test_patch_per_instance_configs_unary_rest_flattened():
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_manager_patch_instance_config_req_resource=compute.RegionInstanceGroupManagerPatchInstanceConfigReq(
- per_instance_configs=[
- compute.PerInstanceConfig(fingerprint="fingerprint_value")
- ]
+ region_instance_group_managers_set_template_request_resource=compute.RegionInstanceGroupManagersSetTemplateRequest(
+ instance_template="instance_template_value"
),
)
mock_args.update(sample_request)
@@ -5737,20 +10653,20 @@ def test_patch_per_instance_configs_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_per_instance_configs_unary(**mock_args)
+ client.set_instance_template(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/patchPerInstanceConfigs"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/setInstanceTemplate"
% client.transport._host,
args[1],
)
-def test_patch_per_instance_configs_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_instance_template_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -5759,20 +10675,18 @@ def test_patch_per_instance_configs_unary_rest_flattened_error(transport: str =
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_per_instance_configs_unary(
- compute.PatchPerInstanceConfigsRegionInstanceGroupManagerRequest(),
+ client.set_instance_template(
+ compute.SetInstanceTemplateRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_manager_patch_instance_config_req_resource=compute.RegionInstanceGroupManagerPatchInstanceConfigReq(
- per_instance_configs=[
- compute.PerInstanceConfig(fingerprint="fingerprint_value")
- ]
+ region_instance_group_managers_set_template_request_resource=compute.RegionInstanceGroupManagersSetTemplateRequest(
+ instance_template="instance_template_value"
),
)
-def test_patch_per_instance_configs_unary_rest_error():
+def test_set_instance_template_rest_error():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -5781,11 +10695,11 @@ def test_patch_per_instance_configs_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.RecreateInstancesRegionInstanceGroupManagerRequest,
+ compute.SetInstanceTemplateRegionInstanceGroupManagerRequest,
dict,
],
)
-def test_recreate_instances_unary_rest(request_type):
+def test_set_instance_template_unary_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5797,8 +10711,8 @@ def test_recreate_instances_unary_rest(request_type):
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init["region_instance_group_managers_recreate_request_resource"] = {
- "instances": ["instances_value_1", "instances_value_2"]
+ request_init["region_instance_group_managers_set_template_request_resource"] = {
+ "instance_template": "instance_template_value"
}
request = request_type(request_init)
@@ -5836,36 +10750,14 @@ def test_recreate_instances_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.recreate_instances_unary(request)
+ response = client.set_instance_template_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_recreate_instances_unary_rest_required_fields(
- request_type=compute.RecreateInstancesRegionInstanceGroupManagerRequest,
+def test_set_instance_template_unary_rest_required_fields(
+ request_type=compute.SetInstanceTemplateRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -5884,7 +10776,7 @@ def test_recreate_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).recreate_instances._get_unset_required_fields(jsonified_request)
+ ).set_instance_template._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -5895,7 +10787,7 @@ def test_recreate_instances_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).recreate_instances._get_unset_required_fields(jsonified_request)
+ ).set_instance_template._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -5938,19 +10830,19 @@ def test_recreate_instances_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.recreate_instances_unary(request)
+ response = client.set_instance_template_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_recreate_instances_unary_rest_unset_required_fields():
+def test_set_instance_template_unary_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.recreate_instances._get_unset_required_fields({})
+ unset_fields = transport.set_instance_template._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
@@ -5958,14 +10850,14 @@ def test_recreate_instances_unary_rest_unset_required_fields():
"instanceGroupManager",
"project",
"region",
- "regionInstanceGroupManagersRecreateRequestResource",
+ "regionInstanceGroupManagersSetTemplateRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_recreate_instances_unary_rest_interceptors(null_interceptor):
+def test_set_instance_template_unary_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -5978,9 +10870,11 @@ def test_recreate_instances_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "post_recreate_instances"
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "post_set_instance_template",
) as post, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "pre_recreate_instances"
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "pre_set_instance_template",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -5997,7 +10891,7 @@ def test_recreate_instances_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.RecreateInstancesRegionInstanceGroupManagerRequest()
+ request = compute.SetInstanceTemplateRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -6005,7 +10899,7 @@ def test_recreate_instances_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.recreate_instances_unary(
+ client.set_instance_template_unary(
request,
metadata=[
("key", "val"),
@@ -6017,9 +10911,9 @@ def test_recreate_instances_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_recreate_instances_unary_rest_bad_request(
+def test_set_instance_template_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.RecreateInstancesRegionInstanceGroupManagerRequest,
+ request_type=compute.SetInstanceTemplateRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -6032,8 +10926,8 @@ def test_recreate_instances_unary_rest_bad_request(
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init["region_instance_group_managers_recreate_request_resource"] = {
- "instances": ["instances_value_1", "instances_value_2"]
+ request_init["region_instance_group_managers_set_template_request_resource"] = {
+ "instance_template": "instance_template_value"
}
request = request_type(request_init)
@@ -6046,10 +10940,10 @@ def test_recreate_instances_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.recreate_instances_unary(request)
+ client.set_instance_template_unary(request)
-def test_recreate_instances_unary_rest_flattened():
+def test_set_instance_template_unary_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6072,8 +10966,8 @@ def test_recreate_instances_unary_rest_flattened():
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_managers_recreate_request_resource=compute.RegionInstanceGroupManagersRecreateRequest(
- instances=["instances_value"]
+ region_instance_group_managers_set_template_request_resource=compute.RegionInstanceGroupManagersSetTemplateRequest(
+ instance_template="instance_template_value"
),
)
mock_args.update(sample_request)
@@ -6086,20 +10980,20 @@ def test_recreate_instances_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.recreate_instances_unary(**mock_args)
+ client.set_instance_template_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/recreateInstances"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/setInstanceTemplate"
% client.transport._host,
args[1],
)
-def test_recreate_instances_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_instance_template_unary_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -6108,18 +11002,18 @@ def test_recreate_instances_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.recreate_instances_unary(
- compute.RecreateInstancesRegionInstanceGroupManagerRequest(),
+ client.set_instance_template_unary(
+ compute.SetInstanceTemplateRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_managers_recreate_request_resource=compute.RegionInstanceGroupManagersRecreateRequest(
- instances=["instances_value"]
+ region_instance_group_managers_set_template_request_resource=compute.RegionInstanceGroupManagersSetTemplateRequest(
+ instance_template="instance_template_value"
),
)
-def test_recreate_instances_unary_rest_error():
+def test_set_instance_template_unary_rest_error():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -6128,11 +11022,11 @@ def test_recreate_instances_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ResizeRegionInstanceGroupManagerRequest,
+ compute.SetTargetPoolsRegionInstanceGroupManagerRequest,
dict,
],
)
-def test_resize_unary_rest(request_type):
+def test_set_target_pools_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6144,6 +11038,10 @@ def test_resize_unary_rest(request_type):
"region": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["region_instance_group_managers_set_target_pools_request_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -6180,10 +11078,10 @@ def test_resize_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.resize_unary(request)
+ response = client.set_target_pools(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -6208,8 +11106,8 @@ def test_resize_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_resize_unary_rest_required_fields(
- request_type=compute.ResizeRegionInstanceGroupManagerRequest,
+def test_set_target_pools_rest_required_fields(
+ request_type=compute.SetTargetPoolsRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -6217,7 +11115,6 @@ def test_resize_unary_rest_required_fields(
request_init["instance_group_manager"] = ""
request_init["project"] = ""
request_init["region"] = ""
- request_init["size"] = 0
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -6226,32 +11123,23 @@ def test_resize_unary_rest_required_fields(
)
# verify fields with default values are dropped
- assert "size" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).resize._get_unset_required_fields(jsonified_request)
+ ).set_target_pools._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- assert "size" in jsonified_request
- assert jsonified_request["size"] == request_init["size"]
jsonified_request["instanceGroupManager"] = "instance_group_manager_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
- jsonified_request["size"] = 443
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).resize._get_unset_required_fields(jsonified_request)
+ ).set_target_pools._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "request_id",
- "size",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -6261,8 +11149,6 @@ def test_resize_unary_rest_required_fields(
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
- assert "size" in jsonified_request
- assert jsonified_request["size"] == 443
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -6285,6 +11171,7 @@ def test_resize_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -6293,44 +11180,34 @@ def test_resize_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.resize_unary(request)
+ response = client.set_target_pools(request)
- expected_params = [
- (
- "size",
- 0,
- ),
- ]
+ expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_resize_unary_rest_unset_required_fields():
+def test_set_target_pools_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.resize._get_unset_required_fields({})
+ unset_fields = transport.set_target_pools._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "requestId",
- "size",
- )
- )
+ set(("requestId",))
& set(
(
"instanceGroupManager",
"project",
"region",
- "size",
+ "regionInstanceGroupManagersSetTargetPoolsRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_resize_unary_rest_interceptors(null_interceptor):
+def test_set_target_pools_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -6343,9 +11220,9 @@ def test_resize_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "post_resize"
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_set_target_pools"
) as post, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "pre_resize"
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_set_target_pools"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -6362,7 +11239,7 @@ def test_resize_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ResizeRegionInstanceGroupManagerRequest()
+ request = compute.SetTargetPoolsRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -6370,7 +11247,7 @@ def test_resize_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.resize_unary(
+ client.set_target_pools(
request,
metadata=[
("key", "val"),
@@ -6382,9 +11259,9 @@ def test_resize_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_resize_unary_rest_bad_request(
+def test_set_target_pools_rest_bad_request(
transport: str = "rest",
- request_type=compute.ResizeRegionInstanceGroupManagerRequest,
+ request_type=compute.SetTargetPoolsRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -6397,6 +11274,10 @@ def test_resize_unary_rest_bad_request(
"region": "sample2",
"instance_group_manager": "sample3",
}
+ request_init["region_instance_group_managers_set_target_pools_request_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -6408,10 +11289,10 @@ def test_resize_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.resize_unary(request)
+ client.set_target_pools(request)
-def test_resize_unary_rest_flattened():
+def test_set_target_pools_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6434,7 +11315,9 @@ def test_resize_unary_rest_flattened():
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- size=443,
+ region_instance_group_managers_set_target_pools_request_resource=compute.RegionInstanceGroupManagersSetTargetPoolsRequest(
+ fingerprint="fingerprint_value"
+ ),
)
mock_args.update(sample_request)
@@ -6446,20 +11329,20 @@ def test_resize_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.resize_unary(**mock_args)
+ client.set_target_pools(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/resize"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/setTargetPools"
% client.transport._host,
args[1],
)
-def test_resize_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_target_pools_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -6468,16 +11351,18 @@ def test_resize_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.resize_unary(
- compute.ResizeRegionInstanceGroupManagerRequest(),
+ client.set_target_pools(
+ compute.SetTargetPoolsRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- size=443,
+ region_instance_group_managers_set_target_pools_request_resource=compute.RegionInstanceGroupManagersSetTargetPoolsRequest(
+ fingerprint="fingerprint_value"
+ ),
)
-def test_resize_unary_rest_error():
+def test_set_target_pools_rest_error():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -6486,11 +11371,11 @@ def test_resize_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetInstanceTemplateRegionInstanceGroupManagerRequest,
+ compute.SetTargetPoolsRegionInstanceGroupManagerRequest,
dict,
],
)
-def test_set_instance_template_unary_rest(request_type):
+def test_set_target_pools_unary_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6502,8 +11387,9 @@ def test_set_instance_template_unary_rest(request_type):
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init["region_instance_group_managers_set_template_request_resource"] = {
- "instance_template": "instance_template_value"
+ request_init["region_instance_group_managers_set_target_pools_request_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
}
request = request_type(request_init)
@@ -6541,36 +11427,14 @@ def test_set_instance_template_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_instance_template_unary(request)
+ response = client.set_target_pools_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_set_instance_template_unary_rest_required_fields(
- request_type=compute.SetInstanceTemplateRegionInstanceGroupManagerRequest,
+def test_set_target_pools_unary_rest_required_fields(
+ request_type=compute.SetTargetPoolsRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -6589,7 +11453,7 @@ def test_set_instance_template_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_instance_template._get_unset_required_fields(jsonified_request)
+ ).set_target_pools._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -6600,7 +11464,7 @@ def test_set_instance_template_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_instance_template._get_unset_required_fields(jsonified_request)
+ ).set_target_pools._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -6643,19 +11507,19 @@ def test_set_instance_template_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_instance_template_unary(request)
+ response = client.set_target_pools_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_instance_template_unary_rest_unset_required_fields():
+def test_set_target_pools_unary_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_instance_template._get_unset_required_fields({})
+ unset_fields = transport.set_target_pools._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
@@ -6663,14 +11527,14 @@ def test_set_instance_template_unary_rest_unset_required_fields():
"instanceGroupManager",
"project",
"region",
- "regionInstanceGroupManagersSetTemplateRequestResource",
+ "regionInstanceGroupManagersSetTargetPoolsRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_instance_template_unary_rest_interceptors(null_interceptor):
+def test_set_target_pools_unary_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -6683,11 +11547,9 @@ def test_set_instance_template_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor,
- "post_set_instance_template",
+ transports.RegionInstanceGroupManagersRestInterceptor, "post_set_target_pools"
) as post, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor,
- "pre_set_instance_template",
+ transports.RegionInstanceGroupManagersRestInterceptor, "pre_set_target_pools"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -6704,7 +11566,7 @@ def test_set_instance_template_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetInstanceTemplateRegionInstanceGroupManagerRequest()
+ request = compute.SetTargetPoolsRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -6712,7 +11574,7 @@ def test_set_instance_template_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_instance_template_unary(
+ client.set_target_pools_unary(
request,
metadata=[
("key", "val"),
@@ -6724,9 +11586,9 @@ def test_set_instance_template_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_instance_template_unary_rest_bad_request(
+def test_set_target_pools_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.SetInstanceTemplateRegionInstanceGroupManagerRequest,
+ request_type=compute.SetTargetPoolsRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -6739,8 +11601,9 @@ def test_set_instance_template_unary_rest_bad_request(
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init["region_instance_group_managers_set_template_request_resource"] = {
- "instance_template": "instance_template_value"
+ request_init["region_instance_group_managers_set_target_pools_request_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "target_pools": ["target_pools_value_1", "target_pools_value_2"],
}
request = request_type(request_init)
@@ -6753,10 +11616,10 @@ def test_set_instance_template_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_instance_template_unary(request)
+ client.set_target_pools_unary(request)
-def test_set_instance_template_unary_rest_flattened():
+def test_set_target_pools_unary_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6779,8 +11642,8 @@ def test_set_instance_template_unary_rest_flattened():
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_managers_set_template_request_resource=compute.RegionInstanceGroupManagersSetTemplateRequest(
- instance_template="instance_template_value"
+ region_instance_group_managers_set_target_pools_request_resource=compute.RegionInstanceGroupManagersSetTargetPoolsRequest(
+ fingerprint="fingerprint_value"
),
)
mock_args.update(sample_request)
@@ -6793,20 +11656,20 @@ def test_set_instance_template_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_instance_template_unary(**mock_args)
+ client.set_target_pools_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/setInstanceTemplate"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/setTargetPools"
% client.transport._host,
args[1],
)
-def test_set_instance_template_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_target_pools_unary_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -6815,18 +11678,18 @@ def test_set_instance_template_unary_rest_flattened_error(transport: str = "rest
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_instance_template_unary(
- compute.SetInstanceTemplateRegionInstanceGroupManagerRequest(),
+ client.set_target_pools_unary(
+ compute.SetTargetPoolsRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_managers_set_template_request_resource=compute.RegionInstanceGroupManagersSetTemplateRequest(
- instance_template="instance_template_value"
+ region_instance_group_managers_set_target_pools_request_resource=compute.RegionInstanceGroupManagersSetTargetPoolsRequest(
+ fingerprint="fingerprint_value"
),
)
-def test_set_instance_template_unary_rest_error():
+def test_set_target_pools_unary_rest_error():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -6835,11 +11698,11 @@ def test_set_instance_template_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetTargetPoolsRegionInstanceGroupManagerRequest,
+ compute.UpdatePerInstanceConfigsRegionInstanceGroupManagerRequest,
dict,
],
)
-def test_set_target_pools_unary_rest(request_type):
+def test_update_per_instance_configs_rest(request_type):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -6851,9 +11714,17 @@ def test_set_target_pools_unary_rest(request_type):
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init["region_instance_group_managers_set_target_pools_request_resource"] = {
- "fingerprint": "fingerprint_value",
- "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ request_init[
+ "region_instance_group_manager_update_instance_config_req_resource"
+ ] = {
+ "per_instance_configs": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
}
request = request_type(request_init)
@@ -6891,10 +11762,10 @@ def test_set_target_pools_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_target_pools_unary(request)
+ response = client.update_per_instance_configs(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -6919,8 +11790,8 @@ def test_set_target_pools_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_set_target_pools_unary_rest_required_fields(
- request_type=compute.SetTargetPoolsRegionInstanceGroupManagerRequest,
+def test_update_per_instance_configs_rest_required_fields(
+ request_type=compute.UpdatePerInstanceConfigsRegionInstanceGroupManagerRequest,
):
transport_class = transports.RegionInstanceGroupManagersRestTransport
@@ -6939,7 +11810,7 @@ def test_set_target_pools_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_target_pools._get_unset_required_fields(jsonified_request)
+ ).update_per_instance_configs._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -6950,7 +11821,7 @@ def test_set_target_pools_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_target_pools._get_unset_required_fields(jsonified_request)
+ ).update_per_instance_configs._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -6993,19 +11864,19 @@ def test_set_target_pools_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_target_pools_unary(request)
+ response = client.update_per_instance_configs(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_target_pools_unary_rest_unset_required_fields():
+def test_update_per_instance_configs_rest_unset_required_fields():
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_target_pools._get_unset_required_fields({})
+ unset_fields = transport.update_per_instance_configs._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
@@ -7013,14 +11884,14 @@ def test_set_target_pools_unary_rest_unset_required_fields():
"instanceGroupManager",
"project",
"region",
- "regionInstanceGroupManagersSetTargetPoolsRequestResource",
+ "regionInstanceGroupManagerUpdateInstanceConfigReqResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_target_pools_unary_rest_interceptors(null_interceptor):
+def test_update_per_instance_configs_rest_interceptors(null_interceptor):
transport = transports.RegionInstanceGroupManagersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -7033,9 +11904,11 @@ def test_set_target_pools_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "post_set_target_pools"
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "post_update_per_instance_configs",
) as post, mock.patch.object(
- transports.RegionInstanceGroupManagersRestInterceptor, "pre_set_target_pools"
+ transports.RegionInstanceGroupManagersRestInterceptor,
+ "pre_update_per_instance_configs",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -7052,7 +11925,7 @@ def test_set_target_pools_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetTargetPoolsRegionInstanceGroupManagerRequest()
+ request = compute.UpdatePerInstanceConfigsRegionInstanceGroupManagerRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -7060,7 +11933,7 @@ def test_set_target_pools_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_target_pools_unary(
+ client.update_per_instance_configs(
request,
metadata=[
("key", "val"),
@@ -7072,9 +11945,9 @@ def test_set_target_pools_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_target_pools_unary_rest_bad_request(
+def test_update_per_instance_configs_rest_bad_request(
transport: str = "rest",
- request_type=compute.SetTargetPoolsRegionInstanceGroupManagerRequest,
+ request_type=compute.UpdatePerInstanceConfigsRegionInstanceGroupManagerRequest,
):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -7087,9 +11960,17 @@ def test_set_target_pools_unary_rest_bad_request(
"region": "sample2",
"instance_group_manager": "sample3",
}
- request_init["region_instance_group_managers_set_target_pools_request_resource"] = {
- "fingerprint": "fingerprint_value",
- "target_pools": ["target_pools_value_1", "target_pools_value_2"],
+ request_init[
+ "region_instance_group_manager_update_instance_config_req_resource"
+ ] = {
+ "per_instance_configs": [
+ {
+ "fingerprint": "fingerprint_value",
+ "name": "name_value",
+ "preserved_state": {"disks": {}, "metadata": {}},
+ "status": "status_value",
+ }
+ ]
}
request = request_type(request_init)
@@ -7102,10 +11983,10 @@ def test_set_target_pools_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_target_pools_unary(request)
+ client.update_per_instance_configs(request)
-def test_set_target_pools_unary_rest_flattened():
+def test_update_per_instance_configs_rest_flattened():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -7128,8 +12009,10 @@ def test_set_target_pools_unary_rest_flattened():
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_managers_set_target_pools_request_resource=compute.RegionInstanceGroupManagersSetTargetPoolsRequest(
- fingerprint="fingerprint_value"
+ region_instance_group_manager_update_instance_config_req_resource=compute.RegionInstanceGroupManagerUpdateInstanceConfigReq(
+ per_instance_configs=[
+ compute.PerInstanceConfig(fingerprint="fingerprint_value")
+ ]
),
)
mock_args.update(sample_request)
@@ -7142,20 +12025,20 @@ def test_set_target_pools_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_target_pools_unary(**mock_args)
+ client.update_per_instance_configs(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/setTargetPools"
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroupManagers/{instance_group_manager}/updatePerInstanceConfigs"
% client.transport._host,
args[1],
)
-def test_set_target_pools_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_per_instance_configs_rest_flattened_error(transport: str = "rest"):
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -7164,18 +12047,20 @@ def test_set_target_pools_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_target_pools_unary(
- compute.SetTargetPoolsRegionInstanceGroupManagerRequest(),
+ client.update_per_instance_configs(
+ compute.UpdatePerInstanceConfigsRegionInstanceGroupManagerRequest(),
project="project_value",
region="region_value",
instance_group_manager="instance_group_manager_value",
- region_instance_group_managers_set_target_pools_request_resource=compute.RegionInstanceGroupManagersSetTargetPoolsRequest(
- fingerprint="fingerprint_value"
+ region_instance_group_manager_update_instance_config_req_resource=compute.RegionInstanceGroupManagerUpdateInstanceConfigReq(
+ per_instance_configs=[
+ compute.PerInstanceConfig(fingerprint="fingerprint_value")
+ ]
),
)
-def test_set_target_pools_unary_rest_error():
+def test_update_per_instance_configs_rest_error():
client = RegionInstanceGroupManagersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -7252,28 +12137,6 @@ def test_update_per_instance_configs_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_per_instance_configs_unary_rest_required_fields(
@@ -7629,6 +12492,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionInstanceGroupManagersClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_instance_group_managers_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -7678,6 +12554,14 @@ def test_region_instance_group_managers_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_instance_group_managers_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_instance_groups.py b/tests/unit/gapic/compute_v1/test_region_instance_groups.py
index ccc74fbe1..6adeb584e 100644
--- a/tests/unit/gapic/compute_v1/test_region_instance_groups.py
+++ b/tests/unit/gapic/compute_v1/test_region_instance_groups.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -1618,7 +1620,7 @@ def test_list_instances_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_set_named_ports_unary_rest(request_type):
+def test_set_named_ports_rest(request_type):
client = RegionInstanceGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1670,10 +1672,10 @@ def test_set_named_ports_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_named_ports_unary(request)
+ response = client.set_named_ports(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1698,6 +1700,333 @@ def test_set_named_ports_unary_rest(request_type):
assert response.zone == "zone_value"
+def test_set_named_ports_rest_required_fields(
+ request_type=compute.SetNamedPortsRegionInstanceGroupRequest,
+):
+ transport_class = transports.RegionInstanceGroupsRestTransport
+
+ request_init = {}
+ request_init["instance_group"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_named_ports._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["instanceGroup"] = "instance_group_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_named_ports._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "instanceGroup" in jsonified_request
+ assert jsonified_request["instanceGroup"] == "instance_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionInstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_named_ports(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_named_ports_rest_unset_required_fields():
+ transport = transports.RegionInstanceGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_named_ports._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "instanceGroup",
+ "project",
+ "region",
+ "regionInstanceGroupsSetNamedPortsRequestResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_named_ports_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstanceGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstanceGroupsRestInterceptor(),
+ )
+ client = RegionInstanceGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstanceGroupsRestInterceptor, "post_set_named_ports"
+ ) as post, mock.patch.object(
+ transports.RegionInstanceGroupsRestInterceptor, "pre_set_named_ports"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetNamedPortsRegionInstanceGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_named_ports(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_named_ports_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.SetNamedPortsRegionInstanceGroupRequest,
+):
+ client = RegionInstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group": "sample3",
+ }
+ request_init["region_instance_groups_set_named_ports_request_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_named_ports(request)
+
+
+def test_set_named_ports_rest_flattened():
+ client = RegionInstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ instance_group="instance_group_value",
+ region_instance_groups_set_named_ports_request_resource=compute.RegionInstanceGroupsSetNamedPortsRequest(
+ fingerprint="fingerprint_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_named_ports(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instanceGroups/{instance_group}/setNamedPorts"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_named_ports_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_named_ports(
+ compute.SetNamedPortsRegionInstanceGroupRequest(),
+ project="project_value",
+ region="region_value",
+ instance_group="instance_group_value",
+ region_instance_groups_set_named_ports_request_resource=compute.RegionInstanceGroupsSetNamedPortsRequest(
+ fingerprint="fingerprint_value"
+ ),
+ )
+
+
+def test_set_named_ports_rest_error():
+ client = RegionInstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetNamedPortsRegionInstanceGroupRequest,
+ dict,
+ ],
+)
+def test_set_named_ports_unary_rest(request_type):
+ client = RegionInstanceGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "instance_group": "sample3",
+ }
+ request_init["region_instance_groups_set_named_ports_request_resource"] = {
+ "fingerprint": "fingerprint_value",
+ "named_ports": [{"name": "name_value", "port": 453}],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_named_ports_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
def test_set_named_ports_unary_rest_required_fields(
request_type=compute.SetNamedPortsRegionInstanceGroupRequest,
):
@@ -2035,6 +2364,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionInstanceGroupsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_instance_groups_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2069,6 +2411,14 @@ def test_region_instance_groups_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_instance_groups_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_instances.py b/tests/unit/gapic/compute_v1/test_region_instances.py
index 61e696f1e..f031db71e 100644
--- a/tests/unit/gapic/compute_v1/test_region_instances.py
+++ b/tests/unit/gapic/compute_v1/test_region_instances.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -531,6 +533,645 @@ def test_region_instances_client_client_options_credentials_file(
)
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.BulkInsertRegionInstanceRequest,
+ dict,
+ ],
+)
+def test_bulk_insert_rest(request_type):
+ client = RegionInstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["bulk_insert_instance_resource_resource"] = {
+ "count": 553,
+ "instance_properties": {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "labels": {},
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_manager_tags": {},
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ },
+ "location_policy": {"locations": {}},
+ "min_count": 972,
+ "name_pattern": "name_pattern_value",
+ "per_instance_properties": {},
+ "source_instance_template": "source_instance_template_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.bulk_insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_bulk_insert_rest_required_fields(
+ request_type=compute.BulkInsertRegionInstanceRequest,
+):
+ transport_class = transports.RegionInstancesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).bulk_insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).bulk_insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionInstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.bulk_insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_bulk_insert_rest_unset_required_fields():
+ transport = transports.RegionInstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.bulk_insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "bulkInsertInstanceResourceResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_bulk_insert_rest_interceptors(null_interceptor):
+ transport = transports.RegionInstancesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionInstancesRestInterceptor(),
+ )
+ client = RegionInstancesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionInstancesRestInterceptor, "post_bulk_insert"
+ ) as post, mock.patch.object(
+ transports.RegionInstancesRestInterceptor, "pre_bulk_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.BulkInsertRegionInstanceRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.bulk_insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_bulk_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.BulkInsertRegionInstanceRequest
+):
+ client = RegionInstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["bulk_insert_instance_resource_resource"] = {
+ "count": 553,
+ "instance_properties": {
+ "advanced_machine_features": {
+ "enable_nested_virtualization": True,
+ "enable_uefi_networking": True,
+ "threads_per_core": 1689,
+ },
+ "can_ip_forward": True,
+ "confidential_instance_config": {"enable_confidential_compute": True},
+ "description": "description_value",
+ "disks": [
+ {
+ "auto_delete": True,
+ "boot": True,
+ "device_name": "device_name_value",
+ "disk_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "disk_size_gb": 1261,
+ "guest_os_features": [{"type_": "type__value"}],
+ "index": 536,
+ "initialize_params": {
+ "description": "description_value",
+ "disk_name": "disk_name_value",
+ "disk_size_gb": 1261,
+ "disk_type": "disk_type_value",
+ "labels": {},
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "on_update_action": "on_update_action_value",
+ "provisioned_iops": 1740,
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "source_image": "source_image_value",
+ "source_image_encryption_key": {},
+ "source_snapshot": "source_snapshot_value",
+ "source_snapshot_encryption_key": {},
+ },
+ "interface": "interface_value",
+ "kind": "kind_value",
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "mode": "mode_value",
+ "shielded_instance_initial_state": {
+ "dbs": [
+ {"content": "content_value", "file_type": "file_type_value"}
+ ],
+ "dbxs": {},
+ "keks": {},
+ "pk": {},
+ },
+ "source": "source_value",
+ "type_": "type__value",
+ }
+ ],
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "labels": {},
+ "machine_type": "machine_type_value",
+ "metadata": {
+ "fingerprint": "fingerprint_value",
+ "items": [{"key": "key_value", "value": "value_value"}],
+ "kind": "kind_value",
+ },
+ "min_cpu_platform": "min_cpu_platform_value",
+ "network_interfaces": [
+ {
+ "access_configs": [
+ {
+ "external_ipv6": "external_ipv6_value",
+ "external_ipv6_prefix_length": 2837,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_i_p": "nat_i_p_value",
+ "network_tier": "network_tier_value",
+ "public_ptr_domain_name": "public_ptr_domain_name_value",
+ "set_public_ptr": True,
+ "type_": "type__value",
+ }
+ ],
+ "alias_ip_ranges": [
+ {
+ "ip_cidr_range": "ip_cidr_range_value",
+ "subnetwork_range_name": "subnetwork_range_name_value",
+ }
+ ],
+ "fingerprint": "fingerprint_value",
+ "internal_ipv6_prefix_length": 2831,
+ "ipv6_access_configs": {},
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_address": "ipv6_address_value",
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_i_p": "network_i_p_value",
+ "nic_type": "nic_type_value",
+ "queue_count": 1197,
+ "stack_type": "stack_type_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "network_performance_config": {
+ "total_egress_bandwidth_tier": "total_egress_bandwidth_tier_value"
+ },
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "reservation_affinity": {
+ "consume_reservation_type": "consume_reservation_type_value",
+ "key": "key_value",
+ "values": ["values_value_1", "values_value_2"],
+ },
+ "resource_manager_tags": {},
+ "resource_policies": [
+ "resource_policies_value_1",
+ "resource_policies_value_2",
+ ],
+ "scheduling": {
+ "automatic_restart": True,
+ "instance_termination_action": "instance_termination_action_value",
+ "location_hint": "location_hint_value",
+ "min_node_cpus": 1379,
+ "node_affinities": [
+ {
+ "key": "key_value",
+ "operator": "operator_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "on_host_maintenance": "on_host_maintenance_value",
+ "preemptible": True,
+ "provisioning_model": "provisioning_model_value",
+ },
+ "service_accounts": [
+ {"email": "email_value", "scopes": ["scopes_value_1", "scopes_value_2"]}
+ ],
+ "shielded_instance_config": {
+ "enable_integrity_monitoring": True,
+ "enable_secure_boot": True,
+ "enable_vtpm": True,
+ },
+ "tags": {
+ "fingerprint": "fingerprint_value",
+ "items": ["items_value_1", "items_value_2"],
+ },
+ },
+ "location_policy": {"locations": {}},
+ "min_count": 972,
+ "name_pattern": "name_pattern_value",
+ "per_instance_properties": {},
+ "source_instance_template": "source_instance_template_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.bulk_insert(request)
+
+
+def test_bulk_insert_rest_flattened():
+ client = RegionInstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ bulk_insert_instance_resource_resource=compute.BulkInsertInstanceResource(
+ count=553
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.bulk_insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/instances/bulkInsert"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_bulk_insert_rest_flattened_error(transport: str = "rest"):
+ client = RegionInstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.bulk_insert(
+ compute.BulkInsertRegionInstanceRequest(),
+ project="project_value",
+ region="region_value",
+ bulk_insert_instance_resource_resource=compute.BulkInsertInstanceResource(
+ count=553
+ ),
+ )
+
+
+def test_bulk_insert_rest_error():
+ client = RegionInstancesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
@pytest.mark.parametrize(
"request_type",
[
@@ -745,28 +1386,6 @@ def test_bulk_insert_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_bulk_insert_unary_rest_required_fields(
@@ -1245,6 +1864,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionInstancesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_instances_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -1274,6 +1906,14 @@ def test_region_instances_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_instances_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_network_endpoint_groups.py b/tests/unit/gapic/compute_v1/test_region_network_endpoint_groups.py
index 2420386ea..3a6a89b43 100644
--- a/tests/unit/gapic/compute_v1/test_region_network_endpoint_groups.py
+++ b/tests/unit/gapic/compute_v1/test_region_network_endpoint_groups.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -563,7 +565,7 @@ def test_region_network_endpoint_groups_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = RegionNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -611,10 +613,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -639,7 +641,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteRegionNetworkEndpointGroupRequest,
):
transport_class = transports.RegionNetworkEndpointGroupsRestTransport
@@ -712,14 +714,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.RegionNetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -738,7 +740,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -768,17 +770,645 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteRegionNetworkEndpointGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DeleteRegionNetworkEndpointGroupRequest,
+):
+ client = RegionNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete(request)
+
+
+def test_delete_rest_flattened():
+ client = RegionNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ network_endpoint_group="network_endpoint_group_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/networkEndpointGroups/{network_endpoint_group}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_rest_flattened_error(transport: str = "rest"):
+ client = RegionNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete(
+ compute.DeleteRegionNetworkEndpointGroupRequest(),
+ project="project_value",
+ region="region_value",
+ network_endpoint_group="network_endpoint_group_value",
+ )
+
+
+def test_delete_rest_error():
+ client = RegionNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DeleteRegionNetworkEndpointGroupRequest,
+ dict,
+ ],
+)
+def test_delete_unary_rest(request_type):
+ client = RegionNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.delete_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteRegionNetworkEndpointGroupRequest,
+):
+ transport_class = transports.RegionNetworkEndpointGroupsRestTransport
+
+ request_init = {}
+ request_init["network_endpoint_group"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["networkEndpointGroup"] = "network_endpoint_group_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "networkEndpointGroup" in jsonified_request
+ assert jsonified_request["networkEndpointGroup"] == "network_endpoint_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "delete",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_unary_rest_unset_required_fields():
+ transport = transports.RegionNetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "networkEndpointGroup",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionNetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionNetworkEndpointGroupsRestInterceptor(),
+ )
+ client = RegionNetworkEndpointGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionNetworkEndpointGroupsRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.RegionNetworkEndpointGroupsRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteRegionNetworkEndpointGroupRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DeleteRegionNetworkEndpointGroupRequest,
+):
+ client = RegionNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete_unary(request)
+
+
+def test_delete_unary_rest_flattened():
+ client = RegionNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ network_endpoint_group="network_endpoint_group_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/networkEndpointGroups/{network_endpoint_group}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete_unary(
+ compute.DeleteRegionNetworkEndpointGroupRequest(),
+ project="project_value",
+ region="region_value",
+ network_endpoint_group="network_endpoint_group_value",
+ )
+
+
+def test_delete_unary_rest_error():
+ client = RegionNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetRegionNetworkEndpointGroupRequest,
+ dict,
+ ],
+)
+def test_get_rest(request_type):
+ client = RegionNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "network_endpoint_group": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NetworkEndpointGroup(
+ creation_timestamp="creation_timestamp_value",
+ default_port=1289,
+ description="description_value",
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ network="network_value",
+ network_endpoint_type="network_endpoint_type_value",
+ psc_target_service="psc_target_service_value",
+ region="region_value",
+ self_link="self_link_value",
+ size=443,
+ subnetwork="subnetwork_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.NetworkEndpointGroup)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.default_port == 1289
+ assert response.description == "description_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.network == "network_value"
+ assert response.network_endpoint_type == "network_endpoint_type_value"
+ assert response.psc_target_service == "psc_target_service_value"
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.size == 443
+ assert response.subnetwork == "subnetwork_value"
+ assert response.zone == "zone_value"
+
+
+def test_get_rest_required_fields(
+ request_type=compute.GetRegionNetworkEndpointGroupRequest,
+):
+ transport_class = transports.RegionNetworkEndpointGroupsRestTransport
+
+ request_init = {}
+ request_init["network_endpoint_group"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["networkEndpointGroup"] = "network_endpoint_group_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "networkEndpointGroup" in jsonified_request
+ assert jsonified_request["networkEndpointGroup"] == "network_endpoint_group_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionNetworkEndpointGroupsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NetworkEndpointGroup()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.RegionNetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "networkEndpointGroup",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.RegionNetworkEndpointGroupsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionNetworkEndpointGroupsRestInterceptor(),
+ )
+ client = RegionNetworkEndpointGroupsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionNetworkEndpointGroupsRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.RegionNetworkEndpointGroupsRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.NetworkEndpointGroup.to_json(
+ compute.NetworkEndpointGroup()
+ )
- request = compute.DeleteRegionNetworkEndpointGroupRequest()
+ request = compute.GetRegionNetworkEndpointGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.NetworkEndpointGroup
- client.delete_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -790,9 +1420,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest",
- request_type=compute.DeleteRegionNetworkEndpointGroupRequest,
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRegionNetworkEndpointGroupRequest
):
client = RegionNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -816,10 +1445,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.get(request)
-def test_delete_unary_rest_flattened():
+def test_get_rest_flattened():
client = RegionNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -828,7 +1457,7 @@ def test_delete_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.NetworkEndpointGroup()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -848,12 +1477,12 @@ def test_delete_unary_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -866,7 +1495,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -875,15 +1504,15 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteRegionNetworkEndpointGroupRequest(),
+ client.get(
+ compute.GetRegionNetworkEndpointGroupRequest(),
project="project_value",
region="region_value",
network_endpoint_group="network_endpoint_group_value",
)
-def test_delete_unary_rest_error():
+def test_get_rest_error():
client = RegionNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -892,77 +1521,116 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRegionNetworkEndpointGroupRequest,
+ compute.InsertRegionNetworkEndpointGroupRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_insert_rest(request_type):
client = RegionNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "region": "sample2",
- "network_endpoint_group": "sample3",
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["network_endpoint_group_resource"] = {
+ "annotations": {},
+ "app_engine": {
+ "service": "service_value",
+ "url_mask": "url_mask_value",
+ "version": "version_value",
+ },
+ "cloud_function": {"function": "function_value", "url_mask": "url_mask_value"},
+ "cloud_run": {
+ "service": "service_value",
+ "tag": "tag_value",
+ "url_mask": "url_mask_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "default_port": 1289,
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_endpoint_type": "network_endpoint_type_value",
+ "psc_target_service": "psc_target_service_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "subnetwork": "subnetwork_value",
+ "zone": "zone_value",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NetworkEndpointGroup(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
- default_port=1289,
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- network="network_value",
- network_endpoint_type="network_endpoint_type_value",
- psc_target_service="psc_target_service_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- size=443,
- subnetwork="subnetwork_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.NetworkEndpointGroup)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
- assert response.default_port == 1289
assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.network == "network_value"
- assert response.network_endpoint_type == "network_endpoint_type_value"
- assert response.psc_target_service == "psc_target_service_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.size == 443
- assert response.subnetwork == "subnetwork_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
assert response.zone == "zone_value"
-def test_get_rest_required_fields(
- request_type=compute.GetRegionNetworkEndpointGroupRequest,
+def test_insert_rest_required_fields(
+ request_type=compute.InsertRegionNetworkEndpointGroupRequest,
):
transport_class = transports.RegionNetworkEndpointGroupsRestTransport
request_init = {}
- request_init["network_endpoint_group"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -976,23 +1644,22 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["networkEndpointGroup"] = "network_endpoint_group_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "networkEndpointGroup" in jsonified_request
- assert jsonified_request["networkEndpointGroup"] == "network_endpoint_group_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -1005,7 +1672,7 @@ def test_get_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.NetworkEndpointGroup()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1016,35 +1683,36 @@ def test_get_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.RegionNetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
- "networkEndpointGroup",
+ "networkEndpointGroupResource",
"project",
"region",
)
@@ -1053,7 +1721,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkEndpointGroupsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1066,9 +1734,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNetworkEndpointGroupsRestInterceptor, "post_get"
+ transports.RegionNetworkEndpointGroupsRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.RegionNetworkEndpointGroupsRestInterceptor, "pre_get"
+ transports.RegionNetworkEndpointGroupsRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1083,19 +1751,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.NetworkEndpointGroup.to_json(
- compute.NetworkEndpointGroup()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRegionNetworkEndpointGroupRequest()
+ request = compute.InsertRegionNetworkEndpointGroupRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.NetworkEndpointGroup
+ post.return_value = compute.Operation
- client.get(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1107,8 +1773,9 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRegionNetworkEndpointGroupRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.InsertRegionNetworkEndpointGroupRequest,
):
client = RegionNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1116,10 +1783,34 @@ def test_get_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "region": "sample2",
- "network_endpoint_group": "sample3",
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["network_endpoint_group_resource"] = {
+ "annotations": {},
+ "app_engine": {
+ "service": "service_value",
+ "url_mask": "url_mask_value",
+ "version": "version_value",
+ },
+ "cloud_function": {"function": "function_value", "url_mask": "url_mask_value"},
+ "cloud_run": {
+ "service": "service_value",
+ "tag": "tag_value",
+ "url_mask": "url_mask_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "default_port": 1289,
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "network_endpoint_type": "network_endpoint_type_value",
+ "psc_target_service": "psc_target_service_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "size": 443,
+ "subnetwork": "subnetwork_value",
+ "zone": "zone_value",
}
request = request_type(request_init)
@@ -1132,10 +1823,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.insert(request)
-def test_get_rest_flattened():
+def test_insert_rest_flattened():
client = RegionNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1144,45 +1835,43 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NetworkEndpointGroup()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "region": "sample2",
- "network_endpoint_group": "sample3",
- }
+ sample_request = {"project": "sample1", "region": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- network_endpoint_group="network_endpoint_group_value",
+ network_endpoint_group_resource=compute.NetworkEndpointGroup(
+ annotations={"key_value": "value_value"}
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NetworkEndpointGroup.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/networkEndpointGroups/{network_endpoint_group}"
+ "%s/compute/v1/projects/{project}/regions/{region}/networkEndpointGroups"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1191,15 +1880,17 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRegionNetworkEndpointGroupRequest(),
+ client.insert(
+ compute.InsertRegionNetworkEndpointGroupRequest(),
project="project_value",
region="region_value",
- network_endpoint_group="network_endpoint_group_value",
+ network_endpoint_group_resource=compute.NetworkEndpointGroup(
+ annotations={"key_value": "value_value"}
+ ),
)
-def test_get_rest_error():
+def test_insert_rest_error():
client = RegionNetworkEndpointGroupsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1288,28 +1979,6 @@ def test_insert_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_insert_unary_rest_required_fields(
@@ -2008,6 +2677,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionNetworkEndpointGroupsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_network_endpoint_groups_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2042,6 +2724,14 @@ def test_region_network_endpoint_groups_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_network_endpoint_groups_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_network_firewall_policies.py b/tests/unit/gapic/compute_v1/test_region_network_firewall_policies.py
index 8a793d00c..9ccf89e2b 100644
--- a/tests/unit/gapic/compute_v1/test_region_network_firewall_policies.py
+++ b/tests/unit/gapic/compute_v1/test_region_network_firewall_policies.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -565,7 +567,7 @@ def test_region_network_firewall_policies_client_client_options_credentials_file
dict,
],
)
-def test_add_association_unary_rest(request_type):
+def test_add_association_rest(request_type):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -620,10 +622,10 @@ def test_add_association_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_association_unary(request)
+ response = client.add_association(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -648,7 +650,7 @@ def test_add_association_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_add_association_unary_rest_required_fields(
+def test_add_association_rest_required_fields(
request_type=compute.AddAssociationRegionNetworkFirewallPolicyRequest,
):
transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
@@ -727,14 +729,14 @@ def test_add_association_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_association_unary(request)
+ response = client.add_association(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_add_association_unary_rest_unset_required_fields():
+def test_add_association_rest_unset_required_fields():
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -759,7 +761,7 @@ def test_add_association_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_association_unary_rest_interceptors(null_interceptor):
+def test_add_association_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -799,7 +801,7 @@ def test_add_association_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_association_unary(
+ client.add_association(
request,
metadata=[
("key", "val"),
@@ -811,7 +813,7 @@ def test_add_association_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_association_unary_rest_bad_request(
+def test_add_association_rest_bad_request(
transport: str = "rest",
request_type=compute.AddAssociationRegionNetworkFirewallPolicyRequest,
):
@@ -844,10 +846,10 @@ def test_add_association_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_association_unary(request)
+ client.add_association(request)
-def test_add_association_unary_rest_flattened():
+def test_add_association_rest_flattened():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -884,7 +886,7 @@ def test_add_association_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_association_unary(**mock_args)
+ client.add_association(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -897,7 +899,7 @@ def test_add_association_unary_rest_flattened():
)
-def test_add_association_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_association_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -906,7 +908,7 @@ def test_add_association_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_association_unary(
+ client.add_association(
compute.AddAssociationRegionNetworkFirewallPolicyRequest(),
project="project_value",
region="region_value",
@@ -917,7 +919,7 @@ def test_add_association_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_add_association_unary_rest_error():
+def test_add_association_rest_error():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -926,11 +928,11 @@ def test_add_association_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.AddRuleRegionNetworkFirewallPolicyRequest,
+ compute.AddAssociationRegionNetworkFirewallPolicyRequest,
dict,
],
)
-def test_add_rule_unary_rest(request_type):
+def test_add_association_unary_rest(request_type):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -942,33 +944,12 @@ def test_add_rule_unary_rest(request_type):
"region": "sample2",
"firewall_policy": "sample3",
}
- request_init["firewall_policy_rule_resource"] = {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": ["target_resources_value_1", "target_resources_value_2"],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
+ request_init["firewall_policy_association_resource"] = {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
}
request = request_type(request_init)
@@ -1006,36 +987,14 @@ def test_add_rule_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_rule_unary(request)
+ response = client.add_association_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_add_rule_unary_rest_required_fields(
- request_type=compute.AddRuleRegionNetworkFirewallPolicyRequest,
+def test_add_association_unary_rest_required_fields(
+ request_type=compute.AddAssociationRegionNetworkFirewallPolicyRequest,
):
transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
@@ -1054,7 +1013,7 @@ def test_add_rule_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).add_rule._get_unset_required_fields(jsonified_request)
+ ).add_association._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1065,12 +1024,11 @@ def test_add_rule_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).add_rule._get_unset_required_fields(jsonified_request)
+ ).add_association._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "max_priority",
- "min_priority",
+ "replace_existing_association",
"request_id",
)
)
@@ -1114,31 +1072,30 @@ def test_add_rule_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_rule_unary(request)
+ response = client.add_association_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_add_rule_unary_rest_unset_required_fields():
+def test_add_association_unary_rest_unset_required_fields():
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.add_rule._get_unset_required_fields({})
+ unset_fields = transport.add_association._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
- "maxPriority",
- "minPriority",
+ "replaceExistingAssociation",
"requestId",
)
)
& set(
(
"firewallPolicy",
- "firewallPolicyRuleResource",
+ "firewallPolicyAssociationResource",
"project",
"region",
)
@@ -1147,7 +1104,7 @@ def test_add_rule_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_rule_unary_rest_interceptors(null_interceptor):
+def test_add_association_unary_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1160,9 +1117,9 @@ def test_add_rule_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_add_rule"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_add_association"
) as post, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_add_rule"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_add_association"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1179,7 +1136,7 @@ def test_add_rule_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.AddRuleRegionNetworkFirewallPolicyRequest()
+ request = compute.AddAssociationRegionNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1187,7 +1144,7 @@ def test_add_rule_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_rule_unary(
+ client.add_association_unary(
request,
metadata=[
("key", "val"),
@@ -1199,9 +1156,9 @@ def test_add_rule_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_rule_unary_rest_bad_request(
+def test_add_association_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.AddRuleRegionNetworkFirewallPolicyRequest,
+ request_type=compute.AddAssociationRegionNetworkFirewallPolicyRequest,
):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1214,33 +1171,12 @@ def test_add_rule_unary_rest_bad_request(
"region": "sample2",
"firewall_policy": "sample3",
}
- request_init["firewall_policy_rule_resource"] = {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": ["target_resources_value_1", "target_resources_value_2"],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
+ request_init["firewall_policy_association_resource"] = {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
}
request = request_type(request_init)
@@ -1253,10 +1189,10 @@ def test_add_rule_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_rule_unary(request)
+ client.add_association_unary(request)
-def test_add_rule_unary_rest_flattened():
+def test_add_association_unary_rest_flattened():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1279,8 +1215,8 @@ def test_add_rule_unary_rest_flattened():
project="project_value",
region="region_value",
firewall_policy="firewall_policy_value",
- firewall_policy_rule_resource=compute.FirewallPolicyRule(
- action="action_value"
+ firewall_policy_association_resource=compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
),
)
mock_args.update(sample_request)
@@ -1293,20 +1229,20 @@ def test_add_rule_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_rule_unary(**mock_args)
+ client.add_association_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/addRule"
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/addAssociation"
% client.transport._host,
args[1],
)
-def test_add_rule_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_association_unary_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1315,18 +1251,18 @@ def test_add_rule_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_rule_unary(
- compute.AddRuleRegionNetworkFirewallPolicyRequest(),
+ client.add_association_unary(
+ compute.AddAssociationRegionNetworkFirewallPolicyRequest(),
project="project_value",
region="region_value",
firewall_policy="firewall_policy_value",
- firewall_policy_rule_resource=compute.FirewallPolicyRule(
- action="action_value"
+ firewall_policy_association_resource=compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
),
)
-def test_add_rule_unary_rest_error():
+def test_add_association_unary_rest_error():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1335,11 +1271,11 @@ def test_add_rule_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.CloneRulesRegionNetworkFirewallPolicyRequest,
+ compute.AddRuleRegionNetworkFirewallPolicyRequest,
dict,
],
)
-def test_clone_rules_unary_rest(request_type):
+def test_add_rule_rest(request_type):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1351,6 +1287,34 @@ def test_clone_rules_unary_rest(request_type):
"region": "sample2",
"firewall_policy": "sample3",
}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1387,10 +1351,10 @@ def test_clone_rules_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.clone_rules_unary(request)
+ response = client.add_rule(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -1415,8 +1379,8 @@ def test_clone_rules_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_clone_rules_unary_rest_required_fields(
- request_type=compute.CloneRulesRegionNetworkFirewallPolicyRequest,
+def test_add_rule_rest_required_fields(
+ request_type=compute.AddRuleRegionNetworkFirewallPolicyRequest,
):
transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
@@ -1435,7 +1399,7 @@ def test_clone_rules_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).clone_rules._get_unset_required_fields(jsonified_request)
+ ).add_rule._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1446,12 +1410,13 @@ def test_clone_rules_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).clone_rules._get_unset_required_fields(jsonified_request)
+ ).add_rule._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
+ "max_priority",
+ "min_priority",
"request_id",
- "source_firewall_policy",
)
)
jsonified_request.update(unset_fields)
@@ -1485,6 +1450,7 @@ def test_clone_rules_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1493,29 +1459,31 @@ def test_clone_rules_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.clone_rules_unary(request)
+ response = client.add_rule(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_clone_rules_unary_rest_unset_required_fields():
+def test_add_rule_rest_unset_required_fields():
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.clone_rules._get_unset_required_fields({})
+ unset_fields = transport.add_rule._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
+ "maxPriority",
+ "minPriority",
"requestId",
- "sourceFirewallPolicy",
)
)
& set(
(
"firewallPolicy",
+ "firewallPolicyRuleResource",
"project",
"region",
)
@@ -1524,7 +1492,7 @@ def test_clone_rules_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_clone_rules_unary_rest_interceptors(null_interceptor):
+def test_add_rule_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1537,9 +1505,9 @@ def test_clone_rules_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_clone_rules"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_add_rule"
) as post, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_clone_rules"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_add_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1556,7 +1524,7 @@ def test_clone_rules_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.CloneRulesRegionNetworkFirewallPolicyRequest()
+ request = compute.AddRuleRegionNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1564,7 +1532,7 @@ def test_clone_rules_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.clone_rules_unary(
+ client.add_rule(
request,
metadata=[
("key", "val"),
@@ -1576,9 +1544,9 @@ def test_clone_rules_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_clone_rules_unary_rest_bad_request(
+def test_add_rule_rest_bad_request(
transport: str = "rest",
- request_type=compute.CloneRulesRegionNetworkFirewallPolicyRequest,
+ request_type=compute.AddRuleRegionNetworkFirewallPolicyRequest,
):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1591,30 +1559,58 @@ def test_clone_rules_unary_rest_bad_request(
"region": "sample2",
"firewall_policy": "sample3",
}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a BadRequest error.
- with mock.patch.object(Session, "request") as req, pytest.raises(
- core_exceptions.BadRequest
- ):
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 400
- response_value.request = Request()
- req.return_value = response_value
- client.clone_rules_unary(request)
-
-
-def test_clone_rules_unary_rest_flattened():
- client = RegionNetworkFirewallPoliciesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport="rest",
- )
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.add_rule(request)
+
+
+def test_add_rule_rest_flattened():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1628,6 +1624,9 @@ def test_clone_rules_unary_rest_flattened():
project="project_value",
region="region_value",
firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
mock_args.update(sample_request)
@@ -1639,20 +1638,20 @@ def test_clone_rules_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.clone_rules_unary(**mock_args)
+ client.add_rule(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/cloneRules"
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/addRule"
% client.transport._host,
args[1],
)
-def test_clone_rules_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_rule_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1661,15 +1660,18 @@ def test_clone_rules_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.clone_rules_unary(
- compute.CloneRulesRegionNetworkFirewallPolicyRequest(),
+ client.add_rule(
+ compute.AddRuleRegionNetworkFirewallPolicyRequest(),
project="project_value",
region="region_value",
firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
-def test_clone_rules_unary_rest_error():
+def test_add_rule_rest_error():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1678,11 +1680,11 @@ def test_clone_rules_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteRegionNetworkFirewallPolicyRequest,
+ compute.AddRuleRegionNetworkFirewallPolicyRequest,
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_add_rule_unary_rest(request_type):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1694,6 +1696,34 @@ def test_delete_unary_rest(request_type):
"region": "sample2",
"firewall_policy": "sample3",
}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1730,36 +1760,14 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.add_rule_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteRegionNetworkFirewallPolicyRequest,
+def test_add_rule_unary_rest_required_fields(
+ request_type=compute.AddRuleRegionNetworkFirewallPolicyRequest,
):
transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
@@ -1778,7 +1786,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).add_rule._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1789,9 +1797,15 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).add_rule._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "max_priority",
+ "min_priority",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1820,9 +1834,10 @@ def test_delete_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1831,24 +1846,31 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.add_rule_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_add_rule_unary_rest_unset_required_fields():
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.add_rule._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "maxPriority",
+ "minPriority",
+ "requestId",
+ )
+ )
& set(
(
"firewallPolicy",
+ "firewallPolicyRuleResource",
"project",
"region",
)
@@ -1857,7 +1879,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_add_rule_unary_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1870,9 +1892,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_delete"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_add_rule"
) as post, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_delete"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_add_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1889,7 +1911,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.DeleteRegionNetworkFirewallPolicyRequest()
+ request = compute.AddRuleRegionNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1897,7 +1919,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.add_rule_unary(
request,
metadata=[
("key", "val"),
@@ -1909,9 +1931,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_add_rule_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.DeleteRegionNetworkFirewallPolicyRequest,
+ request_type=compute.AddRuleRegionNetworkFirewallPolicyRequest,
):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1924,6 +1946,34 @@ def test_delete_unary_rest_bad_request(
"region": "sample2",
"firewall_policy": "sample3",
}
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1935,10 +1985,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.add_rule_unary(request)
-def test_delete_unary_rest_flattened():
+def test_add_rule_unary_rest_flattened():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1961,6 +2011,9 @@ def test_delete_unary_rest_flattened():
project="project_value",
region="region_value",
firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
mock_args.update(sample_request)
@@ -1972,20 +2025,20 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.add_rule_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}"
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/addRule"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_rule_unary_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1994,15 +2047,18 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteRegionNetworkFirewallPolicyRequest(),
+ client.add_rule_unary(
+ compute.AddRuleRegionNetworkFirewallPolicyRequest(),
project="project_value",
region="region_value",
firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
-def test_delete_unary_rest_error():
+def test_add_rule_unary_rest_error():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2011,11 +2067,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRegionNetworkFirewallPolicyRequest,
+ compute.CloneRulesRegionNetworkFirewallPolicyRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_clone_rules_rest(request_type):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2032,49 +2088,67 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicy(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- display_name="display_name_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- parent="parent_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
- rule_tuple_count=1737,
self_link="self_link_value",
- self_link_with_id="self_link_with_id_value",
- short_name="short_name_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.clone_rules(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.FirewallPolicy)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.display_name == "display_name_value"
- assert response.fingerprint == "fingerprint_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.parent == "parent_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
assert response.region == "region_value"
- assert response.rule_tuple_count == 1737
assert response.self_link == "self_link_value"
- assert response.self_link_with_id == "self_link_with_id_value"
- assert response.short_name == "short_name_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_rest_required_fields(
- request_type=compute.GetRegionNetworkFirewallPolicyRequest,
+def test_clone_rules_rest_required_fields(
+ request_type=compute.CloneRulesRegionNetworkFirewallPolicyRequest,
):
transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
@@ -2093,7 +2167,7 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).clone_rules._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2104,7 +2178,14 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).clone_rules._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "source_firewall_policy",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2122,7 +2203,7 @@ def test_get_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2133,32 +2214,37 @@ def test_get_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.clone_rules(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_clone_rules_rest_unset_required_fields():
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.clone_rules._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(
+ (
+ "requestId",
+ "sourceFirewallPolicy",
+ )
+ )
& set(
(
"firewallPolicy",
@@ -2170,7 +2256,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_clone_rules_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2183,9 +2269,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_clone_rules"
) as post, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_clone_rules"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2200,19 +2286,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.FirewallPolicy.to_json(
- compute.FirewallPolicy()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRegionNetworkFirewallPolicyRequest()
+ request = compute.CloneRulesRegionNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.FirewallPolicy
+ post.return_value = compute.Operation
- client.get(
+ client.clone_rules(
request,
metadata=[
("key", "val"),
@@ -2224,8 +2308,9 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRegionNetworkFirewallPolicyRequest
+def test_clone_rules_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.CloneRulesRegionNetworkFirewallPolicyRequest,
):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2249,10 +2334,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.clone_rules(request)
-def test_get_rest_flattened():
+def test_clone_rules_rest_flattened():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2261,7 +2346,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -2281,25 +2366,25 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.clone_rules(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}"
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/cloneRules"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_clone_rules_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2308,15 +2393,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRegionNetworkFirewallPolicyRequest(),
+ client.clone_rules(
+ compute.CloneRulesRegionNetworkFirewallPolicyRequest(),
project="project_value",
region="region_value",
firewall_policy="firewall_policy_value",
)
-def test_get_rest_error():
+def test_clone_rules_rest_error():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2325,11 +2410,11 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetAssociationRegionNetworkFirewallPolicyRequest,
+ compute.CloneRulesRegionNetworkFirewallPolicyRequest,
dict,
],
)
-def test_get_association_rest(request_type):
+def test_clone_rules_unary_rest(request_type):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2346,33 +2431,45 @@ def test_get_association_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyAssociation(
- attachment_target="attachment_target_value",
- display_name="display_name_value",
- firewall_policy_id="firewall_policy_id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
name="name_value",
- short_name="short_name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_association(request)
+ response = client.clone_rules_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.FirewallPolicyAssociation)
- assert response.attachment_target == "attachment_target_value"
- assert response.display_name == "display_name_value"
- assert response.firewall_policy_id == "firewall_policy_id_value"
- assert response.name == "name_value"
- assert response.short_name == "short_name_value"
+ assert isinstance(response, compute.Operation)
-def test_get_association_rest_required_fields(
- request_type=compute.GetAssociationRegionNetworkFirewallPolicyRequest,
+def test_clone_rules_unary_rest_required_fields(
+ request_type=compute.CloneRulesRegionNetworkFirewallPolicyRequest,
):
transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
@@ -2391,7 +2488,7 @@ def test_get_association_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_association._get_unset_required_fields(jsonified_request)
+ ).clone_rules._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2402,9 +2499,14 @@ def test_get_association_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_association._get_unset_required_fields(jsonified_request)
+ ).clone_rules._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("name",))
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "source_firewall_policy",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2422,7 +2524,7 @@ def test_get_association_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyAssociation()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2433,32 +2535,37 @@ def test_get_association_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_association(request)
+ response = client.clone_rules_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_association_rest_unset_required_fields():
+def test_clone_rules_unary_rest_unset_required_fields():
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_association._get_unset_required_fields({})
+ unset_fields = transport.clone_rules._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("name",))
+ set(
+ (
+ "requestId",
+ "sourceFirewallPolicy",
+ )
+ )
& set(
(
"firewallPolicy",
@@ -2470,7 +2577,7 @@ def test_get_association_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_association_rest_interceptors(null_interceptor):
+def test_clone_rules_unary_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2483,9 +2590,9 @@ def test_get_association_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get_association"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_clone_rules"
) as post, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get_association"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_clone_rules"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2500,19 +2607,17 @@ def test_get_association_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.FirewallPolicyAssociation.to_json(
- compute.FirewallPolicyAssociation()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetAssociationRegionNetworkFirewallPolicyRequest()
+ request = compute.CloneRulesRegionNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.FirewallPolicyAssociation
+ post.return_value = compute.Operation
- client.get_association(
+ client.clone_rules_unary(
request,
metadata=[
("key", "val"),
@@ -2524,9 +2629,9 @@ def test_get_association_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_association_rest_bad_request(
+def test_clone_rules_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.GetAssociationRegionNetworkFirewallPolicyRequest,
+ request_type=compute.CloneRulesRegionNetworkFirewallPolicyRequest,
):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2550,10 +2655,10 @@ def test_get_association_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_association(request)
+ client.clone_rules_unary(request)
-def test_get_association_rest_flattened():
+def test_clone_rules_unary_rest_flattened():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2562,7 +2667,7 @@ def test_get_association_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyAssociation()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -2582,25 +2687,25 @@ def test_get_association_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_association(**mock_args)
+ client.clone_rules_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/getAssociation"
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/cloneRules"
% client.transport._host,
args[1],
)
-def test_get_association_rest_flattened_error(transport: str = "rest"):
+def test_clone_rules_unary_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2609,15 +2714,15 @@ def test_get_association_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_association(
- compute.GetAssociationRegionNetworkFirewallPolicyRequest(),
+ client.clone_rules_unary(
+ compute.CloneRulesRegionNetworkFirewallPolicyRequest(),
project="project_value",
region="region_value",
firewall_policy="firewall_policy_value",
)
-def test_get_association_rest_error():
+def test_clone_rules_unary_rest_error():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2626,87 +2731,125 @@ def test_get_association_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest,
+ compute.DeleteRegionNetworkFirewallPolicyRequest,
dict,
],
)
-def test_get_effective_firewalls_rest(request_type):
+def test_delete_rest(request_type):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = (
- compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse()
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_effective_firewalls(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(
- response, compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse
- )
-
-
-def test_get_effective_firewalls_rest_required_fields(
- request_type=compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest,
-):
- transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
-
- request_init = {}
- request_init["network"] = ""
- request_init["project"] = ""
- request_init["region"] = ""
- request = request_type(request_init)
- jsonified_request = json.loads(
- request_type.to_json(
- request, including_default_value_fields=False, use_integers_for_enums=False
- )
- )
-
- # verify fields with default values are dropped
- assert "network" not in jsonified_request
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_delete_rest_required_fields(
+ request_type=compute.DeleteRegionNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_effective_firewalls._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- assert "network" in jsonified_request
- assert jsonified_request["network"] == request_init["network"]
- jsonified_request["network"] = "network_value"
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_effective_firewalls._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("network",))
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "network" in jsonified_request
- assert jsonified_request["network"] == "network_value"
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -2719,7 +2862,7 @@ def test_get_effective_firewalls_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2730,42 +2873,35 @@ def test_get_effective_firewalls_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_effective_firewalls(request)
+ response = client.delete(request)
- expected_params = [
- (
- "network",
- "",
- ),
- ]
+ expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_effective_firewalls_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_effective_firewalls._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("network",))
+ set(("requestId",))
& set(
(
- "network",
+ "firewallPolicy",
"project",
"region",
)
@@ -2774,7 +2910,7 @@ def test_get_effective_firewalls_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_effective_firewalls_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2787,11 +2923,9 @@ def test_get_effective_firewalls_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor,
- "post_get_effective_firewalls",
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor,
- "pre_get_effective_firewalls",
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2806,23 +2940,17 @@ def test_get_effective_firewalls_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = (
- compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.to_json(
- compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse()
- )
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest()
+ request = compute.DeleteRegionNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = (
- compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse
- )
+ post.return_value = compute.Operation
- client.get_effective_firewalls(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -2834,9 +2962,9 @@ def test_get_effective_firewalls_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_effective_firewalls_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest",
- request_type=compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest,
+ request_type=compute.DeleteRegionNetworkFirewallPolicyRequest,
):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2844,7 +2972,11 @@ def test_get_effective_firewalls_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2856,10 +2988,10 @@ def test_get_effective_firewalls_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_effective_firewalls(request)
+ client.delete(request)
-def test_get_effective_firewalls_rest_flattened():
+def test_delete_rest_flattened():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2868,47 +3000,45 @@ def test_get_effective_firewalls_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = (
- compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse()
- )
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- network="network_value",
+ firewall_policy="firewall_policy_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_effective_firewalls(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/getEffectiveFirewalls"
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}"
% client.transport._host,
args[1],
)
-def test_get_effective_firewalls_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2917,15 +3047,15 @@ def test_get_effective_firewalls_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_effective_firewalls(
- compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest(),
+ client.delete(
+ compute.DeleteRegionNetworkFirewallPolicyRequest(),
project="project_value",
region="region_value",
- network="network_value",
+ firewall_policy="firewall_policy_value",
)
-def test_get_effective_firewalls_rest_error():
+def test_delete_rest_error():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2934,53 +3064,73 @@ def test_get_effective_firewalls_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicyRegionNetworkFirewallPolicyRequest,
+ compute.DeleteRegionNetworkFirewallPolicyRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_delete_unary_rest(request_type):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, compute.Operation)
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicyRegionNetworkFirewallPolicyRequest,
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteRegionNetworkFirewallPolicyRequest,
):
transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
request_init = {}
+ request_init["firewall_policy"] = ""
request_init["project"] = ""
request_init["region"] = ""
- request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2992,29 +3142,29 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
- jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3023,7 +3173,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3034,44 +3184,44 @@ def test_get_iam_policy_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
+ set(("requestId",))
& set(
(
+ "firewallPolicy",
"project",
"region",
- "resource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3084,9 +3234,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get_iam_policy"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get_iam_policy"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3101,17 +3251,17 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetIamPolicyRegionNetworkFirewallPolicyRequest()
+ request = compute.DeleteRegionNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.get_iam_policy(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -3123,9 +3273,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
+def test_delete_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.GetIamPolicyRegionNetworkFirewallPolicyRequest,
+ request_type=compute.DeleteRegionNetworkFirewallPolicyRequest,
):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3133,7 +3283,11 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3145,10 +3299,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.delete_unary(request)
-def test_get_iam_policy_rest_flattened():
+def test_delete_unary_rest_flattened():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3157,45 +3311,45 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
"project": "sample1",
"region": "sample2",
- "resource": "sample3",
+ "firewall_policy": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- resource="resource_value",
+ firewall_policy="firewall_policy_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{resource}/getIamPolicy"
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3204,15 +3358,15 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicyRegionNetworkFirewallPolicyRequest(),
+ client.delete_unary(
+ compute.DeleteRegionNetworkFirewallPolicyRequest(),
project="project_value",
region="region_value",
- resource="resource_value",
+ firewall_policy="firewall_policy_value",
)
-def test_get_iam_policy_rest_error():
+def test_delete_unary_rest_error():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3221,11 +3375,11 @@ def test_get_iam_policy_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRuleRegionNetworkFirewallPolicyRequest,
+ compute.GetRegionNetworkFirewallPolicyRequest,
dict,
],
)
-def test_get_rule_rest(request_type):
+def test_get_rest(request_type):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3242,45 +3396,49 @@ def test_get_rule_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyRule(
- action="action_value",
+ return_value = compute.FirewallPolicy(
+ creation_timestamp="creation_timestamp_value",
description="description_value",
- direction="direction_value",
- disabled=True,
- enable_logging=True,
+ display_name="display_name_value",
+ fingerprint="fingerprint_value",
+ id=205,
kind="kind_value",
- priority=898,
- rule_name="rule_name_value",
+ name="name_value",
+ parent="parent_value",
+ region="region_value",
rule_tuple_count=1737,
- target_resources=["target_resources_value"],
- target_service_accounts=["target_service_accounts_value"],
+ self_link="self_link_value",
+ self_link_with_id="self_link_with_id_value",
+ short_name="short_name_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+ json_return_value = compute.FirewallPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_rule(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.FirewallPolicyRule)
- assert response.action == "action_value"
+ assert isinstance(response, compute.FirewallPolicy)
+ assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.direction == "direction_value"
- assert response.disabled is True
- assert response.enable_logging is True
+ assert response.display_name == "display_name_value"
+ assert response.fingerprint == "fingerprint_value"
+ assert response.id == 205
assert response.kind == "kind_value"
- assert response.priority == 898
- assert response.rule_name == "rule_name_value"
+ assert response.name == "name_value"
+ assert response.parent == "parent_value"
+ assert response.region == "region_value"
assert response.rule_tuple_count == 1737
- assert response.target_resources == ["target_resources_value"]
- assert response.target_service_accounts == ["target_service_accounts_value"]
+ assert response.self_link == "self_link_value"
+ assert response.self_link_with_id == "self_link_with_id_value"
+ assert response.short_name == "short_name_value"
-def test_get_rule_rest_required_fields(
- request_type=compute.GetRuleRegionNetworkFirewallPolicyRequest,
+def test_get_rest_required_fields(
+ request_type=compute.GetRegionNetworkFirewallPolicyRequest,
):
transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
@@ -3299,7 +3457,7 @@ def test_get_rule_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_rule._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3310,9 +3468,7 @@ def test_get_rule_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_rule._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("priority",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -3330,7 +3486,7 @@ def test_get_rule_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyRule()
+ return_value = compute.FirewallPolicy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3348,25 +3504,25 @@ def test_get_rule_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+ json_return_value = compute.FirewallPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_rule(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rule_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_rule._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("priority",))
+ set(())
& set(
(
"firewallPolicy",
@@ -3378,7 +3534,7 @@ def test_get_rule_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rule_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3391,9 +3547,9 @@ def test_get_rule_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get_rule"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get_rule"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3408,19 +3564,19 @@ def test_get_rule_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.FirewallPolicyRule.to_json(
- compute.FirewallPolicyRule()
+ req.return_value._content = compute.FirewallPolicy.to_json(
+ compute.FirewallPolicy()
)
- request = compute.GetRuleRegionNetworkFirewallPolicyRequest()
+ request = compute.GetRegionNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.FirewallPolicyRule
+ post.return_value = compute.FirewallPolicy
- client.get_rule(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -3432,9 +3588,8 @@ def test_get_rule_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rule_rest_bad_request(
- transport: str = "rest",
- request_type=compute.GetRuleRegionNetworkFirewallPolicyRequest,
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRegionNetworkFirewallPolicyRequest
):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3458,10 +3613,10 @@ def test_get_rule_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_rule(request)
+ client.get(request)
-def test_get_rule_rest_flattened():
+def test_get_rest_flattened():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3470,7 +3625,7 @@ def test_get_rule_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyRule()
+ return_value = compute.FirewallPolicy()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -3490,25 +3645,25 @@ def test_get_rule_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+ json_return_value = compute.FirewallPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_rule(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/getRule"
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}"
% client.transport._host,
args[1],
)
-def test_get_rule_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3517,15 +3672,15 @@ def test_get_rule_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_rule(
- compute.GetRuleRegionNetworkFirewallPolicyRequest(),
+ client.get(
+ compute.GetRegionNetworkFirewallPolicyRequest(),
project="project_value",
region="region_value",
firewall_policy="firewall_policy_value",
)
-def test_get_rule_rest_error():
+def test_get_rest_error():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3534,148 +3689,59 @@ def test_get_rule_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertRegionNetworkFirewallPolicyRequest,
+ compute.GetAssociationRegionNetworkFirewallPolicyRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_association_rest(request_type):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["firewall_policy_resource"] = {
- "associations": [
- {
- "attachment_target": "attachment_target_value",
- "display_name": "display_name_value",
- "firewall_policy_id": "firewall_policy_id_value",
- "name": "name_value",
- "short_name": "short_name_value",
- }
- ],
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "display_name": "display_name_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "parent": "parent_value",
- "region": "region_value",
- "rule_tuple_count": 1737,
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": [
- "dest_ip_ranges_value_1",
- "dest_ip_ranges_value_2",
- ],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": [
- "target_resources_value_1",
- "target_resources_value_2",
- ],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
- ],
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "short_name": "short_name_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
- kind="kind_value",
+ return_value = compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value",
+ display_name="display_name_value",
+ firewall_policy_id="firewall_policy_id_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
- self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ short_name="short_name_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get_association(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
+ assert isinstance(response, compute.FirewallPolicyAssociation)
+ assert response.attachment_target == "attachment_target_value"
+ assert response.display_name == "display_name_value"
+ assert response.firewall_policy_id == "firewall_policy_id_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.short_name == "short_name_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertRegionNetworkFirewallPolicyRequest,
+def test_get_association_rest_required_fields(
+ request_type=compute.GetAssociationRegionNetworkFirewallPolicyRequest,
):
transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
request_init = {}
+ request_init["firewall_policy"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -3689,22 +3755,25 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get_association._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get_association._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(("name",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -3717,7 +3786,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.FirewallPolicyAssociation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3728,36 +3797,35 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get_association(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_association_rest_unset_required_fields():
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get_association._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(("name",))
& set(
(
- "firewallPolicyResource",
+ "firewallPolicy",
"project",
"region",
)
@@ -3766,7 +3834,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_association_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3779,9 +3847,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_insert"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get_association"
) as post, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_insert"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get_association"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3796,17 +3864,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.FirewallPolicyAssociation.to_json(
+ compute.FirewallPolicyAssociation()
+ )
- request = compute.InsertRegionNetworkFirewallPolicyRequest()
+ request = compute.GetAssociationRegionNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.FirewallPolicyAssociation
- client.insert_unary(
+ client.get_association(
request,
metadata=[
("key", "val"),
@@ -3818,9 +3888,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
+def test_get_association_rest_bad_request(
transport: str = "rest",
- request_type=compute.InsertRegionNetworkFirewallPolicyRequest,
+ request_type=compute.GetAssociationRegionNetworkFirewallPolicyRequest,
):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3828,66 +3898,10 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["firewall_policy_resource"] = {
- "associations": [
- {
- "attachment_target": "attachment_target_value",
- "display_name": "display_name_value",
- "firewall_policy_id": "firewall_policy_id_value",
- "name": "name_value",
- "short_name": "short_name_value",
- }
- ],
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "display_name": "display_name_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "parent": "parent_value",
- "region": "region_value",
- "rule_tuple_count": 1737,
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": [
- "dest_ip_ranges_value_1",
- "dest_ip_ranges_value_2",
- ],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": [
- "target_resources_value_1",
- "target_resources_value_2",
- ],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
- ],
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "short_name": "short_name_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
}
request = request_type(request_init)
@@ -3900,10 +3914,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get_association(request)
-def test_insert_unary_rest_flattened():
+def test_get_association_rest_flattened():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3912,47 +3926,45 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.FirewallPolicyAssociation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- firewall_policy_resource=compute.FirewallPolicy(
- associations=[
- compute.FirewallPolicyAssociation(
- attachment_target="attachment_target_value"
- )
- ]
- ),
+ firewall_policy="firewall_policy_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.FirewallPolicyAssociation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get_association(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies"
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/getAssociation"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_association_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3961,21 +3973,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertRegionNetworkFirewallPolicyRequest(),
+ client.get_association(
+ compute.GetAssociationRegionNetworkFirewallPolicyRequest(),
project="project_value",
region="region_value",
- firewall_policy_resource=compute.FirewallPolicy(
- associations=[
- compute.FirewallPolicyAssociation(
- attachment_target="attachment_target_value"
- )
- ]
- ),
+ firewall_policy="firewall_policy_value",
)
-def test_insert_unary_rest_error():
+def test_get_association_rest_error():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3984,11 +3990,11 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListRegionNetworkFirewallPoliciesRequest,
+ compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_get_effective_firewalls_rest(request_type):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4001,33 +4007,35 @@ def test_list_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyList(
- id="id_value",
- kind="kind_value",
- next_page_token="next_page_token_value",
+ return_value = (
+ compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse()
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyList.to_json(return_value)
+ json_return_value = (
+ compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.to_json(
+ return_value
+ )
+ )
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get_effective_firewalls(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert isinstance(
+ response, compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse
+ )
-def test_list_rest_required_fields(
- request_type=compute.ListRegionNetworkFirewallPoliciesRequest,
+def test_get_effective_firewalls_rest_required_fields(
+ request_type=compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest,
):
transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
request_init = {}
+ request_init["network"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -4038,33 +4046,31 @@ def test_list_rest_required_fields(
)
# verify fields with default values are dropped
+ assert "network" not in jsonified_request
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).get_effective_firewalls._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
+ assert "network" in jsonified_request
+ assert jsonified_request["network"] == request_init["network"]
+ jsonified_request["network"] = "network_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).get_effective_firewalls._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("network",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
+ assert "network" in jsonified_request
+ assert jsonified_request["network"] == "network_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -4077,7 +4083,7 @@ def test_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyList()
+ return_value = compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -4095,35 +4101,35 @@ def test_list_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyList.to_json(return_value)
+ json_return_value = compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.to_json(
+ return_value
+ )
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get_effective_firewalls(request)
- expected_params = []
+ expected_params = [
+ (
+ "network",
+ "",
+ ),
+ ]
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_get_effective_firewalls_rest_unset_required_fields():
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.get_effective_firewalls._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("network",))
& set(
(
+ "network",
"project",
"region",
)
@@ -4132,7 +4138,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_get_effective_firewalls_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -4145,9 +4151,11 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_list"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor,
+ "post_get_effective_firewalls",
) as post, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_list"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor,
+ "pre_get_effective_firewalls",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4162,19 +4170,23 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.FirewallPolicyList.to_json(
- compute.FirewallPolicyList()
+ req.return_value._content = (
+ compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.to_json(
+ compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse()
+ )
)
- request = compute.ListRegionNetworkFirewallPoliciesRequest()
+ request = compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.FirewallPolicyList
+ post.return_value = (
+ compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse
+ )
- client.list(
+ client.get_effective_firewalls(
request,
metadata=[
("key", "val"),
@@ -4186,9 +4198,9 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
+def test_get_effective_firewalls_rest_bad_request(
transport: str = "rest",
- request_type=compute.ListRegionNetworkFirewallPoliciesRequest,
+ request_type=compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest,
):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4208,10 +4220,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.get_effective_firewalls(request)
-def test_list_rest_flattened():
+def test_get_effective_firewalls_rest_flattened():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4220,7 +4232,9 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.FirewallPolicyList()
+ return_value = (
+ compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse()
+ )
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "region": "sample2"}
@@ -4229,31 +4243,3568 @@ def test_list_rest_flattened():
mock_args = dict(
project="project_value",
region="region_value",
+ network="network_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.to_json(
+ return_value
+ )
+ )
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_effective_firewalls(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/getEffectiveFirewalls"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_effective_firewalls_rest_flattened_error(transport: str = "rest"):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_effective_firewalls(
+ compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest(),
+ project="project_value",
+ region="region_value",
+ network="network_value",
+ )
+
+
+def test_get_effective_firewalls_rest_error():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetIamPolicyRegionNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_get_iam_policy_rest(request_type):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicyRegionNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["resource"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["resource"] = "resource_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_iam_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_iam_policy_rest_unset_required_fields():
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("optionsRequestedPolicyVersion",))
+ & set(
+ (
+ "project",
+ "region",
+ "resource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_iam_policy_rest_interceptors(null_interceptor):
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionNetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = RegionNetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get_iam_policy"
+ ) as post, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get_iam_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
+
+ request = compute.GetIamPolicyRegionNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Policy
+
+ client.get_iam_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.GetIamPolicyRegionNetworkFirewallPolicyRequest,
+):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_iam_policy(request)
+
+
+def test_get_iam_policy_rest_flattened():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "resource": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ resource="resource_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_iam_policy(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{resource}/getIamPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_iam_policy(
+ compute.GetIamPolicyRegionNetworkFirewallPolicyRequest(),
+ project="project_value",
+ region="region_value",
+ resource="resource_value",
+ )
+
+
+def test_get_iam_policy_rest_error():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetRuleRegionNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_get_rule_rest(request_type):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyRule(
+ action="action_value",
+ description="description_value",
+ direction="direction_value",
+ disabled=True,
+ enable_logging=True,
+ kind="kind_value",
+ priority=898,
+ rule_name="rule_name_value",
+ rule_tuple_count=1737,
+ target_resources=["target_resources_value"],
+ target_service_accounts=["target_service_accounts_value"],
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_rule(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.FirewallPolicyRule)
+ assert response.action == "action_value"
+ assert response.description == "description_value"
+ assert response.direction == "direction_value"
+ assert response.disabled is True
+ assert response.enable_logging is True
+ assert response.kind == "kind_value"
+ assert response.priority == 898
+ assert response.rule_name == "rule_name_value"
+ assert response.rule_tuple_count == 1737
+ assert response.target_resources == ["target_resources_value"]
+ assert response.target_service_accounts == ["target_service_accounts_value"]
+
+
+def test_get_rule_rest_required_fields(
+ request_type=compute.GetRuleRegionNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_rule._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_rule._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("priority",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyRule()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_rule(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rule_rest_unset_required_fields():
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_rule._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("priority",))
+ & set(
+ (
+ "firewallPolicy",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rule_rest_interceptors(null_interceptor):
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionNetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = RegionNetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get_rule"
+ ) as post, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get_rule"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.FirewallPolicyRule.to_json(
+ compute.FirewallPolicyRule()
+ )
+
+ request = compute.GetRuleRegionNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.FirewallPolicyRule
+
+ client.get_rule(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rule_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.GetRuleRegionNetworkFirewallPolicyRequest,
+):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_rule(request)
+
+
+def test_get_rule_rest_flattened():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyRule()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ firewall_policy="firewall_policy_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyRule.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_rule(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/getRule"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rule_rest_flattened_error(transport: str = "rest"):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_rule(
+ compute.GetRuleRegionNetworkFirewallPolicyRequest(),
+ project="project_value",
+ region="region_value",
+ firewall_policy="firewall_policy_value",
+ )
+
+
+def test_get_rule_rest_error():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertRegionNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "firewallPolicyResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionNetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = RegionNetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.InsertRegionNetworkFirewallPolicyRequest,
+):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertRegionNetworkFirewallPolicyRequest(),
+ project="project_value",
+ region="region_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertRegionNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "firewallPolicyResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionNetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = RegionNetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.InsertRegionNetworkFirewallPolicyRequest,
+):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertRegionNetworkFirewallPolicyRequest(),
+ project="project_value",
+ region="region_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListRegionNetworkFirewallPoliciesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+
+
+def test_list_rest_required_fields(
+ request_type=compute.ListRegionNetworkFirewallPoliciesRequest,
+):
+ transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionNetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = RegionNetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.FirewallPolicyList.to_json(
+ compute.FirewallPolicyList()
+ )
+
+ request = compute.ListRegionNetworkFirewallPoliciesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.FirewallPolicyList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.ListRegionNetworkFirewallPoliciesRequest,
+):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.FirewallPolicyList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.FirewallPolicyList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListRegionNetworkFirewallPoliciesRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.FirewallPolicyList(
+ items=[
+ compute.FirewallPolicy(),
+ compute.FirewallPolicy(),
+ compute.FirewallPolicy(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.FirewallPolicyList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.FirewallPolicyList(
+ items=[
+ compute.FirewallPolicy(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.FirewallPolicyList(
+ items=[
+ compute.FirewallPolicy(),
+ compute.FirewallPolicy(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.FirewallPolicyList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.FirewallPolicy) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRegionNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(
+ request_type=compute.PatchRegionNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "firewallPolicy",
+ "firewallPolicyResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionNetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = RegionNetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchRegionNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.PatchRegionNetworkFirewallPolicyRequest,
+):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchRegionNetworkFirewallPolicyRequest(),
+ project="project_value",
+ region="region_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_patch_rest_error():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRegionNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchRegionNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_unary_rest_unset_required_fields():
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "firewallPolicy",
+ "firewallPolicyResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionNetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = RegionNetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchRegionNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.PatchRegionNetworkFirewallPolicyRequest,
+):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
+ request_init["firewall_policy_resource"] = {
+ "associations": [
+ {
+ "attachment_target": "attachment_target_value",
+ "display_name": "display_name_value",
+ "firewall_policy_id": "firewall_policy_id_value",
+ "name": "name_value",
+ "short_name": "short_name_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "display_name": "display_name_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "parent": "parent_value",
+ "region": "region_value",
+ "rule_tuple_count": 1737,
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": [
+ "dest_ip_ranges_value_1",
+ "dest_ip_ranges_value_2",
+ ],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": [
+ "target_resources_value_1",
+ "target_resources_value_2",
+ ],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ ],
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "short_name": "short_name_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_unary(request)
+
+
+def test_patch_unary_rest_flattened():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_unary(
+ compute.PatchRegionNetworkFirewallPolicyRequest(),
+ project="project_value",
+ region="region_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_resource=compute.FirewallPolicy(
+ associations=[
+ compute.FirewallPolicyAssociation(
+ attachment_target="attachment_target_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_patch_unary_rest_error():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRuleRegionNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_patch_rule_rest(request_type):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_rule(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rule_rest_required_fields(
+ request_type=compute.PatchRuleRegionNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_rule._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_rule._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "priority",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_rule(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rule_rest_unset_required_fields():
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch_rule._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "priority",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "firewallPolicy",
+ "firewallPolicyRuleResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rule_rest_interceptors(null_interceptor):
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionNetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = RegionNetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_patch_rule"
+ ) as post, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_patch_rule"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchRuleRegionNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_rule(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rule_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.PatchRuleRegionNetworkFirewallPolicyRequest,
+):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_rule(request)
+
+
+def test_patch_rule_rest_flattened():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_rule(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchRule"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rule_rest_flattened_error(transport: str = "rest"):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_rule(
+ compute.PatchRuleRegionNetworkFirewallPolicyRequest(),
+ project="project_value",
+ region="region_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
+ )
+
+
+def test_patch_rule_rest_error():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRuleRegionNetworkFirewallPolicyRequest,
+ dict,
+ ],
+)
+def test_patch_rule_unary_rest(request_type):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_rule_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_rule_unary_rest_required_fields(
+ request_type=compute.PatchRuleRegionNetworkFirewallPolicyRequest,
+):
+ transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
+
+ request_init = {}
+ request_init["firewall_policy"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_rule._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["firewallPolicy"] = "firewall_policy_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_rule._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "priority",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "firewallPolicy" in jsonified_request
+ assert jsonified_request["firewallPolicy"] == "firewall_policy_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_rule_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rule_unary_rest_unset_required_fields():
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch_rule._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "priority",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "firewallPolicy",
+ "firewallPolicyRuleResource",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rule_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionNetworkFirewallPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionNetworkFirewallPoliciesRestInterceptor(),
+ )
+ client = RegionNetworkFirewallPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_patch_rule"
+ ) as post, mock.patch.object(
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_patch_rule"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchRuleRegionNetworkFirewallPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_rule_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rule_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.PatchRuleRegionNetworkFirewallPolicyRequest,
+):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
+ request_init["firewall_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "direction": "direction_value",
+ "disabled": True,
+ "enable_logging": True,
+ "kind": "kind_value",
+ "match": {
+ "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
+ "layer4_configs": [
+ {
+ "ip_protocol": "ip_protocol_value",
+ "ports": ["ports_value_1", "ports_value_2"],
+ }
+ ],
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
+ "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
+ },
+ "priority": 898,
+ "rule_name": "rule_name_value",
+ "rule_tuple_count": 1737,
+ "target_resources": ["target_resources_value_1", "target_resources_value_2"],
+ "target_secure_tags": {},
+ "target_service_accounts": [
+ "target_service_accounts_value_1",
+ "target_service_accounts_value_2",
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_rule_unary(request)
+
+
+def test_patch_rule_unary_rest_flattened():
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.FirewallPolicyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch_rule_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies"
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchRule"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4262,82 +7813,31 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListRegionNetworkFirewallPoliciesRequest(),
+ client.patch_rule_unary(
+ compute.PatchRuleRegionNetworkFirewallPolicyRequest(),
project="project_value",
region="region_value",
+ firewall_policy="firewall_policy_value",
+ firewall_policy_rule_resource=compute.FirewallPolicyRule(
+ action="action_value"
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_rule_unary_rest_error():
client = RegionNetworkFirewallPoliciesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.FirewallPolicyList(
- items=[
- compute.FirewallPolicy(),
- compute.FirewallPolicy(),
- compute.FirewallPolicy(),
- ],
- next_page_token="abc",
- ),
- compute.FirewallPolicyList(
- items=[],
- next_page_token="def",
- ),
- compute.FirewallPolicyList(
- items=[
- compute.FirewallPolicy(),
- ],
- next_page_token="ghi",
- ),
- compute.FirewallPolicyList(
- items=[
- compute.FirewallPolicy(),
- compute.FirewallPolicy(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.FirewallPolicyList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.FirewallPolicy) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchRegionNetworkFirewallPolicyRequest,
+ compute.RemoveAssociationRegionNetworkFirewallPolicyRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_remove_association_rest(request_type):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4349,66 +7849,6 @@ def test_patch_unary_rest(request_type):
"region": "sample2",
"firewall_policy": "sample3",
}
- request_init["firewall_policy_resource"] = {
- "associations": [
- {
- "attachment_target": "attachment_target_value",
- "display_name": "display_name_value",
- "firewall_policy_id": "firewall_policy_id_value",
- "name": "name_value",
- "short_name": "short_name_value",
- }
- ],
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "display_name": "display_name_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "parent": "parent_value",
- "region": "region_value",
- "rule_tuple_count": 1737,
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": [
- "dest_ip_ranges_value_1",
- "dest_ip_ranges_value_2",
- ],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": [
- "target_resources_value_1",
- "target_resources_value_2",
- ],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
- ],
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "short_name": "short_name_value",
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -4445,10 +7885,10 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.remove_association(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -4473,8 +7913,8 @@ def test_patch_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchRegionNetworkFirewallPolicyRequest,
+def test_remove_association_rest_required_fields(
+ request_type=compute.RemoveAssociationRegionNetworkFirewallPolicyRequest,
):
transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
@@ -4493,7 +7933,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).remove_association._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4504,9 +7944,14 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).remove_association._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "name",
+ "request_id",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -4535,10 +7980,9 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -4547,25 +7991,29 @@ def test_patch_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.remove_association(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_remove_association_rest_unset_required_fields():
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.remove_association._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(
+ (
+ "name",
+ "requestId",
+ )
+ )
& set(
(
"firewallPolicy",
- "firewallPolicyResource",
"project",
"region",
)
@@ -4574,7 +8022,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_remove_association_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -4587,9 +8035,11 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_patch"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor,
+ "post_remove_association",
) as post, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_patch"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor,
+ "pre_remove_association",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -4606,7 +8056,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchRegionNetworkFirewallPolicyRequest()
+ request = compute.RemoveAssociationRegionNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -4614,7 +8064,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.remove_association(
request,
metadata=[
("key", "val"),
@@ -4626,80 +8076,20 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
+def test_remove_association_rest_bad_request(
transport: str = "rest",
- request_type=compute.PatchRegionNetworkFirewallPolicyRequest,
-):
- client = RegionNetworkFirewallPoliciesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
- )
-
- # send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "region": "sample2",
- "firewall_policy": "sample3",
- }
- request_init["firewall_policy_resource"] = {
- "associations": [
- {
- "attachment_target": "attachment_target_value",
- "display_name": "display_name_value",
- "firewall_policy_id": "firewall_policy_id_value",
- "name": "name_value",
- "short_name": "short_name_value",
- }
- ],
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "display_name": "display_name_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "parent": "parent_value",
- "region": "region_value",
- "rule_tuple_count": 1737,
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": [
- "dest_ip_ranges_value_1",
- "dest_ip_ranges_value_2",
- ],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": [
- "target_resources_value_1",
- "target_resources_value_2",
- ],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
- ],
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "short_name": "short_name_value",
+ request_type=compute.RemoveAssociationRegionNetworkFirewallPolicyRequest,
+):
+ client = RegionNetworkFirewallPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "firewall_policy": "sample3",
}
request = request_type(request_init)
@@ -4712,10 +8102,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.remove_association(request)
-def test_patch_unary_rest_flattened():
+def test_remove_association_rest_flattened():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4738,13 +8128,6 @@ def test_patch_unary_rest_flattened():
project="project_value",
region="region_value",
firewall_policy="firewall_policy_value",
- firewall_policy_resource=compute.FirewallPolicy(
- associations=[
- compute.FirewallPolicyAssociation(
- attachment_target="attachment_target_value"
- )
- ]
- ),
)
mock_args.update(sample_request)
@@ -4756,20 +8139,20 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.remove_association(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}"
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeAssociation"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_remove_association_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4778,22 +8161,15 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchRegionNetworkFirewallPolicyRequest(),
+ client.remove_association(
+ compute.RemoveAssociationRegionNetworkFirewallPolicyRequest(),
project="project_value",
region="region_value",
firewall_policy="firewall_policy_value",
- firewall_policy_resource=compute.FirewallPolicy(
- associations=[
- compute.FirewallPolicyAssociation(
- attachment_target="attachment_target_value"
- )
- ]
- ),
)
-def test_patch_unary_rest_error():
+def test_remove_association_rest_error():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4802,11 +8178,11 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchRuleRegionNetworkFirewallPolicyRequest,
+ compute.RemoveAssociationRegionNetworkFirewallPolicyRequest,
dict,
],
)
-def test_patch_rule_unary_rest(request_type):
+def test_remove_association_unary_rest(request_type):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4818,34 +8194,6 @@ def test_patch_rule_unary_rest(request_type):
"region": "sample2",
"firewall_policy": "sample3",
}
- request_init["firewall_policy_rule_resource"] = {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": ["target_resources_value_1", "target_resources_value_2"],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -4882,36 +8230,14 @@ def test_patch_rule_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_rule_unary(request)
+ response = client.remove_association_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_patch_rule_unary_rest_required_fields(
- request_type=compute.PatchRuleRegionNetworkFirewallPolicyRequest,
+def test_remove_association_unary_rest_required_fields(
+ request_type=compute.RemoveAssociationRegionNetworkFirewallPolicyRequest,
):
transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
@@ -4930,7 +8256,7 @@ def test_patch_rule_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch_rule._get_unset_required_fields(jsonified_request)
+ ).remove_association._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -4941,11 +8267,11 @@ def test_patch_rule_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch_rule._get_unset_required_fields(jsonified_request)
+ ).remove_association._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "priority",
+ "name",
"request_id",
)
)
@@ -4980,7 +8306,6 @@ def test_patch_rule_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -4989,30 +8314,29 @@ def test_patch_rule_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_rule_unary(request)
+ response = client.remove_association_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_rule_unary_rest_unset_required_fields():
+def test_remove_association_unary_rest_unset_required_fields():
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch_rule._get_unset_required_fields({})
+ unset_fields = transport.remove_association._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
- "priority",
+ "name",
"requestId",
)
)
& set(
(
"firewallPolicy",
- "firewallPolicyRuleResource",
"project",
"region",
)
@@ -5021,7 +8345,7 @@ def test_patch_rule_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_rule_unary_rest_interceptors(null_interceptor):
+def test_remove_association_unary_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -5034,9 +8358,11 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_patch_rule"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor,
+ "post_remove_association",
) as post, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_patch_rule"
+ transports.RegionNetworkFirewallPoliciesRestInterceptor,
+ "pre_remove_association",
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -5053,7 +8379,7 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchRuleRegionNetworkFirewallPolicyRequest()
+ request = compute.RemoveAssociationRegionNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -5061,7 +8387,7 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_rule_unary(
+ client.remove_association_unary(
request,
metadata=[
("key", "val"),
@@ -5073,9 +8399,9 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_rule_unary_rest_bad_request(
+def test_remove_association_unary_rest_bad_request(
transport: str = "rest",
- request_type=compute.PatchRuleRegionNetworkFirewallPolicyRequest,
+ request_type=compute.RemoveAssociationRegionNetworkFirewallPolicyRequest,
):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -5088,34 +8414,6 @@ def test_patch_rule_unary_rest_bad_request(
"region": "sample2",
"firewall_policy": "sample3",
}
- request_init["firewall_policy_rule_resource"] = {
- "action": "action_value",
- "description": "description_value",
- "direction": "direction_value",
- "disabled": True,
- "enable_logging": True,
- "kind": "kind_value",
- "match": {
- "dest_ip_ranges": ["dest_ip_ranges_value_1", "dest_ip_ranges_value_2"],
- "layer4_configs": [
- {
- "ip_protocol": "ip_protocol_value",
- "ports": ["ports_value_1", "ports_value_2"],
- }
- ],
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"],
- "src_secure_tags": [{"name": "name_value", "state": "state_value"}],
- },
- "priority": 898,
- "rule_name": "rule_name_value",
- "rule_tuple_count": 1737,
- "target_resources": ["target_resources_value_1", "target_resources_value_2"],
- "target_secure_tags": {},
- "target_service_accounts": [
- "target_service_accounts_value_1",
- "target_service_accounts_value_2",
- ],
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -5127,10 +8425,10 @@ def test_patch_rule_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_rule_unary(request)
+ client.remove_association_unary(request)
-def test_patch_rule_unary_rest_flattened():
+def test_remove_association_unary_rest_flattened():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5153,9 +8451,6 @@ def test_patch_rule_unary_rest_flattened():
project="project_value",
region="region_value",
firewall_policy="firewall_policy_value",
- firewall_policy_rule_resource=compute.FirewallPolicyRule(
- action="action_value"
- ),
)
mock_args.update(sample_request)
@@ -5167,20 +8462,20 @@ def test_patch_rule_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_rule_unary(**mock_args)
+ client.remove_association_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchRule"
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeAssociation"
% client.transport._host,
args[1],
)
-def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"):
+def test_remove_association_unary_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -5189,18 +8484,15 @@ def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_rule_unary(
- compute.PatchRuleRegionNetworkFirewallPolicyRequest(),
+ client.remove_association_unary(
+ compute.RemoveAssociationRegionNetworkFirewallPolicyRequest(),
project="project_value",
region="region_value",
firewall_policy="firewall_policy_value",
- firewall_policy_rule_resource=compute.FirewallPolicyRule(
- action="action_value"
- ),
)
-def test_patch_rule_unary_rest_error():
+def test_remove_association_unary_rest_error():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -5209,11 +8501,11 @@ def test_patch_rule_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.RemoveAssociationRegionNetworkFirewallPolicyRequest,
+ compute.RemoveRuleRegionNetworkFirewallPolicyRequest,
dict,
],
)
-def test_remove_association_unary_rest(request_type):
+def test_remove_rule_rest(request_type):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5261,10 +8553,10 @@ def test_remove_association_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_association_unary(request)
+ response = client.remove_rule(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -5289,8 +8581,8 @@ def test_remove_association_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_remove_association_unary_rest_required_fields(
- request_type=compute.RemoveAssociationRegionNetworkFirewallPolicyRequest,
+def test_remove_rule_rest_required_fields(
+ request_type=compute.RemoveRuleRegionNetworkFirewallPolicyRequest,
):
transport_class = transports.RegionNetworkFirewallPoliciesRestTransport
@@ -5309,7 +8601,7 @@ def test_remove_association_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_association._get_unset_required_fields(jsonified_request)
+ ).remove_rule._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -5320,11 +8612,11 @@ def test_remove_association_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).remove_association._get_unset_required_fields(jsonified_request)
+ ).remove_rule._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(
(
- "name",
+ "priority",
"request_id",
)
)
@@ -5367,23 +8659,23 @@ def test_remove_association_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.remove_association_unary(request)
+ response = client.remove_rule(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_remove_association_unary_rest_unset_required_fields():
+def test_remove_rule_rest_unset_required_fields():
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.remove_association._get_unset_required_fields({})
+ unset_fields = transport.remove_rule._get_unset_required_fields({})
assert set(unset_fields) == (
set(
(
- "name",
+ "priority",
"requestId",
)
)
@@ -5398,7 +8690,7 @@ def test_remove_association_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_remove_association_unary_rest_interceptors(null_interceptor):
+def test_remove_rule_rest_interceptors(null_interceptor):
transport = transports.RegionNetworkFirewallPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -5411,11 +8703,9 @@ def test_remove_association_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor,
- "post_remove_association",
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_remove_rule"
) as post, mock.patch.object(
- transports.RegionNetworkFirewallPoliciesRestInterceptor,
- "pre_remove_association",
+ transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_remove_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -5432,7 +8722,7 @@ def test_remove_association_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.RemoveAssociationRegionNetworkFirewallPolicyRequest()
+ request = compute.RemoveRuleRegionNetworkFirewallPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -5440,7 +8730,7 @@ def test_remove_association_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.remove_association_unary(
+ client.remove_rule(
request,
metadata=[
("key", "val"),
@@ -5452,9 +8742,9 @@ def test_remove_association_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_remove_association_unary_rest_bad_request(
+def test_remove_rule_rest_bad_request(
transport: str = "rest",
- request_type=compute.RemoveAssociationRegionNetworkFirewallPolicyRequest,
+ request_type=compute.RemoveRuleRegionNetworkFirewallPolicyRequest,
):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -5478,10 +8768,10 @@ def test_remove_association_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.remove_association_unary(request)
+ client.remove_rule(request)
-def test_remove_association_unary_rest_flattened():
+def test_remove_rule_rest_flattened():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -5515,20 +8805,20 @@ def test_remove_association_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.remove_association_unary(**mock_args)
+ client.remove_rule(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeAssociation"
+ "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeRule"
% client.transport._host,
args[1],
)
-def test_remove_association_unary_rest_flattened_error(transport: str = "rest"):
+def test_remove_rule_rest_flattened_error(transport: str = "rest"):
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -5537,15 +8827,15 @@ def test_remove_association_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.remove_association_unary(
- compute.RemoveAssociationRegionNetworkFirewallPolicyRequest(),
+ client.remove_rule(
+ compute.RemoveRuleRegionNetworkFirewallPolicyRequest(),
project="project_value",
region="region_value",
firewall_policy="firewall_policy_value",
)
-def test_remove_association_unary_rest_error():
+def test_remove_rule_rest_error():
client = RegionNetworkFirewallPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -5610,28 +8900,6 @@ def test_remove_rule_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_remove_rule_unary_rest_required_fields(
@@ -6715,6 +9983,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionNetworkFirewallPoliciesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_network_firewall_policies_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -6762,6 +10043,14 @@ def test_region_network_firewall_policies_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_network_firewall_policies_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_notification_endpoints.py b/tests/unit/gapic/compute_v1/test_region_notification_endpoints.py
index 559087ee0..b8ad99839 100644
--- a/tests/unit/gapic/compute_v1/test_region_notification_endpoints.py
+++ b/tests/unit/gapic/compute_v1/test_region_notification_endpoints.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -563,7 +565,7 @@ def test_region_notification_endpoints_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = RegionNotificationEndpointsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -611,10 +613,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -639,8 +641,622 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteRegionNotificationEndpointRequest,
+def test_delete_rest_required_fields(
+ request_type=compute.DeleteRegionNotificationEndpointRequest,
+):
+ transport_class = transports.RegionNotificationEndpointsRestTransport
+
+ request_init = {}
+ request_init["notification_endpoint"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["notificationEndpoint"] = "notification_endpoint_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "notificationEndpoint" in jsonified_request
+ assert jsonified_request["notificationEndpoint"] == "notification_endpoint_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionNotificationEndpointsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "delete",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_rest_unset_required_fields():
+ transport = transports.RegionNotificationEndpointsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "notificationEndpoint",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_rest_interceptors(null_interceptor):
+ transport = transports.RegionNotificationEndpointsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionNotificationEndpointsRestInterceptor(),
+ )
+ client = RegionNotificationEndpointsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionNotificationEndpointsRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.RegionNotificationEndpointsRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteRegionNotificationEndpointRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DeleteRegionNotificationEndpointRequest,
+):
+ client = RegionNotificationEndpointsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "notification_endpoint": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete(request)
+
+
+def test_delete_rest_flattened():
+ client = RegionNotificationEndpointsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "notification_endpoint": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ notification_endpoint="notification_endpoint_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/notificationEndpoints/{notification_endpoint}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_rest_flattened_error(transport: str = "rest"):
+ client = RegionNotificationEndpointsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete(
+ compute.DeleteRegionNotificationEndpointRequest(),
+ project="project_value",
+ region="region_value",
+ notification_endpoint="notification_endpoint_value",
+ )
+
+
+def test_delete_rest_error():
+ client = RegionNotificationEndpointsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DeleteRegionNotificationEndpointRequest,
+ dict,
+ ],
+)
+def test_delete_unary_rest(request_type):
+ client = RegionNotificationEndpointsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "notification_endpoint": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.delete_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteRegionNotificationEndpointRequest,
+):
+ transport_class = transports.RegionNotificationEndpointsRestTransport
+
+ request_init = {}
+ request_init["notification_endpoint"] = ""
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["notificationEndpoint"] = "notification_endpoint_value"
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "notificationEndpoint" in jsonified_request
+ assert jsonified_request["notificationEndpoint"] == "notification_endpoint_value"
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionNotificationEndpointsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "delete",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_unary_rest_unset_required_fields():
+ transport = transports.RegionNotificationEndpointsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "notificationEndpoint",
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionNotificationEndpointsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionNotificationEndpointsRestInterceptor(),
+ )
+ client = RegionNotificationEndpointsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionNotificationEndpointsRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.RegionNotificationEndpointsRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteRegionNotificationEndpointRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.DeleteRegionNotificationEndpointRequest,
+):
+ client = RegionNotificationEndpointsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "notification_endpoint": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete_unary(request)
+
+
+def test_delete_unary_rest_flattened():
+ client = RegionNotificationEndpointsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "notification_endpoint": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ notification_endpoint="notification_endpoint_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/notificationEndpoints/{notification_endpoint}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionNotificationEndpointsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete_unary(
+ compute.DeleteRegionNotificationEndpointRequest(),
+ project="project_value",
+ region="region_value",
+ notification_endpoint="notification_endpoint_value",
+ )
+
+
+def test_delete_unary_rest_error():
+ client = RegionNotificationEndpointsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetRegionNotificationEndpointRequest,
+ dict,
+ ],
+)
+def test_get_rest(request_type):
+ client = RegionNotificationEndpointsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "notification_endpoint": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.NotificationEndpoint(
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ region="region_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.NotificationEndpoint.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.NotificationEndpoint)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_get_rest_required_fields(
+ request_type=compute.GetRegionNotificationEndpointRequest,
):
transport_class = transports.RegionNotificationEndpointsRestTransport
@@ -659,7 +1275,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -670,9 +1286,7 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -690,7 +1304,7 @@ def test_delete_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.NotificationEndpoint()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -701,32 +1315,32 @@ def test_delete_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "get",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.NotificationEndpoint.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.RegionNotificationEndpointsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"notificationEndpoint",
@@ -738,7 +1352,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.RegionNotificationEndpointsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -751,9 +1365,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNotificationEndpointsRestInterceptor, "post_delete"
+ transports.RegionNotificationEndpointsRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.RegionNotificationEndpointsRestInterceptor, "pre_delete"
+ transports.RegionNotificationEndpointsRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -768,17 +1382,19 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.NotificationEndpoint.to_json(
+ compute.NotificationEndpoint()
+ )
- request = compute.DeleteRegionNotificationEndpointRequest()
+ request = compute.GetRegionNotificationEndpointRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.NotificationEndpoint
- client.delete_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -790,9 +1406,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest",
- request_type=compute.DeleteRegionNotificationEndpointRequest,
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRegionNotificationEndpointRequest
):
client = RegionNotificationEndpointsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -816,10 +1431,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.get(request)
-def test_delete_unary_rest_flattened():
+def test_get_rest_flattened():
client = RegionNotificationEndpointsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -828,7 +1443,7 @@ def test_delete_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.NotificationEndpoint()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -848,12 +1463,12 @@ def test_delete_unary_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.NotificationEndpoint.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -866,7 +1481,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = RegionNotificationEndpointsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -875,15 +1490,15 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteRegionNotificationEndpointRequest(),
+ client.get(
+ compute.GetRegionNotificationEndpointRequest(),
project="project_value",
region="region_value",
notification_endpoint="notification_endpoint_value",
)
-def test_delete_unary_rest_error():
+def test_get_rest_error():
client = RegionNotificationEndpointsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -892,63 +1507,104 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRegionNotificationEndpointRequest,
+ compute.InsertRegionNotificationEndpointRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_insert_rest(request_type):
client = RegionNotificationEndpointsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "region": "sample2",
- "notification_endpoint": "sample3",
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["notification_endpoint_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_settings": {
+ "authority": "authority_value",
+ "endpoint": "endpoint_value",
+ "payload_name": "payload_name_value",
+ "resend_interval": {"nanos": 543, "seconds": 751},
+ "retry_duration_sec": 1941,
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NotificationEndpoint(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NotificationEndpoint.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.NotificationEndpoint)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_rest_required_fields(
- request_type=compute.GetRegionNotificationEndpointRequest,
+def test_insert_rest_required_fields(
+ request_type=compute.InsertRegionNotificationEndpointRequest,
):
transport_class = transports.RegionNotificationEndpointsRestTransport
request_init = {}
- request_init["notification_endpoint"] = ""
request_init["project"] = ""
request_init["region"] = ""
request = request_type(request_init)
@@ -962,23 +1618,22 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
- jsonified_request["notificationEndpoint"] = "notification_endpoint_value"
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
- assert "notificationEndpoint" in jsonified_request
- assert jsonified_request["notificationEndpoint"] == "notification_endpoint_value"
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
@@ -991,7 +1646,7 @@ def test_get_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.NotificationEndpoint()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1002,35 +1657,36 @@ def test_get_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NotificationEndpoint.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.RegionNotificationEndpointsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
- "notificationEndpoint",
+ "notificationEndpointResource",
"project",
"region",
)
@@ -1039,7 +1695,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.RegionNotificationEndpointsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1052,9 +1708,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionNotificationEndpointsRestInterceptor, "post_get"
+ transports.RegionNotificationEndpointsRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.RegionNotificationEndpointsRestInterceptor, "pre_get"
+ transports.RegionNotificationEndpointsRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1069,19 +1725,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.NotificationEndpoint.to_json(
- compute.NotificationEndpoint()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRegionNotificationEndpointRequest()
+ request = compute.InsertRegionNotificationEndpointRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.NotificationEndpoint
+ post.return_value = compute.Operation
- client.get(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1093,8 +1747,9 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRegionNotificationEndpointRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.InsertRegionNotificationEndpointRequest,
):
client = RegionNotificationEndpointsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1102,10 +1757,22 @@ def test_get_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "region": "sample2",
- "notification_endpoint": "sample3",
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["notification_endpoint_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "grpc_settings": {
+ "authority": "authority_value",
+ "endpoint": "endpoint_value",
+ "payload_name": "payload_name_value",
+ "resend_interval": {"nanos": 543, "seconds": 751},
+ "retry_duration_sec": 1941,
+ },
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
}
request = request_type(request_init)
@@ -1118,10 +1785,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.insert(request)
-def test_get_rest_flattened():
+def test_insert_rest_flattened():
client = RegionNotificationEndpointsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1130,45 +1797,43 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.NotificationEndpoint()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "region": "sample2",
- "notification_endpoint": "sample3",
- }
+ sample_request = {"project": "sample1", "region": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- notification_endpoint="notification_endpoint_value",
+ notification_endpoint_resource=compute.NotificationEndpoint(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.NotificationEndpoint.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/notificationEndpoints/{notification_endpoint}"
+ "%s/compute/v1/projects/{project}/regions/{region}/notificationEndpoints"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = RegionNotificationEndpointsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1177,15 +1842,17 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRegionNotificationEndpointRequest(),
+ client.insert(
+ compute.InsertRegionNotificationEndpointRequest(),
project="project_value",
region="region_value",
- notification_endpoint="notification_endpoint_value",
+ notification_endpoint_resource=compute.NotificationEndpoint(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
-def test_get_rest_error():
+def test_insert_rest_error():
client = RegionNotificationEndpointsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1262,28 +1929,6 @@ def test_insert_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_insert_unary_rest_required_fields(
@@ -1970,6 +2615,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionNotificationEndpointsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_notification_endpoints_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2004,6 +2662,14 @@ def test_region_notification_endpoints_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_notification_endpoints_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_operations.py b/tests/unit/gapic/compute_v1/test_region_operations.py
index 5f9bc3abe..78bc96765 100644
--- a/tests/unit/gapic/compute_v1/test_region_operations.py
+++ b/tests/unit/gapic/compute_v1/test_region_operations.py
@@ -1880,6 +1880,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionOperationsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_operations_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -1914,6 +1927,14 @@ def test_region_operations_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_operations_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_security_policies.py b/tests/unit/gapic/compute_v1/test_region_security_policies.py
index f1d8260eb..b178a2ee4 100644
--- a/tests/unit/gapic/compute_v1/test_region_security_policies.py
+++ b/tests/unit/gapic/compute_v1/test_region_security_policies.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -557,7 +559,7 @@ def test_region_security_policies_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -605,10 +607,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -633,7 +635,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteRegionSecurityPolicyRequest,
):
transport_class = transports.RegionSecurityPoliciesRestTransport
@@ -706,14 +708,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.RegionSecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -732,7 +734,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.RegionSecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -772,7 +774,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -784,7 +786,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteRegionSecurityPolicyRequest
):
client = RegionSecurityPoliciesClient(
@@ -809,10 +811,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -846,7 +848,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -859,7 +861,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -868,7 +870,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteRegionSecurityPolicyRequest(),
project="project_value",
region="region_value",
@@ -876,7 +878,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -885,11 +887,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRegionSecurityPolicyRequest,
+ compute.DeleteRegionSecurityPolicyRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -906,40 +908,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPolicy(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- type_="type__value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.SecurityPolicy)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.type_ == "type__value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetRegionSecurityPolicyRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteRegionSecurityPolicyRequest,
+):
transport_class = transports.RegionSecurityPoliciesRestTransport
request_init = {}
@@ -957,7 +965,7 @@ def test_get_rest_required_fields(request_type=compute.GetRegionSecurityPolicyRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -968,7 +976,9 @@ def test_get_rest_required_fields(request_type=compute.GetRegionSecurityPolicyRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -986,7 +996,7 @@ def test_get_rest_required_fields(request_type=compute.GetRegionSecurityPolicyRe
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPolicy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -997,32 +1007,32 @@ def test_get_rest_required_fields(request_type=compute.GetRegionSecurityPolicyRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.RegionSecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -1034,7 +1044,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.RegionSecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1047,9 +1057,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionSecurityPoliciesRestInterceptor, "post_get"
+ transports.RegionSecurityPoliciesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.RegionSecurityPoliciesRestInterceptor, "pre_get"
+ transports.RegionSecurityPoliciesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1064,19 +1074,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.SecurityPolicy.to_json(
- compute.SecurityPolicy()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRegionSecurityPolicyRequest()
+ request = compute.DeleteRegionSecurityPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.SecurityPolicy
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1088,8 +1096,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRegionSecurityPolicyRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteRegionSecurityPolicyRequest
):
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1113,10 +1121,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1125,7 +1133,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPolicy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1145,12 +1153,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1163,7 +1171,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1172,15 +1180,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRegionSecurityPolicyRequest(),
+ client.delete_unary(
+ compute.DeleteRegionSecurityPolicyRequest(),
project="project_value",
region="region_value",
security_policy="security_policy_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1189,159 +1197,67 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertRegionSecurityPolicyRequest,
+ compute.GetRegionSecurityPolicyRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["security_policy_resource"] = {
- "adaptive_protection_config": {
- "layer7_ddos_defense_config": {
- "enable": True,
- "rule_visibility": "rule_visibility_value",
- }
- },
- "advanced_options_config": {
- "json_parsing": "json_parsing_value",
- "log_level": "log_level_value",
- },
- "creation_timestamp": "creation_timestamp_value",
- "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
- "region": "region_value",
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "header_action": {
- "request_headers_to_adds": [
- {
- "header_name": "header_name_value",
- "header_value": "header_value_value",
- }
- ]
- },
- "kind": "kind_value",
- "match": {
- "config": {
- "src_ip_ranges": [
- "src_ip_ranges_value_1",
- "src_ip_ranges_value_2",
- ]
- },
- "expr": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "versioned_expr": "versioned_expr_value",
- },
- "preview": True,
- "priority": 898,
- "rate_limit_options": {
- "ban_duration_sec": 1680,
- "ban_threshold": {"count": 553, "interval_sec": 1279},
- "conform_action": "conform_action_value",
- "enforce_on_key": "enforce_on_key_value",
- "enforce_on_key_name": "enforce_on_key_name_value",
- "exceed_action": "exceed_action_value",
- "exceed_redirect_options": {
- "target": "target_value",
- "type_": "type__value",
- },
- "rate_limit_threshold": {},
- },
- "redirect_options": {},
- }
- ],
- "self_link": "self_link_value",
- "type_": "type__value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "security_policy": "sample3",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.SecurityPolicy(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ type_="type__value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.SecurityPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.SecurityPolicy)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.type_ == "type__value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertRegionSecurityPolicyRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetRegionSecurityPolicyRequest):
transport_class = transports.RegionSecurityPoliciesRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
+ request_init["security_policy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1353,24 +1269,18 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
+ jsonified_request["securityPolicy"] = "security_policy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "request_id",
- "validate_only",
- )
- )
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1378,6 +1288,8 @@ def test_insert_unary_rest_required_fields(
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
+ assert "securityPolicy" in jsonified_request
+ assert jsonified_request["securityPolicy"] == "security_policy_value"
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1386,7 +1298,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.SecurityPolicy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1397,50 +1309,44 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.SecurityPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.RegionSecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "requestId",
- "validateOnly",
- )
- )
+ set(())
& set(
(
"project",
"region",
- "securityPolicyResource",
+ "securityPolicy",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.RegionSecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1453,9 +1359,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionSecurityPoliciesRestInterceptor, "post_insert"
+ transports.RegionSecurityPoliciesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.RegionSecurityPoliciesRestInterceptor, "pre_insert"
+ transports.RegionSecurityPoliciesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1470,17 +1376,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.SecurityPolicy.to_json(
+ compute.SecurityPolicy()
+ )
- request = compute.InsertRegionSecurityPolicyRequest()
+ request = compute.GetRegionSecurityPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.SecurityPolicy
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1492,8 +1400,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertRegionSecurityPolicyRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRegionSecurityPolicyRequest
):
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1501,75 +1409,10 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["security_policy_resource"] = {
- "adaptive_protection_config": {
- "layer7_ddos_defense_config": {
- "enable": True,
- "rule_visibility": "rule_visibility_value",
- }
- },
- "advanced_options_config": {
- "json_parsing": "json_parsing_value",
- "log_level": "log_level_value",
- },
- "creation_timestamp": "creation_timestamp_value",
- "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
- "region": "region_value",
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "header_action": {
- "request_headers_to_adds": [
- {
- "header_name": "header_name_value",
- "header_value": "header_value_value",
- }
- ]
- },
- "kind": "kind_value",
- "match": {
- "config": {
- "src_ip_ranges": [
- "src_ip_ranges_value_1",
- "src_ip_ranges_value_2",
- ]
- },
- "expr": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "versioned_expr": "versioned_expr_value",
- },
- "preview": True,
- "priority": 898,
- "rate_limit_options": {
- "ban_duration_sec": 1680,
- "ban_threshold": {"count": 553, "interval_sec": 1279},
- "conform_action": "conform_action_value",
- "enforce_on_key": "enforce_on_key_value",
- "enforce_on_key_name": "enforce_on_key_name_value",
- "exceed_action": "exceed_action_value",
- "exceed_redirect_options": {
- "target": "target_value",
- "type_": "type__value",
- },
- "rate_limit_threshold": {},
- },
- "redirect_options": {},
- }
- ],
- "self_link": "self_link_value",
- "type_": "type__value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "security_policy": "sample3",
}
request = request_type(request_init)
@@ -1582,10 +1425,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get(request)
-def test_insert_unary_rest_flattened():
+def test_get_rest_flattened():
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1594,47 +1437,45 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.SecurityPolicy()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "security_policy": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- security_policy_resource=compute.SecurityPolicy(
- adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
- layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
- enable=True
- )
- )
- ),
+ security_policy="security_policy_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.SecurityPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/securityPolicies"
+ "%s/compute/v1/projects/{project}/regions/{region}/securityPolicies/{security_policy}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1643,21 +1484,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertRegionSecurityPolicyRequest(),
+ client.get(
+ compute.GetRegionSecurityPolicyRequest(),
project="project_value",
region="region_value",
- security_policy_resource=compute.SecurityPolicy(
- adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
- layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
- enable=True
- )
- )
- ),
+ security_policy="security_policy_value",
)
-def test_insert_unary_rest_error():
+def test_get_rest_error():
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1666,11 +1501,11 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListRegionSecurityPoliciesRequest,
+ compute.InsertRegionSecurityPolicyRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_insert_rest(request_type):
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1678,40 +1513,1432 @@ def test_list_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2"}
+ request_init["security_policy_resource"] = {
+ "adaptive_protection_config": {
+ "layer7_ddos_defense_config": {
+ "enable": True,
+ "rule_visibility": "rule_visibility_value",
+ }
+ },
+ "advanced_options_config": {
+ "json_parsing": "json_parsing_value",
+ "log_level": "log_level_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
+ "region": "region_value",
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": [
+ "src_ip_ranges_value_1",
+ "src_ip_ranges_value_2",
+ ]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
+ ],
+ "self_link": "self_link_value",
+ "type_": "type__value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPolicyList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPolicyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertRegionSecurityPolicyRequest,
+):
+ transport_class = transports.RegionSecurityPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "validate_only",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.RegionSecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "validateOnly",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ "securityPolicyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.RegionSecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionSecurityPoliciesRestInterceptor(),
+ )
+ client = RegionSecurityPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionSecurityPoliciesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionSecurityPoliciesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionSecurityPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionSecurityPolicyRequest
+):
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["security_policy_resource"] = {
+ "adaptive_protection_config": {
+ "layer7_ddos_defense_config": {
+ "enable": True,
+ "rule_visibility": "rule_visibility_value",
+ }
+ },
+ "advanced_options_config": {
+ "json_parsing": "json_parsing_value",
+ "log_level": "log_level_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
+ "region": "region_value",
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": [
+ "src_ip_ranges_value_1",
+ "src_ip_ranges_value_2",
+ ]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
+ ],
+ "self_link": "self_link_value",
+ "type_": "type__value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ security_policy_resource=compute.SecurityPolicy(
+ adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
+ layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
+ enable=True
+ )
+ )
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/securityPolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertRegionSecurityPolicyRequest(),
+ project="project_value",
+ region="region_value",
+ security_policy_resource=compute.SecurityPolicy(
+ adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
+ layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
+ enable=True
+ )
+ )
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionSecurityPolicyRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["security_policy_resource"] = {
+ "adaptive_protection_config": {
+ "layer7_ddos_defense_config": {
+ "enable": True,
+ "rule_visibility": "rule_visibility_value",
+ }
+ },
+ "advanced_options_config": {
+ "json_parsing": "json_parsing_value",
+ "log_level": "log_level_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
+ "region": "region_value",
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": [
+ "src_ip_ranges_value_1",
+ "src_ip_ranges_value_2",
+ ]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
+ ],
+ "self_link": "self_link_value",
+ "type_": "type__value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertRegionSecurityPolicyRequest,
+):
+ transport_class = transports.RegionSecurityPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "request_id",
+ "validate_only",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.RegionSecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "requestId",
+ "validateOnly",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ "securityPolicyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionSecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionSecurityPoliciesRestInterceptor(),
+ )
+ client = RegionSecurityPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionSecurityPoliciesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionSecurityPoliciesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionSecurityPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionSecurityPolicyRequest
+):
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["security_policy_resource"] = {
+ "adaptive_protection_config": {
+ "layer7_ddos_defense_config": {
+ "enable": True,
+ "rule_visibility": "rule_visibility_value",
+ }
+ },
+ "advanced_options_config": {
+ "json_parsing": "json_parsing_value",
+ "log_level": "log_level_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
+ "region": "region_value",
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": [
+ "src_ip_ranges_value_1",
+ "src_ip_ranges_value_2",
+ ]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
+ ],
+ "self_link": "self_link_value",
+ "type_": "type__value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ security_policy_resource=compute.SecurityPolicy(
+ adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
+ layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
+ enable=True
+ )
+ )
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/securityPolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertRegionSecurityPolicyRequest(),
+ project="project_value",
+ region="region_value",
+ security_policy_resource=compute.SecurityPolicy(
+ adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
+ layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
+ enable=True
+ )
+ )
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListRegionSecurityPoliciesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SecurityPolicyList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SecurityPolicyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+
+
+def test_list_rest_required_fields(
+ request_type=compute.ListRegionSecurityPoliciesRequest,
+):
+ transport_class = transports.RegionSecurityPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SecurityPolicyList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SecurityPolicyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.RegionSecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.RegionSecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionSecurityPoliciesRestInterceptor(),
+ )
+ client = RegionSecurityPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionSecurityPoliciesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.RegionSecurityPoliciesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.SecurityPolicyList.to_json(
+ compute.SecurityPolicyList()
+ )
+
+ request = compute.ListRegionSecurityPoliciesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.SecurityPolicyList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListRegionSecurityPoliciesRequest
+):
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SecurityPolicyList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SecurityPolicyList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/securityPolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListRegionSecurityPoliciesRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.SecurityPolicyList(
+ items=[
+ compute.SecurityPolicy(),
+ compute.SecurityPolicy(),
+ compute.SecurityPolicy(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.SecurityPolicyList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.SecurityPolicyList(
+ items=[
+ compute.SecurityPolicy(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.SecurityPolicyList(
+ items=[
+ compute.SecurityPolicy(),
+ compute.SecurityPolicy(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.SecurityPolicyList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.SecurityPolicy) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRegionSecurityPolicyRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = RegionSecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "security_policy": "sample3",
+ }
+ request_init["security_policy_resource"] = {
+ "adaptive_protection_config": {
+ "layer7_ddos_defense_config": {
+ "enable": True,
+ "rule_visibility": "rule_visibility_value",
+ }
+ },
+ "advanced_options_config": {
+ "json_parsing": "json_parsing_value",
+ "log_level": "log_level_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
+ "region": "region_value",
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": [
+ "src_ip_ranges_value_1",
+ "src_ip_ranges_value_2",
+ ]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
+ ],
+ "self_link": "self_link_value",
+ "type_": "type__value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(
- request_type=compute.ListRegionSecurityPoliciesRequest,
+def test_patch_rest_required_fields(
+ request_type=compute.PatchRegionSecurityPolicyRequest,
):
transport_class = transports.RegionSecurityPoliciesRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
+ request_init["security_policy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1723,27 +2950,20 @@ def test_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
+ jsonified_request["securityPolicy"] = "security_policy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1751,6 +2971,8 @@ def test_list_rest_required_fields(
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
+ assert "securityPolicy" in jsonified_request
+ assert jsonified_request["securityPolicy"] == "security_policy_value"
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1759,7 +2981,7 @@ def test_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPolicyList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1770,51 +2992,46 @@ def test_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPolicyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_rest_unset_required_fields():
transport = transports.RegionSecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
"project",
"region",
+ "securityPolicy",
+ "securityPolicyResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.RegionSecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1827,9 +3044,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionSecurityPoliciesRestInterceptor, "post_list"
+ transports.RegionSecurityPoliciesRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.RegionSecurityPoliciesRestInterceptor, "pre_list"
+ transports.RegionSecurityPoliciesRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1844,19 +3061,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.SecurityPolicyList.to_json(
- compute.SecurityPolicyList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListRegionSecurityPoliciesRequest()
+ request = compute.PatchRegionSecurityPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.SecurityPolicyList
+ post.return_value = compute.Operation
- client.list(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -1868,8 +3083,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListRegionSecurityPoliciesRequest
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRegionSecurityPolicyRequest
):
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1877,7 +3092,80 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "security_policy": "sample3",
+ }
+ request_init["security_policy_resource"] = {
+ "adaptive_protection_config": {
+ "layer7_ddos_defense_config": {
+ "enable": True,
+ "rule_visibility": "rule_visibility_value",
+ }
+ },
+ "advanced_options_config": {
+ "json_parsing": "json_parsing_value",
+ "log_level": "log_level_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
+ "region": "region_value",
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": [
+ "src_ip_ranges_value_1",
+ "src_ip_ranges_value_2",
+ ]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
+ ],
+ "self_link": "self_link_value",
+ "type_": "type__value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1889,10 +3177,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch(request)
-def test_list_rest_flattened():
+def test_patch_rest_flattened():
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1901,40 +3189,52 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPolicyList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "security_policy": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ security_policy="security_policy_value",
+ security_policy_resource=compute.SecurityPolicy(
+ adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
+ layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
+ enable=True
+ )
+ )
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPolicyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/securityPolicies"
+ "%s/compute/v1/projects/{project}/regions/{region}/securityPolicies/{security_policy}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = RegionSecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1943,73 +3243,26 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListRegionSecurityPoliciesRequest(),
+ client.patch(
+ compute.PatchRegionSecurityPolicyRequest(),
project="project_value",
region="region_value",
+ security_policy="security_policy_value",
+ security_policy_resource=compute.SecurityPolicy(
+ adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
+ layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
+ enable=True
+ )
+ )
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_rest_error():
client = RegionSecurityPoliciesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.SecurityPolicyList(
- items=[
- compute.SecurityPolicy(),
- compute.SecurityPolicy(),
- compute.SecurityPolicy(),
- ],
- next_page_token="abc",
- ),
- compute.SecurityPolicyList(
- items=[],
- next_page_token="def",
- ),
- compute.SecurityPolicyList(
- items=[
- compute.SecurityPolicy(),
- ],
- next_page_token="ghi",
- ),
- compute.SecurityPolicyList(
- items=[
- compute.SecurityPolicy(),
- compute.SecurityPolicy(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.SecurityPolicyList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.SecurityPolicy) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
@@ -2139,28 +3392,6 @@ def test_patch_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_patch_unary_rest_required_fields(
@@ -2572,6 +3803,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionSecurityPoliciesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_security_policies_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2607,6 +3851,14 @@ def test_region_security_policies_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_security_policies_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_ssl_certificates.py b/tests/unit/gapic/compute_v1/test_region_ssl_certificates.py
index f7979ec38..ead871f59 100644
--- a/tests/unit/gapic/compute_v1/test_region_ssl_certificates.py
+++ b/tests/unit/gapic/compute_v1/test_region_ssl_certificates.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -555,7 +557,7 @@ def test_region_ssl_certificates_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = RegionSslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -603,10 +605,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -631,7 +633,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteRegionSslCertificateRequest,
):
transport_class = transports.RegionSslCertificatesRestTransport
@@ -704,14 +706,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.RegionSslCertificatesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -730,7 +732,625 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
+ transport = transports.RegionSslCertificatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionSslCertificatesRestInterceptor(),
+ )
+ client = RegionSslCertificatesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionSslCertificatesRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.RegionSslCertificatesRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteRegionSslCertificateRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteRegionSslCertificateRequest
+):
+ client = RegionSslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "ssl_certificate": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete(request)
+
+
+def test_delete_rest_flattened():
+ client = RegionSslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "ssl_certificate": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ ssl_certificate="ssl_certificate_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/sslCertificates/{ssl_certificate}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_rest_flattened_error(transport: str = "rest"):
+ client = RegionSslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete(
+ compute.DeleteRegionSslCertificateRequest(),
+ project="project_value",
+ region="region_value",
+ ssl_certificate="ssl_certificate_value",
+ )
+
+
+def test_delete_rest_error():
+ client = RegionSslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DeleteRegionSslCertificateRequest,
+ dict,
+ ],
+)
+def test_delete_unary_rest(request_type):
+ client = RegionSslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "ssl_certificate": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.delete_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteRegionSslCertificateRequest,
+):
+ transport_class = transports.RegionSslCertificatesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["ssl_certificate"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["sslCertificate"] = "ssl_certificate_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "sslCertificate" in jsonified_request
+ assert jsonified_request["sslCertificate"] == "ssl_certificate_value"
+
+ client = RegionSslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "delete",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_unary_rest_unset_required_fields():
+ transport = transports.RegionSslCertificatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "region",
+ "sslCertificate",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionSslCertificatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionSslCertificatesRestInterceptor(),
+ )
+ client = RegionSslCertificatesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionSslCertificatesRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.RegionSslCertificatesRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteRegionSslCertificateRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteRegionSslCertificateRequest
+):
+ client = RegionSslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "ssl_certificate": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete_unary(request)
+
+
+def test_delete_unary_rest_flattened():
+ client = RegionSslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "ssl_certificate": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ ssl_certificate="ssl_certificate_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/sslCertificates/{ssl_certificate}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionSslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete_unary(
+ compute.DeleteRegionSslCertificateRequest(),
+ project="project_value",
+ region="region_value",
+ ssl_certificate="ssl_certificate_value",
+ )
+
+
+def test_delete_unary_rest_error():
+ client = RegionSslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetRegionSslCertificateRequest,
+ dict,
+ ],
+)
+def test_get_rest(request_type):
+ client = RegionSslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "ssl_certificate": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SslCertificate(
+ certificate="certificate_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ expire_time="expire_time_value",
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ private_key="private_key_value",
+ region="region_value",
+ self_link="self_link_value",
+ subject_alternative_names=["subject_alternative_names_value"],
+ type_="type__value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SslCertificate.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.SslCertificate)
+ assert response.certificate == "certificate_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.expire_time == "expire_time_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.private_key == "private_key_value"
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.subject_alternative_names == ["subject_alternative_names_value"]
+ assert response.type_ == "type__value"
+
+
+def test_get_rest_required_fields(request_type=compute.GetRegionSslCertificateRequest):
+ transport_class = transports.RegionSslCertificatesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["ssl_certificate"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["sslCertificate"] = "ssl_certificate_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "sslCertificate" in jsonified_request
+ assert jsonified_request["sslCertificate"] == "ssl_certificate_value"
+
+ client = RegionSslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SslCertificate()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SslCertificate.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.RegionSslCertificatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "project",
+ "region",
+ "sslCertificate",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
transport = transports.RegionSslCertificatesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -743,9 +1363,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionSslCertificatesRestInterceptor, "post_delete"
+ transports.RegionSslCertificatesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.RegionSslCertificatesRestInterceptor, "pre_delete"
+ transports.RegionSslCertificatesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -760,17 +1380,19 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.SslCertificate.to_json(
+ compute.SslCertificate()
+ )
- request = compute.DeleteRegionSslCertificateRequest()
+ request = compute.GetRegionSslCertificateRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.SslCertificate
- client.delete_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -782,8 +1404,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteRegionSslCertificateRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRegionSslCertificateRequest
):
client = RegionSslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -807,10 +1429,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.get(request)
-def test_delete_unary_rest_flattened():
+def test_get_rest_flattened():
client = RegionSslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -819,7 +1441,7 @@ def test_delete_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.SslCertificate()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -839,12 +1461,12 @@ def test_delete_unary_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.SslCertificate.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -857,7 +1479,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = RegionSslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -866,15 +1488,15 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteRegionSslCertificateRequest(),
+ client.get(
+ compute.GetRegionSslCertificateRequest(),
project="project_value",
region="region_value",
ssl_certificate="ssl_certificate_value",
)
-def test_delete_unary_rest_error():
+def test_get_rest_error():
client = RegionSslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -883,73 +1505,116 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRegionSslCertificateRequest,
+ compute.InsertRegionSslCertificateRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_insert_rest(request_type):
client = RegionSslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "region": "sample2",
- "ssl_certificate": "sample3",
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["ssl_certificate_resource"] = {
+ "certificate": "certificate_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "expire_time": "expire_time_value",
+ "id": 205,
+ "kind": "kind_value",
+ "managed": {
+ "domain_status": {},
+ "domains": ["domains_value_1", "domains_value_2"],
+ "status": "status_value",
+ },
+ "name": "name_value",
+ "private_key": "private_key_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "self_managed": {
+ "certificate": "certificate_value",
+ "private_key": "private_key_value",
+ },
+ "subject_alternative_names": [
+ "subject_alternative_names_value_1",
+ "subject_alternative_names_value_2",
+ ],
+ "type_": "type__value",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SslCertificate(
- certificate="certificate_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- expire_time="expire_time_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- private_key="private_key_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- subject_alternative_names=["subject_alternative_names_value"],
- type_="type__value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SslCertificate.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.SslCertificate)
- assert response.certificate == "certificate_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.expire_time == "expire_time_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.private_key == "private_key_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.subject_alternative_names == ["subject_alternative_names_value"]
- assert response.type_ == "type__value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_rest_required_fields(request_type=compute.GetRegionSslCertificateRequest):
+def test_insert_rest_required_fields(
+ request_type=compute.InsertRegionSslCertificateRequest,
+):
transport_class = transports.RegionSslCertificatesRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
- request_init["ssl_certificate"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -961,18 +1626,19 @@ def test_get_rest_required_fields(request_type=compute.GetRegionSslCertificateRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
- jsonified_request["sslCertificate"] = "ssl_certificate_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -980,8 +1646,6 @@ def test_get_rest_required_fields(request_type=compute.GetRegionSslCertificateRe
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
- assert "sslCertificate" in jsonified_request
- assert jsonified_request["sslCertificate"] == "ssl_certificate_value"
client = RegionSslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -990,7 +1654,7 @@ def test_get_rest_required_fields(request_type=compute.GetRegionSslCertificateRe
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SslCertificate()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1001,44 +1665,45 @@ def test_get_rest_required_fields(request_type=compute.GetRegionSslCertificateRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SslCertificate.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.RegionSslCertificatesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
"region",
- "sslCertificate",
+ "sslCertificateResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.RegionSslCertificatesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1051,9 +1716,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionSslCertificatesRestInterceptor, "post_get"
+ transports.RegionSslCertificatesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.RegionSslCertificatesRestInterceptor, "pre_get"
+ transports.RegionSslCertificatesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1068,19 +1733,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.SslCertificate.to_json(
- compute.SslCertificate()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRegionSslCertificateRequest()
+ request = compute.InsertRegionSslCertificateRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.SslCertificate
+ post.return_value = compute.Operation
- client.get(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1092,8 +1755,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRegionSslCertificateRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionSslCertificateRequest
):
client = RegionSslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1101,10 +1764,32 @@ def test_get_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {
- "project": "sample1",
- "region": "sample2",
- "ssl_certificate": "sample3",
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["ssl_certificate_resource"] = {
+ "certificate": "certificate_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "expire_time": "expire_time_value",
+ "id": 205,
+ "kind": "kind_value",
+ "managed": {
+ "domain_status": {},
+ "domains": ["domains_value_1", "domains_value_2"],
+ "status": "status_value",
+ },
+ "name": "name_value",
+ "private_key": "private_key_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "self_managed": {
+ "certificate": "certificate_value",
+ "private_key": "private_key_value",
+ },
+ "subject_alternative_names": [
+ "subject_alternative_names_value_1",
+ "subject_alternative_names_value_2",
+ ],
+ "type_": "type__value",
}
request = request_type(request_init)
@@ -1117,10 +1802,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.insert(request)
-def test_get_rest_flattened():
+def test_insert_rest_flattened():
client = RegionSslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1129,45 +1814,43 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SslCertificate()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "region": "sample2",
- "ssl_certificate": "sample3",
- }
+ sample_request = {"project": "sample1", "region": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- ssl_certificate="ssl_certificate_value",
+ ssl_certificate_resource=compute.SslCertificate(
+ certificate="certificate_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SslCertificate.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/sslCertificates/{ssl_certificate}"
+ "%s/compute/v1/projects/{project}/regions/{region}/sslCertificates"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = RegionSslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1176,15 +1859,17 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRegionSslCertificateRequest(),
+ client.insert(
+ compute.InsertRegionSslCertificateRequest(),
project="project_value",
region="region_value",
- ssl_certificate="ssl_certificate_value",
+ ssl_certificate_resource=compute.SslCertificate(
+ certificate="certificate_value"
+ ),
)
-def test_get_rest_error():
+def test_insert_rest_error():
client = RegionSslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1271,28 +1956,6 @@ def test_insert_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_insert_unary_rest_required_fields(
@@ -1988,6 +2651,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionSslCertificatesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_ssl_certificates_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2022,6 +2698,14 @@ def test_region_ssl_certificates_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_ssl_certificates_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_target_http_proxies.py b/tests/unit/gapic/compute_v1/test_region_target_http_proxies.py
index 208163351..1bee6493e 100644
--- a/tests/unit/gapic/compute_v1/test_region_target_http_proxies.py
+++ b/tests/unit/gapic/compute_v1/test_region_target_http_proxies.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -557,7 +559,7 @@ def test_region_target_http_proxies_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -605,10 +607,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -633,7 +635,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteRegionTargetHttpProxyRequest,
):
transport_class = transports.RegionTargetHttpProxiesRestTransport
@@ -706,14 +708,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.RegionTargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -732,7 +734,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.RegionTargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -772,7 +774,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -784,7 +786,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteRegionTargetHttpProxyRequest
):
client = RegionTargetHttpProxiesClient(
@@ -809,10 +811,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -846,7 +848,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -859,7 +861,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -868,7 +870,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteRegionTargetHttpProxyRequest(),
project="project_value",
region="region_value",
@@ -876,7 +878,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -885,11 +887,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRegionTargetHttpProxyRequest,
+ compute.DeleteRegionTargetHttpProxyRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -906,42 +908,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpProxy(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- proxy_bind=True,
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- url_map="url_map_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpProxy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.TargetHttpProxy)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.proxy_bind is True
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.url_map == "url_map_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetRegionTargetHttpProxyRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteRegionTargetHttpProxyRequest,
+):
transport_class = transports.RegionTargetHttpProxiesRestTransport
request_init = {}
@@ -959,7 +965,7 @@ def test_get_rest_required_fields(request_type=compute.GetRegionTargetHttpProxyR
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -970,7 +976,9 @@ def test_get_rest_required_fields(request_type=compute.GetRegionTargetHttpProxyR
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -988,7 +996,7 @@ def test_get_rest_required_fields(request_type=compute.GetRegionTargetHttpProxyR
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpProxy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -999,32 +1007,32 @@ def test_get_rest_required_fields(request_type=compute.GetRegionTargetHttpProxyR
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpProxy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.RegionTargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -1036,7 +1044,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.RegionTargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1049,9 +1057,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionTargetHttpProxiesRestInterceptor, "post_get"
+ transports.RegionTargetHttpProxiesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.RegionTargetHttpProxiesRestInterceptor, "pre_get"
+ transports.RegionTargetHttpProxiesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1066,19 +1074,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.TargetHttpProxy.to_json(
- compute.TargetHttpProxy()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRegionTargetHttpProxyRequest()
+ request = compute.DeleteRegionTargetHttpProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.TargetHttpProxy
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1090,8 +1096,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRegionTargetHttpProxyRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteRegionTargetHttpProxyRequest
):
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1115,10 +1121,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1127,7 +1133,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpProxy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1147,12 +1153,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpProxy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1165,7 +1171,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1174,15 +1180,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRegionTargetHttpProxyRequest(),
+ client.delete_unary(
+ compute.DeleteRegionTargetHttpProxyRequest(),
project="project_value",
region="region_value",
target_http_proxy="target_http_proxy_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1191,102 +1197,69 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertRegionTargetHttpProxyRequest,
+ compute.GetRegionTargetHttpProxyRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["target_http_proxy_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "proxy_bind": True,
- "region": "region_value",
- "self_link": "self_link_value",
- "url_map": "url_map_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_http_proxy": "sample3",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.TargetHttpProxy(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ proxy_bind=True,
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ url_map="url_map_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TargetHttpProxy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.TargetHttpProxy)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.proxy_bind is True
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.url_map == "url_map_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertRegionTargetHttpProxyRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetRegionTargetHttpProxyRequest):
transport_class = transports.RegionTargetHttpProxiesRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
+ request_init["target_http_proxy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1298,19 +1271,18 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
+ jsonified_request["targetHttpProxy"] = "target_http_proxy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1318,6 +1290,8 @@ def test_insert_unary_rest_required_fields(
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
+ assert "targetHttpProxy" in jsonified_request
+ assert jsonified_request["targetHttpProxy"] == "target_http_proxy_value"
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1326,7 +1300,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.TargetHttpProxy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1337,45 +1311,44 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TargetHttpProxy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.RegionTargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"project",
"region",
- "targetHttpProxyResource",
+ "targetHttpProxy",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.RegionTargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1388,9 +1361,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionTargetHttpProxiesRestInterceptor, "post_insert"
+ transports.RegionTargetHttpProxiesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.RegionTargetHttpProxiesRestInterceptor, "pre_insert"
+ transports.RegionTargetHttpProxiesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1405,17 +1378,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.TargetHttpProxy.to_json(
+ compute.TargetHttpProxy()
+ )
- request = compute.InsertRegionTargetHttpProxyRequest()
+ request = compute.GetRegionTargetHttpProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.TargetHttpProxy
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1427,8 +1402,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertRegionTargetHttpProxyRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRegionTargetHttpProxyRequest
):
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1436,18 +1411,10 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["target_http_proxy_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "proxy_bind": True,
- "region": "region_value",
- "self_link": "self_link_value",
- "url_map": "url_map_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_http_proxy": "sample3",
}
request = request_type(request_init)
@@ -1460,10 +1427,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get(request)
-def test_insert_unary_rest_flattened():
+def test_get_rest_flattened():
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1472,30 +1439,996 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.TargetHttpProxy()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
-
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_http_proxy": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ target_http_proxy="target_http_proxy_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetHttpProxy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/targetHttpProxies/{target_http_proxy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetRegionTargetHttpProxyRequest(),
+ project="project_value",
+ region="region_value",
+ target_http_proxy="target_http_proxy_value",
+ )
+
+
+def test_get_rest_error():
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionTargetHttpProxyRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["target_http_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertRegionTargetHttpProxyRequest,
+):
+ transport_class = transports.RegionTargetHttpProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.RegionTargetHttpProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "region",
+ "targetHttpProxyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.RegionTargetHttpProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionTargetHttpProxiesRestInterceptor(),
+ )
+ client = RegionTargetHttpProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionTargetHttpProxiesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionTargetHttpProxiesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionTargetHttpProxyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionTargetHttpProxyRequest
+):
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["target_http_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ target_http_proxy_resource=compute.TargetHttpProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/targetHttpProxies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertRegionTargetHttpProxyRequest(),
+ project="project_value",
+ region="region_value",
+ target_http_proxy_resource=compute.TargetHttpProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionTargetHttpProxyRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["target_http_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertRegionTargetHttpProxyRequest,
+):
+ transport_class = transports.RegionTargetHttpProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.RegionTargetHttpProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "region",
+ "targetHttpProxyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionTargetHttpProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionTargetHttpProxiesRestInterceptor(),
+ )
+ client = RegionTargetHttpProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionTargetHttpProxiesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionTargetHttpProxiesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionTargetHttpProxyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionTargetHttpProxyRequest
+):
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["target_http_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ target_http_proxy_resource=compute.TargetHttpProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/targetHttpProxies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertRegionTargetHttpProxyRequest(),
+ project="project_value",
+ region="region_value",
+ target_http_proxy_resource=compute.TargetHttpProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListRegionTargetHttpProxiesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetHttpProxyList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetHttpProxyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(
+ request_type=compute.ListRegionTargetHttpProxiesRequest,
+):
+ transport_class = transports.RegionTargetHttpProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetHttpProxyList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetHttpProxyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.RegionTargetHttpProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.RegionTargetHttpProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionTargetHttpProxiesRestInterceptor(),
+ )
+ client = RegionTargetHttpProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionTargetHttpProxiesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.RegionTargetHttpProxiesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.TargetHttpProxyList.to_json(
+ compute.TargetHttpProxyList()
+ )
+
+ request = compute.ListRegionTargetHttpProxiesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.TargetHttpProxyList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListRegionTargetHttpProxiesRequest
+):
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetHttpProxyList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- target_http_proxy_resource=compute.TargetHttpProxy(
- creation_timestamp="creation_timestamp_value"
- ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TargetHttpProxyList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.list(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1508,7 +2441,7 @@ def test_insert_unary_rest_flattened():
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_list_rest_flattened_error(transport: str = "rest"):
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1517,73 +2450,167 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertRegionTargetHttpProxyRequest(),
+ client.list(
+ compute.ListRegionTargetHttpProxiesRequest(),
project="project_value",
region="region_value",
- target_http_proxy_resource=compute.TargetHttpProxy(
- creation_timestamp="creation_timestamp_value"
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = RegionTargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.TargetHttpProxyList(
+ items=[
+ compute.TargetHttpProxy(),
+ compute.TargetHttpProxy(),
+ compute.TargetHttpProxy(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.TargetHttpProxyList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.TargetHttpProxyList(
+ items=[
+ compute.TargetHttpProxy(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.TargetHttpProxyList(
+ items=[
+ compute.TargetHttpProxy(),
+ compute.TargetHttpProxy(),
+ ],
),
)
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.TargetHttpProxyList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+ pager = client.list(request=sample_request)
-def test_insert_unary_rest_error():
- client = RegionTargetHttpProxiesClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
- )
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.TargetHttpProxy) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
@pytest.mark.parametrize(
"request_type",
[
- compute.ListRegionTargetHttpProxiesRequest,
+ compute.SetUrlMapRegionTargetHttpProxyRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_set_url_map_rest(request_type):
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_http_proxy": "sample3",
+ }
+ request_init["url_map_reference_resource"] = {"url_map": "url_map_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpProxyList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpProxyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.set_url_map(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(
- request_type=compute.ListRegionTargetHttpProxiesRequest,
+def test_set_url_map_rest_required_fields(
+ request_type=compute.SetUrlMapRegionTargetHttpProxyRequest,
):
transport_class = transports.RegionTargetHttpProxiesRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
+ request_init["target_http_proxy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1595,27 +2622,20 @@ def test_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).set_url_map._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
+ jsonified_request["targetHttpProxy"] = "target_http_proxy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).set_url_map._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1623,6 +2643,8 @@ def test_list_rest_required_fields(
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
+ assert "targetHttpProxy" in jsonified_request
+ assert jsonified_request["targetHttpProxy"] == "target_http_proxy_value"
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1631,7 +2653,7 @@ def test_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpProxyList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1642,51 +2664,46 @@ def test_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpProxyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.set_url_map(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_set_url_map_rest_unset_required_fields():
transport = transports.RegionTargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.set_url_map._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
"project",
"region",
+ "targetHttpProxy",
+ "urlMapReferenceResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_set_url_map_rest_interceptors(null_interceptor):
transport = transports.RegionTargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1699,9 +2716,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionTargetHttpProxiesRestInterceptor, "post_list"
+ transports.RegionTargetHttpProxiesRestInterceptor, "post_set_url_map"
) as post, mock.patch.object(
- transports.RegionTargetHttpProxiesRestInterceptor, "pre_list"
+ transports.RegionTargetHttpProxiesRestInterceptor, "pre_set_url_map"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1716,19 +2733,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.TargetHttpProxyList.to_json(
- compute.TargetHttpProxyList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListRegionTargetHttpProxiesRequest()
+ request = compute.SetUrlMapRegionTargetHttpProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.TargetHttpProxyList
+ post.return_value = compute.Operation
- client.list(
+ client.set_url_map(
request,
metadata=[
("key", "val"),
@@ -1740,8 +2755,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListRegionTargetHttpProxiesRequest
+def test_set_url_map_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetUrlMapRegionTargetHttpProxyRequest
):
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1749,7 +2764,12 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_http_proxy": "sample3",
+ }
+ request_init["url_map_reference_resource"] = {"url_map": "url_map_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1761,10 +2781,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.set_url_map(request)
-def test_list_rest_flattened():
+def test_set_url_map_rest_flattened():
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1773,40 +2793,46 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpProxyList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_http_proxy": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ target_http_proxy="target_http_proxy_value",
+ url_map_reference_resource=compute.UrlMapReference(url_map="url_map_value"),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpProxyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.set_url_map(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/targetHttpProxies"
+ "%s/compute/v1/projects/{project}/regions/{region}/targetHttpProxies/{target_http_proxy}/setUrlMap"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_set_url_map_rest_flattened_error(transport: str = "rest"):
client = RegionTargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1815,73 +2841,20 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListRegionTargetHttpProxiesRequest(),
+ client.set_url_map(
+ compute.SetUrlMapRegionTargetHttpProxyRequest(),
project="project_value",
region="region_value",
+ target_http_proxy="target_http_proxy_value",
+ url_map_reference_resource=compute.UrlMapReference(url_map="url_map_value"),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_set_url_map_rest_error():
client = RegionTargetHttpProxiesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.TargetHttpProxyList(
- items=[
- compute.TargetHttpProxy(),
- compute.TargetHttpProxy(),
- compute.TargetHttpProxy(),
- ],
- next_page_token="abc",
- ),
- compute.TargetHttpProxyList(
- items=[],
- next_page_token="def",
- ),
- compute.TargetHttpProxyList(
- items=[
- compute.TargetHttpProxy(),
- ],
- next_page_token="ghi",
- ),
- compute.TargetHttpProxyList(
- items=[
- compute.TargetHttpProxy(),
- compute.TargetHttpProxy(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.TargetHttpProxyList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.TargetHttpProxy) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
@@ -1943,28 +2916,6 @@ def test_set_url_map_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_set_url_map_unary_rest_required_fields(
@@ -2296,6 +3247,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionTargetHttpProxiesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_target_http_proxies_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2331,6 +3295,14 @@ def test_region_target_http_proxies_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_target_http_proxies_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_target_https_proxies.py b/tests/unit/gapic/compute_v1/test_region_target_https_proxies.py
index c9992c1f3..99b081ee7 100644
--- a/tests/unit/gapic/compute_v1/test_region_target_https_proxies.py
+++ b/tests/unit/gapic/compute_v1/test_region_target_https_proxies.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -561,7 +563,7 @@ def test_region_target_https_proxies_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -609,10 +611,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -637,7 +639,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteRegionTargetHttpsProxyRequest,
):
transport_class = transports.RegionTargetHttpsProxiesRestTransport
@@ -710,14 +712,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.RegionTargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -736,7 +738,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.RegionTargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -776,7 +778,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -788,7 +790,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteRegionTargetHttpsProxyRequest
):
client = RegionTargetHttpsProxiesClient(
@@ -813,10 +815,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -850,7 +852,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -863,7 +865,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -872,7 +874,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteRegionTargetHttpsProxyRequest(),
project="project_value",
region="region_value",
@@ -880,7 +882,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -889,11 +891,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRegionTargetHttpsProxyRequest,
+ compute.DeleteRegionTargetHttpsProxyRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -910,53 +912,45 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpsProxy(
- authorization_policy="authorization_policy_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- proxy_bind=True,
- quic_override="quic_override_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- server_tls_policy="server_tls_policy_value",
- ssl_certificates=["ssl_certificates_value"],
- ssl_policy="ssl_policy_value",
- url_map="url_map_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpsProxy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.TargetHttpsProxy)
- assert response.authorization_policy == "authorization_policy_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.proxy_bind is True
- assert response.quic_override == "quic_override_value"
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.server_tls_policy == "server_tls_policy_value"
- assert response.ssl_certificates == ["ssl_certificates_value"]
- assert response.ssl_policy == "ssl_policy_value"
- assert response.url_map == "url_map_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(
- request_type=compute.GetRegionTargetHttpsProxyRequest,
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteRegionTargetHttpsProxyRequest,
):
transport_class = transports.RegionTargetHttpsProxiesRestTransport
@@ -975,7 +969,7 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -986,7 +980,9 @@ def test_get_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1004,7 +1000,7 @@ def test_get_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpsProxy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1015,32 +1011,32 @@ def test_get_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpsProxy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.RegionTargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -1052,7 +1048,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.RegionTargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1065,9 +1061,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionTargetHttpsProxiesRestInterceptor, "post_get"
+ transports.RegionTargetHttpsProxiesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.RegionTargetHttpsProxiesRestInterceptor, "pre_get"
+ transports.RegionTargetHttpsProxiesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1082,19 +1078,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.TargetHttpsProxy.to_json(
- compute.TargetHttpsProxy()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRegionTargetHttpsProxyRequest()
+ request = compute.DeleteRegionTargetHttpsProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.TargetHttpsProxy
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1106,8 +1100,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRegionTargetHttpsProxyRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteRegionTargetHttpsProxyRequest
):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1131,10 +1125,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1143,7 +1137,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpsProxy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1163,12 +1157,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpsProxy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1181,7 +1175,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1190,15 +1184,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRegionTargetHttpsProxyRequest(),
+ client.delete_unary(
+ compute.DeleteRegionTargetHttpsProxyRequest(),
project="project_value",
region="region_value",
target_https_proxy="target_https_proxy_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1207,107 +1201,81 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertRegionTargetHttpsProxyRequest,
+ compute.GetRegionTargetHttpsProxyRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["target_https_proxy_resource"] = {
- "authorization_policy": "authorization_policy_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "proxy_bind": True,
- "quic_override": "quic_override_value",
- "region": "region_value",
- "self_link": "self_link_value",
- "server_tls_policy": "server_tls_policy_value",
- "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
- "ssl_policy": "ssl_policy_value",
- "url_map": "url_map_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_https_proxy": "sample3",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ proxy_bind=True,
+ quic_override="quic_override_value",
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ server_tls_policy="server_tls_policy_value",
+ ssl_certificates=["ssl_certificates_value"],
+ ssl_policy="ssl_policy_value",
+ url_map="url_map_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TargetHttpsProxy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.TargetHttpsProxy)
+ assert response.authorization_policy == "authorization_policy_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.proxy_bind is True
+ assert response.quic_override == "quic_override_value"
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.server_tls_policy == "server_tls_policy_value"
+ assert response.ssl_certificates == ["ssl_certificates_value"]
+ assert response.ssl_policy == "ssl_policy_value"
+ assert response.url_map == "url_map_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertRegionTargetHttpsProxyRequest,
+def test_get_rest_required_fields(
+ request_type=compute.GetRegionTargetHttpsProxyRequest,
):
transport_class = transports.RegionTargetHttpsProxiesRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
+ request_init["target_https_proxy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1319,19 +1287,18 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
+ jsonified_request["targetHttpsProxy"] = "target_https_proxy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1339,6 +1306,8 @@ def test_insert_unary_rest_required_fields(
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
+ assert "targetHttpsProxy" in jsonified_request
+ assert jsonified_request["targetHttpsProxy"] == "target_https_proxy_value"
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1347,7 +1316,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.TargetHttpsProxy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1358,45 +1327,44 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TargetHttpsProxy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.RegionTargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"project",
"region",
- "targetHttpsProxyResource",
+ "targetHttpsProxy",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.RegionTargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1409,9 +1377,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionTargetHttpsProxiesRestInterceptor, "post_insert"
+ transports.RegionTargetHttpsProxiesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.RegionTargetHttpsProxiesRestInterceptor, "pre_insert"
+ transports.RegionTargetHttpsProxiesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1426,17 +1394,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.TargetHttpsProxy.to_json(
+ compute.TargetHttpsProxy()
+ )
- request = compute.InsertRegionTargetHttpsProxyRequest()
+ request = compute.GetRegionTargetHttpsProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.TargetHttpsProxy
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1448,32 +1418,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertRegionTargetHttpsProxyRequest
-):
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRegionTargetHttpsProxyRequest
+):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["target_https_proxy_resource"] = {
- "authorization_policy": "authorization_policy_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "proxy_bind": True,
- "quic_override": "quic_override_value",
- "region": "region_value",
- "self_link": "self_link_value",
- "server_tls_policy": "server_tls_policy_value",
- "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
- "ssl_policy": "ssl_policy_value",
- "url_map": "url_map_value",
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_https_proxy": "sample3",
}
request = request_type(request_init)
@@ -1486,10 +1443,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get(request)
-def test_insert_unary_rest_flattened():
+def test_get_rest_flattened():
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1498,43 +1455,45 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.TargetHttpsProxy()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_https_proxy": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- target_https_proxy_resource=compute.TargetHttpsProxy(
- authorization_policy="authorization_policy_value"
- ),
+ target_https_proxy="target_https_proxy_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TargetHttpsProxy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies"
+ "%s/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies/{target_https_proxy}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1543,17 +1502,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertRegionTargetHttpsProxyRequest(),
+ client.get(
+ compute.GetRegionTargetHttpsProxyRequest(),
project="project_value",
region="region_value",
- target_https_proxy_resource=compute.TargetHttpsProxy(
- authorization_policy="authorization_policy_value"
- ),
+ target_https_proxy="target_https_proxy_value",
)
-def test_insert_unary_rest_error():
+def test_get_rest_error():
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1562,11 +1519,11 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListRegionTargetHttpsProxiesRequest,
+ compute.InsertRegionTargetHttpsProxyRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_insert_rest(request_type):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1574,36 +1531,89 @@ def test_list_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2"}
+ request_init["target_https_proxy_resource"] = {
+ "authorization_policy": "authorization_policy_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "quic_override": "quic_override_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_tls_policy": "server_tls_policy_value",
+ "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
+ "ssl_policy": "ssl_policy_value",
+ "url_map": "url_map_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpsProxyList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpsProxyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(
- request_type=compute.ListRegionTargetHttpsProxiesRequest,
+def test_insert_rest_required_fields(
+ request_type=compute.InsertRegionTargetHttpsProxyRequest,
):
transport_class = transports.RegionTargetHttpsProxiesRestTransport
@@ -1621,7 +1631,7 @@ def test_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1631,17 +1641,9 @@ def test_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1657,7 +1659,7 @@ def test_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpsProxyList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1668,51 +1670,45 @@ def test_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpsProxyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.RegionTargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
"project",
"region",
+ "targetHttpsProxyResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.RegionTargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1725,9 +1721,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionTargetHttpsProxiesRestInterceptor, "post_list"
+ transports.RegionTargetHttpsProxiesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.RegionTargetHttpsProxiesRestInterceptor, "pre_list"
+ transports.RegionTargetHttpsProxiesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1742,19 +1738,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.TargetHttpsProxyList.to_json(
- compute.TargetHttpsProxyList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListRegionTargetHttpsProxiesRequest()
+ request = compute.InsertRegionTargetHttpsProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.TargetHttpsProxyList
+ post.return_value = compute.Operation
- client.list(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1766,8 +1760,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListRegionTargetHttpsProxiesRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionTargetHttpsProxyRequest
):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1776,6 +1770,23 @@ def test_list_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2"}
+ request_init["target_https_proxy_resource"] = {
+ "authorization_policy": "authorization_policy_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "quic_override": "quic_override_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_tls_policy": "server_tls_policy_value",
+ "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
+ "ssl_policy": "ssl_policy_value",
+ "url_map": "url_map_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1787,10 +1798,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.insert(request)
-def test_list_rest_flattened():
+def test_insert_rest_flattened():
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1799,7 +1810,7 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpsProxyList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "region": "sample2"}
@@ -1808,18 +1819,21 @@ def test_list_rest_flattened():
mock_args = dict(
project="project_value",
region="region_value",
+ target_https_proxy_resource=compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpsProxyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1832,7 +1846,7 @@ def test_list_rest_flattened():
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1841,21 +1855,652 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListRegionTargetHttpsProxiesRequest(),
+ client.insert(
+ compute.InsertRegionTargetHttpsProxyRequest(),
project="project_value",
region="region_value",
+ target_https_proxy_resource=compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value"
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_insert_rest_error():
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionTargetHttpsProxyRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ transport="rest",
)
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["target_https_proxy_resource"] = {
+ "authorization_policy": "authorization_policy_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "quic_override": "quic_override_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_tls_policy": "server_tls_policy_value",
+ "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
+ "ssl_policy": "ssl_policy_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
# Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertRegionTargetHttpsProxyRequest,
+):
+ transport_class = transports.RegionTargetHttpsProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.RegionTargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "region",
+ "targetHttpsProxyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionTargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionTargetHttpsProxiesRestInterceptor(),
+ )
+ client = RegionTargetHttpsProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionTargetHttpsProxiesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionTargetHttpsProxiesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionTargetHttpsProxyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionTargetHttpsProxyRequest
+):
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["target_https_proxy_resource"] = {
+ "authorization_policy": "authorization_policy_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "quic_override": "quic_override_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_tls_policy": "server_tls_policy_value",
+ "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
+ "ssl_policy": "ssl_policy_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ target_https_proxy_resource=compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertRegionTargetHttpsProxyRequest(),
+ project="project_value",
+ region="region_value",
+ target_https_proxy_resource=compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListRegionTargetHttpsProxiesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetHttpsProxyList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetHttpsProxyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(
+ request_type=compute.ListRegionTargetHttpsProxiesRequest,
+):
+ transport_class = transports.RegionTargetHttpsProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetHttpsProxyList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetHttpsProxyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.RegionTargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.RegionTargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionTargetHttpsProxiesRestInterceptor(),
+ )
+ client = RegionTargetHttpsProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionTargetHttpsProxiesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.RegionTargetHttpsProxiesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.TargetHttpsProxyList.to_json(
+ compute.TargetHttpsProxyList()
+ )
+
+ request = compute.ListRegionTargetHttpsProxiesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.TargetHttpsProxyList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListRegionTargetHttpsProxiesRequest
+):
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetHttpsProxyList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetHttpsProxyList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListRegionTargetHttpsProxiesRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
# TODO(kbandes): remove this mock unless there's a good reason for it.
# with mock.patch.object(path_template, 'transcode') as transcode:
# Set the response as a series of pages
@@ -1868,55 +2513,1128 @@ def test_list_rest_pager(transport: str = "rest"):
],
next_page_token="abc",
),
- compute.TargetHttpsProxyList(
- items=[],
- next_page_token="def",
+ compute.TargetHttpsProxyList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.TargetHttpsProxyList(
+ items=[
+ compute.TargetHttpsProxy(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.TargetHttpsProxyList(
+ items=[
+ compute.TargetHttpsProxy(),
+ compute.TargetHttpsProxy(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.TargetHttpsProxyList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.TargetHttpsProxy) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRegionTargetHttpsProxyRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_https_proxy": "sample3",
+ }
+ request_init["target_https_proxy_resource"] = {
+ "authorization_policy": "authorization_policy_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "quic_override": "quic_override_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_tls_policy": "server_tls_policy_value",
+ "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
+ "ssl_policy": "ssl_policy_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(
+ request_type=compute.PatchRegionTargetHttpsProxyRequest,
+):
+ transport_class = transports.RegionTargetHttpsProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["target_https_proxy"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["targetHttpsProxy"] = "target_https_proxy_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "targetHttpsProxy" in jsonified_request
+ assert jsonified_request["targetHttpsProxy"] == "target_https_proxy_value"
+
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.RegionTargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "region",
+ "targetHttpsProxy",
+ "targetHttpsProxyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.RegionTargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionTargetHttpsProxiesRestInterceptor(),
+ )
+ client = RegionTargetHttpsProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionTargetHttpsProxiesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.RegionTargetHttpsProxiesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchRegionTargetHttpsProxyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRegionTargetHttpsProxyRequest
+):
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_https_proxy": "sample3",
+ }
+ request_init["target_https_proxy_resource"] = {
+ "authorization_policy": "authorization_policy_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "quic_override": "quic_override_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_tls_policy": "server_tls_policy_value",
+ "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
+ "ssl_policy": "ssl_policy_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_https_proxy": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ target_https_proxy="target_https_proxy_value",
+ target_https_proxy_resource=compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies/{target_https_proxy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchRegionTargetHttpsProxyRequest(),
+ project="project_value",
+ region="region_value",
+ target_https_proxy="target_https_proxy_value",
+ target_https_proxy_resource=compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value"
+ ),
+ )
+
+
+def test_patch_rest_error():
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRegionTargetHttpsProxyRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_https_proxy": "sample3",
+ }
+ request_init["target_https_proxy_resource"] = {
+ "authorization_policy": "authorization_policy_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "quic_override": "quic_override_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_tls_policy": "server_tls_policy_value",
+ "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
+ "ssl_policy": "ssl_policy_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchRegionTargetHttpsProxyRequest,
+):
+ transport_class = transports.RegionTargetHttpsProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["target_https_proxy"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["targetHttpsProxy"] = "target_https_proxy_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "targetHttpsProxy" in jsonified_request
+ assert jsonified_request["targetHttpsProxy"] == "target_https_proxy_value"
+
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_unary_rest_unset_required_fields():
+ transport = transports.RegionTargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "region",
+ "targetHttpsProxy",
+ "targetHttpsProxyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionTargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionTargetHttpsProxiesRestInterceptor(),
+ )
+ client = RegionTargetHttpsProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionTargetHttpsProxiesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.RegionTargetHttpsProxiesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchRegionTargetHttpsProxyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRegionTargetHttpsProxyRequest
+):
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_https_proxy": "sample3",
+ }
+ request_init["target_https_proxy_resource"] = {
+ "authorization_policy": "authorization_policy_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "quic_override": "quic_override_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_tls_policy": "server_tls_policy_value",
+ "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
+ "ssl_policy": "ssl_policy_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_unary(request)
+
+
+def test_patch_unary_rest_flattened():
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_https_proxy": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ target_https_proxy="target_https_proxy_value",
+ target_https_proxy_resource=compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value"
),
- compute.TargetHttpsProxyList(
- items=[
- compute.TargetHttpsProxy(),
- ],
- next_page_token="ghi",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies/{target_https_proxy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_unary(
+ compute.PatchRegionTargetHttpsProxyRequest(),
+ project="project_value",
+ region="region_value",
+ target_https_proxy="target_https_proxy_value",
+ target_https_proxy_resource=compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value"
),
- compute.TargetHttpsProxyList(
- items=[
- compute.TargetHttpsProxy(),
- compute.TargetHttpsProxy(),
- ],
+ )
+
+
+def test_patch_unary_rest_error():
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetSslCertificatesRegionTargetHttpsProxyRequest,
+ dict,
+ ],
+)
+def test_set_ssl_certificates_rest(request_type):
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_https_proxy": "sample3",
+ }
+ request_init[
+ "region_target_https_proxies_set_ssl_certificates_request_resource"
+ ] = {"ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"]}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_ssl_certificates(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_set_ssl_certificates_rest_required_fields(
+ request_type=compute.SetSslCertificatesRegionTargetHttpsProxyRequest,
+):
+ transport_class = transports.RegionTargetHttpsProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["target_https_proxy"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_ssl_certificates._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["targetHttpsProxy"] = "target_https_proxy_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_ssl_certificates._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "targetHttpsProxy" in jsonified_request
+ assert jsonified_request["targetHttpsProxy"] == "target_https_proxy_value"
+
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_ssl_certificates(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_ssl_certificates_rest_unset_required_fields():
+ transport = transports.RegionTargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_ssl_certificates._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "region",
+ "regionTargetHttpsProxiesSetSslCertificatesRequestResource",
+ "targetHttpsProxy",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_ssl_certificates_rest_interceptors(null_interceptor):
+ transport = transports.RegionTargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionTargetHttpsProxiesRestInterceptor(),
+ )
+ client = RegionTargetHttpsProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionTargetHttpsProxiesRestInterceptor, "post_set_ssl_certificates"
+ ) as post, mock.patch.object(
+ transports.RegionTargetHttpsProxiesRestInterceptor, "pre_set_ssl_certificates"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.SetSslCertificatesRegionTargetHttpsProxyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.set_ssl_certificates(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_ssl_certificates_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.SetSslCertificatesRegionTargetHttpsProxyRequest,
+):
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_https_proxy": "sample3",
+ }
+ request_init[
+ "region_target_https_proxies_set_ssl_certificates_request_resource"
+ ] = {"ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"]}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_ssl_certificates(request)
+
+
+def test_set_ssl_certificates_rest_flattened():
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "target_https_proxy": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ target_https_proxy="target_https_proxy_value",
+ region_target_https_proxies_set_ssl_certificates_request_resource=compute.RegionTargetHttpsProxiesSetSslCertificatesRequest(
+ ssl_certificates=["ssl_certificates_value"]
),
)
- # Two responses for two calls
- response = response + response
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_ssl_certificates(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies/{target_https_proxy}/setSslCertificates"
+ % client.transport._host,
+ args[1],
+ )
- # Wrap the values into proper Response objs
- response = tuple(compute.TargetHttpsProxyList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
- sample_request = {"project": "sample1", "region": "sample2"}
+def test_set_ssl_certificates_rest_flattened_error(transport: str = "rest"):
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
- pager = client.list(request=sample_request)
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_ssl_certificates(
+ compute.SetSslCertificatesRegionTargetHttpsProxyRequest(),
+ project="project_value",
+ region="region_value",
+ target_https_proxy="target_https_proxy_value",
+ region_target_https_proxies_set_ssl_certificates_request_resource=compute.RegionTargetHttpsProxiesSetSslCertificatesRequest(
+ ssl_certificates=["ssl_certificates_value"]
+ ),
+ )
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.TargetHttpsProxy) for i in results)
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
+def test_set_ssl_certificates_rest_error():
+ client = RegionTargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchRegionTargetHttpsProxyRequest,
+ compute.SetSslCertificatesRegionTargetHttpsProxyRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_set_ssl_certificates_unary_rest(request_type):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1928,23 +3646,9 @@ def test_patch_unary_rest(request_type):
"region": "sample2",
"target_https_proxy": "sample3",
}
- request_init["target_https_proxy_resource"] = {
- "authorization_policy": "authorization_policy_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "proxy_bind": True,
- "quic_override": "quic_override_value",
- "region": "region_value",
- "self_link": "self_link_value",
- "server_tls_policy": "server_tls_policy_value",
- "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
- "ssl_policy": "ssl_policy_value",
- "url_map": "url_map_value",
- }
+ request_init[
+ "region_target_https_proxies_set_ssl_certificates_request_resource"
+ ] = {"ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"]}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1981,36 +3685,14 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.set_ssl_certificates_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchRegionTargetHttpsProxyRequest,
+def test_set_ssl_certificates_unary_rest_required_fields(
+ request_type=compute.SetSslCertificatesRegionTargetHttpsProxyRequest,
):
transport_class = transports.RegionTargetHttpsProxiesRestTransport
@@ -2029,7 +3711,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).set_ssl_certificates._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2040,7 +3722,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).set_ssl_certificates._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -2071,7 +3753,7 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -2083,34 +3765,34 @@ def test_patch_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.set_ssl_certificates_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_set_ssl_certificates_unary_rest_unset_required_fields():
transport = transports.RegionTargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.set_ssl_certificates._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"project",
"region",
+ "regionTargetHttpsProxiesSetSslCertificatesRequestResource",
"targetHttpsProxy",
- "targetHttpsProxyResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_set_ssl_certificates_unary_rest_interceptors(null_interceptor):
transport = transports.RegionTargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2123,9 +3805,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionTargetHttpsProxiesRestInterceptor, "post_patch"
+ transports.RegionTargetHttpsProxiesRestInterceptor, "post_set_ssl_certificates"
) as post, mock.patch.object(
- transports.RegionTargetHttpsProxiesRestInterceptor, "pre_patch"
+ transports.RegionTargetHttpsProxiesRestInterceptor, "pre_set_ssl_certificates"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2142,7 +3824,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchRegionTargetHttpsProxyRequest()
+ request = compute.SetSslCertificatesRegionTargetHttpsProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2150,7 +3832,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.set_ssl_certificates_unary(
request,
metadata=[
("key", "val"),
@@ -2162,8 +3844,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchRegionTargetHttpsProxyRequest
+def test_set_ssl_certificates_unary_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.SetSslCertificatesRegionTargetHttpsProxyRequest,
):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2176,23 +3859,9 @@ def test_patch_unary_rest_bad_request(
"region": "sample2",
"target_https_proxy": "sample3",
}
- request_init["target_https_proxy_resource"] = {
- "authorization_policy": "authorization_policy_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "proxy_bind": True,
- "quic_override": "quic_override_value",
- "region": "region_value",
- "self_link": "self_link_value",
- "server_tls_policy": "server_tls_policy_value",
- "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
- "ssl_policy": "ssl_policy_value",
- "url_map": "url_map_value",
- }
+ request_init[
+ "region_target_https_proxies_set_ssl_certificates_request_resource"
+ ] = {"ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"]}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2204,10 +3873,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.set_ssl_certificates_unary(request)
-def test_patch_unary_rest_flattened():
+def test_set_ssl_certificates_unary_rest_flattened():
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2230,8 +3899,8 @@ def test_patch_unary_rest_flattened():
project="project_value",
region="region_value",
target_https_proxy="target_https_proxy_value",
- target_https_proxy_resource=compute.TargetHttpsProxy(
- authorization_policy="authorization_policy_value"
+ region_target_https_proxies_set_ssl_certificates_request_resource=compute.RegionTargetHttpsProxiesSetSslCertificatesRequest(
+ ssl_certificates=["ssl_certificates_value"]
),
)
mock_args.update(sample_request)
@@ -2244,20 +3913,20 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.set_ssl_certificates_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies/{target_https_proxy}"
+ "%s/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies/{target_https_proxy}/setSslCertificates"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_ssl_certificates_unary_rest_flattened_error(transport: str = "rest"):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2266,18 +3935,18 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchRegionTargetHttpsProxyRequest(),
+ client.set_ssl_certificates_unary(
+ compute.SetSslCertificatesRegionTargetHttpsProxyRequest(),
project="project_value",
region="region_value",
target_https_proxy="target_https_proxy_value",
- target_https_proxy_resource=compute.TargetHttpsProxy(
- authorization_policy="authorization_policy_value"
+ region_target_https_proxies_set_ssl_certificates_request_resource=compute.RegionTargetHttpsProxiesSetSslCertificatesRequest(
+ ssl_certificates=["ssl_certificates_value"]
),
)
-def test_patch_unary_rest_error():
+def test_set_ssl_certificates_unary_rest_error():
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2286,11 +3955,11 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetSslCertificatesRegionTargetHttpsProxyRequest,
+ compute.SetUrlMapRegionTargetHttpsProxyRequest,
dict,
],
)
-def test_set_ssl_certificates_unary_rest(request_type):
+def test_set_url_map_rest(request_type):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2302,9 +3971,7 @@ def test_set_ssl_certificates_unary_rest(request_type):
"region": "sample2",
"target_https_proxy": "sample3",
}
- request_init[
- "region_target_https_proxies_set_ssl_certificates_request_resource"
- ] = {"ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"]}
+ request_init["url_map_reference_resource"] = {"url_map": "url_map_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -2341,10 +4008,10 @@ def test_set_ssl_certificates_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_ssl_certificates_unary(request)
+ response = client.set_url_map(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2369,8 +4036,8 @@ def test_set_ssl_certificates_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_set_ssl_certificates_unary_rest_required_fields(
- request_type=compute.SetSslCertificatesRegionTargetHttpsProxyRequest,
+def test_set_url_map_rest_required_fields(
+ request_type=compute.SetUrlMapRegionTargetHttpsProxyRequest,
):
transport_class = transports.RegionTargetHttpsProxiesRestTransport
@@ -2389,7 +4056,7 @@ def test_set_ssl_certificates_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_ssl_certificates._get_unset_required_fields(jsonified_request)
+ ).set_url_map._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2400,7 +4067,7 @@ def test_set_ssl_certificates_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_ssl_certificates._get_unset_required_fields(jsonified_request)
+ ).set_url_map._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -2443,34 +4110,34 @@ def test_set_ssl_certificates_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_ssl_certificates_unary(request)
+ response = client.set_url_map(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_ssl_certificates_unary_rest_unset_required_fields():
+def test_set_url_map_rest_unset_required_fields():
transport = transports.RegionTargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_ssl_certificates._get_unset_required_fields({})
+ unset_fields = transport.set_url_map._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"project",
"region",
- "regionTargetHttpsProxiesSetSslCertificatesRequestResource",
"targetHttpsProxy",
+ "urlMapReferenceResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_ssl_certificates_unary_rest_interceptors(null_interceptor):
+def test_set_url_map_rest_interceptors(null_interceptor):
transport = transports.RegionTargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2483,9 +4150,9 @@ def test_set_ssl_certificates_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionTargetHttpsProxiesRestInterceptor, "post_set_ssl_certificates"
+ transports.RegionTargetHttpsProxiesRestInterceptor, "post_set_url_map"
) as post, mock.patch.object(
- transports.RegionTargetHttpsProxiesRestInterceptor, "pre_set_ssl_certificates"
+ transports.RegionTargetHttpsProxiesRestInterceptor, "pre_set_url_map"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2502,7 +4169,7 @@ def test_set_ssl_certificates_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetSslCertificatesRegionTargetHttpsProxyRequest()
+ request = compute.SetUrlMapRegionTargetHttpsProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2510,7 +4177,7 @@ def test_set_ssl_certificates_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.set_ssl_certificates_unary(
+ client.set_url_map(
request,
metadata=[
("key", "val"),
@@ -2522,9 +4189,8 @@ def test_set_ssl_certificates_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_ssl_certificates_unary_rest_bad_request(
- transport: str = "rest",
- request_type=compute.SetSslCertificatesRegionTargetHttpsProxyRequest,
+def test_set_url_map_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetUrlMapRegionTargetHttpsProxyRequest
):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2537,9 +4203,7 @@ def test_set_ssl_certificates_unary_rest_bad_request(
"region": "sample2",
"target_https_proxy": "sample3",
}
- request_init[
- "region_target_https_proxies_set_ssl_certificates_request_resource"
- ] = {"ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"]}
+ request_init["url_map_reference_resource"] = {"url_map": "url_map_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2551,10 +4215,10 @@ def test_set_ssl_certificates_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_ssl_certificates_unary(request)
+ client.set_url_map(request)
-def test_set_ssl_certificates_unary_rest_flattened():
+def test_set_url_map_rest_flattened():
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2577,9 +4241,7 @@ def test_set_ssl_certificates_unary_rest_flattened():
project="project_value",
region="region_value",
target_https_proxy="target_https_proxy_value",
- region_target_https_proxies_set_ssl_certificates_request_resource=compute.RegionTargetHttpsProxiesSetSslCertificatesRequest(
- ssl_certificates=["ssl_certificates_value"]
- ),
+ url_map_reference_resource=compute.UrlMapReference(url_map="url_map_value"),
)
mock_args.update(sample_request)
@@ -2591,20 +4253,20 @@ def test_set_ssl_certificates_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_ssl_certificates_unary(**mock_args)
+ client.set_url_map(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies/{target_https_proxy}/setSslCertificates"
+ "%s/compute/v1/projects/{project}/regions/{region}/targetHttpsProxies/{target_https_proxy}/setUrlMap"
% client.transport._host,
args[1],
)
-def test_set_ssl_certificates_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_url_map_rest_flattened_error(transport: str = "rest"):
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2613,18 +4275,16 @@ def test_set_ssl_certificates_unary_rest_flattened_error(transport: str = "rest"
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_ssl_certificates_unary(
- compute.SetSslCertificatesRegionTargetHttpsProxyRequest(),
+ client.set_url_map(
+ compute.SetUrlMapRegionTargetHttpsProxyRequest(),
project="project_value",
region="region_value",
target_https_proxy="target_https_proxy_value",
- region_target_https_proxies_set_ssl_certificates_request_resource=compute.RegionTargetHttpsProxiesSetSslCertificatesRequest(
- ssl_certificates=["ssl_certificates_value"]
- ),
+ url_map_reference_resource=compute.UrlMapReference(url_map="url_map_value"),
)
-def test_set_ssl_certificates_unary_rest_error():
+def test_set_url_map_rest_error():
client = RegionTargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2690,28 +4350,6 @@ def test_set_url_map_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_set_url_map_unary_rest_required_fields(
@@ -3043,6 +4681,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionTargetHttpsProxiesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_target_https_proxies_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3080,6 +4731,14 @@ def test_region_target_https_proxies_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_target_https_proxies_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_region_url_maps.py b/tests/unit/gapic/compute_v1/test_region_url_maps.py
index 1430c7b56..c8dd00594 100644
--- a/tests/unit/gapic/compute_v1/test_region_url_maps.py
+++ b/tests/unit/gapic/compute_v1/test_region_url_maps.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -525,7 +527,7 @@ def test_region_url_maps_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -569,10 +571,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -597,9 +599,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteRegionUrlMapRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteRegionUrlMapRequest):
transport_class = transports.RegionUrlMapsRestTransport
request_init = {}
@@ -670,14 +670,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.RegionUrlMapsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -696,7 +696,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.RegionUrlMapsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -736,7 +736,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -748,7 +748,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteRegionUrlMapRequest
):
client = RegionUrlMapsClient(
@@ -769,10 +769,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -806,7 +806,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -819,7 +819,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -828,7 +828,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteRegionUrlMapRequest(),
project="project_value",
region="region_value",
@@ -836,7 +836,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -845,11 +845,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRegionUrlMapRequest,
+ compute.DeleteRegionUrlMapRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -862,40 +862,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.UrlMap(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
- default_service="default_service_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.UrlMap.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.UrlMap)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.default_service == "default_service_value"
- assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetRegionUrlMapRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteRegionUrlMapRequest,
+):
transport_class = transports.RegionUrlMapsRestTransport
request_init = {}
@@ -913,7 +919,7 @@ def test_get_rest_required_fields(request_type=compute.GetRegionUrlMapRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -924,7 +930,9 @@ def test_get_rest_required_fields(request_type=compute.GetRegionUrlMapRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -942,7 +950,7 @@ def test_get_rest_required_fields(request_type=compute.GetRegionUrlMapRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.UrlMap()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -953,32 +961,32 @@ def test_get_rest_required_fields(request_type=compute.GetRegionUrlMapRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.UrlMap.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.RegionUrlMapsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -990,7 +998,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.RegionUrlMapsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1003,9 +1011,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionUrlMapsRestInterceptor, "post_get"
+ transports.RegionUrlMapsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.RegionUrlMapsRestInterceptor, "pre_get"
+ transports.RegionUrlMapsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1020,17 +1028,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.UrlMap.to_json(compute.UrlMap())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRegionUrlMapRequest()
+ request = compute.DeleteRegionUrlMapRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.UrlMap
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1042,8 +1050,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRegionUrlMapRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteRegionUrlMapRequest
):
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1063,10 +1071,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1075,7 +1083,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.UrlMap()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1095,12 +1103,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.UrlMap.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1113,7 +1121,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1122,15 +1130,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRegionUrlMapRequest(),
+ client.delete_unary(
+ compute.DeleteRegionUrlMapRequest(),
project="project_value",
region="region_value",
url_map="url_map_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1139,259 +1147,63 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertRegionUrlMapRequest,
+ compute.GetRegionUrlMapRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["url_map_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "default_route_action": {
- "cors_policy": {
- "allow_credentials": True,
- "allow_headers": ["allow_headers_value_1", "allow_headers_value_2"],
- "allow_methods": ["allow_methods_value_1", "allow_methods_value_2"],
- "allow_origin_regexes": [
- "allow_origin_regexes_value_1",
- "allow_origin_regexes_value_2",
- ],
- "allow_origins": ["allow_origins_value_1", "allow_origins_value_2"],
- "disabled": True,
- "expose_headers": ["expose_headers_value_1", "expose_headers_value_2"],
- "max_age": 722,
- },
- "fault_injection_policy": {
- "abort": {"http_status": 1219, "percentage": 0.10540000000000001},
- "delay": {
- "fixed_delay": {"nanos": 543, "seconds": 751},
- "percentage": 0.10540000000000001,
- },
- },
- "max_stream_duration": {},
- "request_mirror_policy": {"backend_service": "backend_service_value"},
- "retry_policy": {
- "num_retries": 1197,
- "per_try_timeout": {},
- "retry_conditions": [
- "retry_conditions_value_1",
- "retry_conditions_value_2",
- ],
- },
- "timeout": {},
- "url_rewrite": {
- "host_rewrite": "host_rewrite_value",
- "path_prefix_rewrite": "path_prefix_rewrite_value",
- },
- "weighted_backend_services": [
- {
- "backend_service": "backend_service_value",
- "header_action": {
- "request_headers_to_add": [
- {
- "header_name": "header_name_value",
- "header_value": "header_value_value",
- "replace": True,
- }
- ],
- "request_headers_to_remove": [
- "request_headers_to_remove_value_1",
- "request_headers_to_remove_value_2",
- ],
- "response_headers_to_add": {},
- "response_headers_to_remove": [
- "response_headers_to_remove_value_1",
- "response_headers_to_remove_value_2",
- ],
- },
- "weight": 648,
- }
- ],
- },
- "default_service": "default_service_value",
- "default_url_redirect": {
- "host_redirect": "host_redirect_value",
- "https_redirect": True,
- "path_redirect": "path_redirect_value",
- "prefix_redirect": "prefix_redirect_value",
- "redirect_response_code": "redirect_response_code_value",
- "strip_query": True,
- },
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "header_action": {},
- "host_rules": [
- {
- "description": "description_value",
- "hosts": ["hosts_value_1", "hosts_value_2"],
- "path_matcher": "path_matcher_value",
- }
- ],
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "path_matchers": [
- {
- "default_route_action": {},
- "default_service": "default_service_value",
- "default_url_redirect": {},
- "description": "description_value",
- "header_action": {},
- "name": "name_value",
- "path_rules": [
- {
- "paths": ["paths_value_1", "paths_value_2"],
- "route_action": {},
- "service": "service_value",
- "url_redirect": {},
- }
- ],
- "route_rules": [
- {
- "description": "description_value",
- "header_action": {},
- "match_rules": [
- {
- "full_path_match": "full_path_match_value",
- "header_matches": [
- {
- "exact_match": "exact_match_value",
- "header_name": "header_name_value",
- "invert_match": True,
- "prefix_match": "prefix_match_value",
- "present_match": True,
- "range_match": {
- "range_end": 931,
- "range_start": 1178,
- },
- "regex_match": "regex_match_value",
- "suffix_match": "suffix_match_value",
- }
- ],
- "ignore_case": True,
- "metadata_filters": [
- {
- "filter_labels": [
- {
- "name": "name_value",
- "value": "value_value",
- }
- ],
- "filter_match_criteria": "filter_match_criteria_value",
- }
- ],
- "prefix_match": "prefix_match_value",
- "query_parameter_matches": [
- {
- "exact_match": "exact_match_value",
- "name": "name_value",
- "present_match": True,
- "regex_match": "regex_match_value",
- }
- ],
- "regex_match": "regex_match_value",
- }
- ],
- "priority": 898,
- "route_action": {},
- "service": "service_value",
- "url_redirect": {},
- }
- ],
- }
- ],
- "region": "region_value",
- "self_link": "self_link_value",
- "tests": [
- {
- "description": "description_value",
- "expected_output_url": "expected_output_url_value",
- "expected_redirect_response_code": 3275,
- "headers": [{"name": "name_value", "value": "value_value"}],
- "host": "host_value",
- "path": "path_value",
- "service": "service_value",
- }
- ],
- }
+ request_init = {"project": "sample1", "region": "sample2", "url_map": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.UrlMap(
creation_timestamp="creation_timestamp_value",
+ default_service="default_service_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.UrlMap.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.UrlMap)
assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.default_service == "default_service_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertRegionUrlMapRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetRegionUrlMapRequest):
transport_class = transports.RegionUrlMapsRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
+ request_init["url_map"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1403,19 +1215,18 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
+ jsonified_request["urlMap"] = "url_map_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1423,6 +1234,8 @@ def test_insert_unary_rest_required_fields(
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
+ assert "urlMap" in jsonified_request
+ assert jsonified_request["urlMap"] == "url_map_value"
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1431,7 +1244,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.UrlMap()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1442,45 +1255,44 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.UrlMap.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.RegionUrlMapsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"project",
"region",
- "urlMapResource",
+ "urlMap",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.RegionUrlMapsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1493,9 +1305,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionUrlMapsRestInterceptor, "post_insert"
+ transports.RegionUrlMapsRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.RegionUrlMapsRestInterceptor, "pre_insert"
+ transports.RegionUrlMapsRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1510,17 +1322,17 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.UrlMap.to_json(compute.UrlMap())
- request = compute.InsertRegionUrlMapRequest()
+ request = compute.GetRegionUrlMapRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.UrlMap
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1532,14 +1344,113 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertRegionUrlMapRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRegionUrlMapRequest
):
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
)
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "url_map": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.UrlMap()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "url_map": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ url_map="url_map_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.UrlMap.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/urlMaps/{url_map}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetRegionUrlMapRequest(),
+ project="project_value",
+ region="region_value",
+ url_map="url_map_value",
+ )
+
+
+def test_get_rest_error():
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionUrlMapRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2"}
request_init["url_map_resource"] = {
@@ -1713,42 +1624,2081 @@ def test_insert_unary_rest_bad_request(
}
request = request_type(request_init)
- # Mock the http request call within the method and fake a BadRequest error.
- with mock.patch.object(Session, "request") as req, pytest.raises(
- core_exceptions.BadRequest
- ):
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 400
- response_value.request = Request()
- req.return_value = response_value
- client.insert_unary(request)
-
-
-def test_insert_unary_rest_flattened():
- client = RegionUrlMapsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport="rest",
- )
-
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
-
- # get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
-
- # get truthy value for each flattened field
- mock_args = dict(
- project="project_value",
- region="region_value",
- url_map_resource=compute.UrlMap(
- creation_timestamp="creation_timestamp_value"
- ),
- )
- mock_args.update(sample_request)
-
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertRegionUrlMapRequest):
+ transport_class = transports.RegionUrlMapsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.RegionUrlMapsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "region",
+ "urlMapResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.RegionUrlMapsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionUrlMapsRestInterceptor(),
+ )
+ client = RegionUrlMapsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionUrlMapsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionUrlMapsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionUrlMapRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionUrlMapRequest
+):
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["url_map_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "default_route_action": {
+ "cors_policy": {
+ "allow_credentials": True,
+ "allow_headers": ["allow_headers_value_1", "allow_headers_value_2"],
+ "allow_methods": ["allow_methods_value_1", "allow_methods_value_2"],
+ "allow_origin_regexes": [
+ "allow_origin_regexes_value_1",
+ "allow_origin_regexes_value_2",
+ ],
+ "allow_origins": ["allow_origins_value_1", "allow_origins_value_2"],
+ "disabled": True,
+ "expose_headers": ["expose_headers_value_1", "expose_headers_value_2"],
+ "max_age": 722,
+ },
+ "fault_injection_policy": {
+ "abort": {"http_status": 1219, "percentage": 0.10540000000000001},
+ "delay": {
+ "fixed_delay": {"nanos": 543, "seconds": 751},
+ "percentage": 0.10540000000000001,
+ },
+ },
+ "max_stream_duration": {},
+ "request_mirror_policy": {"backend_service": "backend_service_value"},
+ "retry_policy": {
+ "num_retries": 1197,
+ "per_try_timeout": {},
+ "retry_conditions": [
+ "retry_conditions_value_1",
+ "retry_conditions_value_2",
+ ],
+ },
+ "timeout": {},
+ "url_rewrite": {
+ "host_rewrite": "host_rewrite_value",
+ "path_prefix_rewrite": "path_prefix_rewrite_value",
+ },
+ "weighted_backend_services": [
+ {
+ "backend_service": "backend_service_value",
+ "header_action": {
+ "request_headers_to_add": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ "replace": True,
+ }
+ ],
+ "request_headers_to_remove": [
+ "request_headers_to_remove_value_1",
+ "request_headers_to_remove_value_2",
+ ],
+ "response_headers_to_add": {},
+ "response_headers_to_remove": [
+ "response_headers_to_remove_value_1",
+ "response_headers_to_remove_value_2",
+ ],
+ },
+ "weight": 648,
+ }
+ ],
+ },
+ "default_service": "default_service_value",
+ "default_url_redirect": {
+ "host_redirect": "host_redirect_value",
+ "https_redirect": True,
+ "path_redirect": "path_redirect_value",
+ "prefix_redirect": "prefix_redirect_value",
+ "redirect_response_code": "redirect_response_code_value",
+ "strip_query": True,
+ },
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "header_action": {},
+ "host_rules": [
+ {
+ "description": "description_value",
+ "hosts": ["hosts_value_1", "hosts_value_2"],
+ "path_matcher": "path_matcher_value",
+ }
+ ],
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "path_matchers": [
+ {
+ "default_route_action": {},
+ "default_service": "default_service_value",
+ "default_url_redirect": {},
+ "description": "description_value",
+ "header_action": {},
+ "name": "name_value",
+ "path_rules": [
+ {
+ "paths": ["paths_value_1", "paths_value_2"],
+ "route_action": {},
+ "service": "service_value",
+ "url_redirect": {},
+ }
+ ],
+ "route_rules": [
+ {
+ "description": "description_value",
+ "header_action": {},
+ "match_rules": [
+ {
+ "full_path_match": "full_path_match_value",
+ "header_matches": [
+ {
+ "exact_match": "exact_match_value",
+ "header_name": "header_name_value",
+ "invert_match": True,
+ "prefix_match": "prefix_match_value",
+ "present_match": True,
+ "range_match": {
+ "range_end": 931,
+ "range_start": 1178,
+ },
+ "regex_match": "regex_match_value",
+ "suffix_match": "suffix_match_value",
+ }
+ ],
+ "ignore_case": True,
+ "metadata_filters": [
+ {
+ "filter_labels": [
+ {
+ "name": "name_value",
+ "value": "value_value",
+ }
+ ],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "prefix_match": "prefix_match_value",
+ "query_parameter_matches": [
+ {
+ "exact_match": "exact_match_value",
+ "name": "name_value",
+ "present_match": True,
+ "regex_match": "regex_match_value",
+ }
+ ],
+ "regex_match": "regex_match_value",
+ }
+ ],
+ "priority": 898,
+ "route_action": {},
+ "service": "service_value",
+ "url_redirect": {},
+ }
+ ],
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "tests": [
+ {
+ "description": "description_value",
+ "expected_output_url": "expected_output_url_value",
+ "expected_redirect_response_code": 3275,
+ "headers": [{"name": "name_value", "value": "value_value"}],
+ "host": "host_value",
+ "path": "path_value",
+ "service": "service_value",
+ }
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ url_map_resource=compute.UrlMap(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/urlMaps"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertRegionUrlMapRequest(),
+ project="project_value",
+ region="region_value",
+ url_map_resource=compute.UrlMap(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRegionUrlMapRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["url_map_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "default_route_action": {
+ "cors_policy": {
+ "allow_credentials": True,
+ "allow_headers": ["allow_headers_value_1", "allow_headers_value_2"],
+ "allow_methods": ["allow_methods_value_1", "allow_methods_value_2"],
+ "allow_origin_regexes": [
+ "allow_origin_regexes_value_1",
+ "allow_origin_regexes_value_2",
+ ],
+ "allow_origins": ["allow_origins_value_1", "allow_origins_value_2"],
+ "disabled": True,
+ "expose_headers": ["expose_headers_value_1", "expose_headers_value_2"],
+ "max_age": 722,
+ },
+ "fault_injection_policy": {
+ "abort": {"http_status": 1219, "percentage": 0.10540000000000001},
+ "delay": {
+ "fixed_delay": {"nanos": 543, "seconds": 751},
+ "percentage": 0.10540000000000001,
+ },
+ },
+ "max_stream_duration": {},
+ "request_mirror_policy": {"backend_service": "backend_service_value"},
+ "retry_policy": {
+ "num_retries": 1197,
+ "per_try_timeout": {},
+ "retry_conditions": [
+ "retry_conditions_value_1",
+ "retry_conditions_value_2",
+ ],
+ },
+ "timeout": {},
+ "url_rewrite": {
+ "host_rewrite": "host_rewrite_value",
+ "path_prefix_rewrite": "path_prefix_rewrite_value",
+ },
+ "weighted_backend_services": [
+ {
+ "backend_service": "backend_service_value",
+ "header_action": {
+ "request_headers_to_add": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ "replace": True,
+ }
+ ],
+ "request_headers_to_remove": [
+ "request_headers_to_remove_value_1",
+ "request_headers_to_remove_value_2",
+ ],
+ "response_headers_to_add": {},
+ "response_headers_to_remove": [
+ "response_headers_to_remove_value_1",
+ "response_headers_to_remove_value_2",
+ ],
+ },
+ "weight": 648,
+ }
+ ],
+ },
+ "default_service": "default_service_value",
+ "default_url_redirect": {
+ "host_redirect": "host_redirect_value",
+ "https_redirect": True,
+ "path_redirect": "path_redirect_value",
+ "prefix_redirect": "prefix_redirect_value",
+ "redirect_response_code": "redirect_response_code_value",
+ "strip_query": True,
+ },
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "header_action": {},
+ "host_rules": [
+ {
+ "description": "description_value",
+ "hosts": ["hosts_value_1", "hosts_value_2"],
+ "path_matcher": "path_matcher_value",
+ }
+ ],
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "path_matchers": [
+ {
+ "default_route_action": {},
+ "default_service": "default_service_value",
+ "default_url_redirect": {},
+ "description": "description_value",
+ "header_action": {},
+ "name": "name_value",
+ "path_rules": [
+ {
+ "paths": ["paths_value_1", "paths_value_2"],
+ "route_action": {},
+ "service": "service_value",
+ "url_redirect": {},
+ }
+ ],
+ "route_rules": [
+ {
+ "description": "description_value",
+ "header_action": {},
+ "match_rules": [
+ {
+ "full_path_match": "full_path_match_value",
+ "header_matches": [
+ {
+ "exact_match": "exact_match_value",
+ "header_name": "header_name_value",
+ "invert_match": True,
+ "prefix_match": "prefix_match_value",
+ "present_match": True,
+ "range_match": {
+ "range_end": 931,
+ "range_start": 1178,
+ },
+ "regex_match": "regex_match_value",
+ "suffix_match": "suffix_match_value",
+ }
+ ],
+ "ignore_case": True,
+ "metadata_filters": [
+ {
+ "filter_labels": [
+ {
+ "name": "name_value",
+ "value": "value_value",
+ }
+ ],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "prefix_match": "prefix_match_value",
+ "query_parameter_matches": [
+ {
+ "exact_match": "exact_match_value",
+ "name": "name_value",
+ "present_match": True,
+ "regex_match": "regex_match_value",
+ }
+ ],
+ "regex_match": "regex_match_value",
+ }
+ ],
+ "priority": 898,
+ "route_action": {},
+ "service": "service_value",
+ "url_redirect": {},
+ }
+ ],
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "tests": [
+ {
+ "description": "description_value",
+ "expected_output_url": "expected_output_url_value",
+ "expected_redirect_response_code": 3275,
+ "headers": [{"name": "name_value", "value": "value_value"}],
+ "host": "host_value",
+ "path": "path_value",
+ "service": "service_value",
+ }
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertRegionUrlMapRequest,
+):
+ transport_class = transports.RegionUrlMapsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.RegionUrlMapsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "region",
+ "urlMapResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.RegionUrlMapsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionUrlMapsRestInterceptor(),
+ )
+ client = RegionUrlMapsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionUrlMapsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RegionUrlMapsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRegionUrlMapRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRegionUrlMapRequest
+):
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["url_map_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "default_route_action": {
+ "cors_policy": {
+ "allow_credentials": True,
+ "allow_headers": ["allow_headers_value_1", "allow_headers_value_2"],
+ "allow_methods": ["allow_methods_value_1", "allow_methods_value_2"],
+ "allow_origin_regexes": [
+ "allow_origin_regexes_value_1",
+ "allow_origin_regexes_value_2",
+ ],
+ "allow_origins": ["allow_origins_value_1", "allow_origins_value_2"],
+ "disabled": True,
+ "expose_headers": ["expose_headers_value_1", "expose_headers_value_2"],
+ "max_age": 722,
+ },
+ "fault_injection_policy": {
+ "abort": {"http_status": 1219, "percentage": 0.10540000000000001},
+ "delay": {
+ "fixed_delay": {"nanos": 543, "seconds": 751},
+ "percentage": 0.10540000000000001,
+ },
+ },
+ "max_stream_duration": {},
+ "request_mirror_policy": {"backend_service": "backend_service_value"},
+ "retry_policy": {
+ "num_retries": 1197,
+ "per_try_timeout": {},
+ "retry_conditions": [
+ "retry_conditions_value_1",
+ "retry_conditions_value_2",
+ ],
+ },
+ "timeout": {},
+ "url_rewrite": {
+ "host_rewrite": "host_rewrite_value",
+ "path_prefix_rewrite": "path_prefix_rewrite_value",
+ },
+ "weighted_backend_services": [
+ {
+ "backend_service": "backend_service_value",
+ "header_action": {
+ "request_headers_to_add": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ "replace": True,
+ }
+ ],
+ "request_headers_to_remove": [
+ "request_headers_to_remove_value_1",
+ "request_headers_to_remove_value_2",
+ ],
+ "response_headers_to_add": {},
+ "response_headers_to_remove": [
+ "response_headers_to_remove_value_1",
+ "response_headers_to_remove_value_2",
+ ],
+ },
+ "weight": 648,
+ }
+ ],
+ },
+ "default_service": "default_service_value",
+ "default_url_redirect": {
+ "host_redirect": "host_redirect_value",
+ "https_redirect": True,
+ "path_redirect": "path_redirect_value",
+ "prefix_redirect": "prefix_redirect_value",
+ "redirect_response_code": "redirect_response_code_value",
+ "strip_query": True,
+ },
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "header_action": {},
+ "host_rules": [
+ {
+ "description": "description_value",
+ "hosts": ["hosts_value_1", "hosts_value_2"],
+ "path_matcher": "path_matcher_value",
+ }
+ ],
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "path_matchers": [
+ {
+ "default_route_action": {},
+ "default_service": "default_service_value",
+ "default_url_redirect": {},
+ "description": "description_value",
+ "header_action": {},
+ "name": "name_value",
+ "path_rules": [
+ {
+ "paths": ["paths_value_1", "paths_value_2"],
+ "route_action": {},
+ "service": "service_value",
+ "url_redirect": {},
+ }
+ ],
+ "route_rules": [
+ {
+ "description": "description_value",
+ "header_action": {},
+ "match_rules": [
+ {
+ "full_path_match": "full_path_match_value",
+ "header_matches": [
+ {
+ "exact_match": "exact_match_value",
+ "header_name": "header_name_value",
+ "invert_match": True,
+ "prefix_match": "prefix_match_value",
+ "present_match": True,
+ "range_match": {
+ "range_end": 931,
+ "range_start": 1178,
+ },
+ "regex_match": "regex_match_value",
+ "suffix_match": "suffix_match_value",
+ }
+ ],
+ "ignore_case": True,
+ "metadata_filters": [
+ {
+ "filter_labels": [
+ {
+ "name": "name_value",
+ "value": "value_value",
+ }
+ ],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "prefix_match": "prefix_match_value",
+ "query_parameter_matches": [
+ {
+ "exact_match": "exact_match_value",
+ "name": "name_value",
+ "present_match": True,
+ "regex_match": "regex_match_value",
+ }
+ ],
+ "regex_match": "regex_match_value",
+ }
+ ],
+ "priority": 898,
+ "route_action": {},
+ "service": "service_value",
+ "url_redirect": {},
+ }
+ ],
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "tests": [
+ {
+ "description": "description_value",
+ "expected_output_url": "expected_output_url_value",
+ "expected_redirect_response_code": 3275,
+ "headers": [{"name": "name_value", "value": "value_value"}],
+ "host": "host_value",
+ "path": "path_value",
+ "service": "service_value",
+ }
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ url_map_resource=compute.UrlMap(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/urlMaps"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertRegionUrlMapRequest(),
+ project="project_value",
+ region="region_value",
+ url_map_resource=compute.UrlMap(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListRegionUrlMapsRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.UrlMapList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.UrlMapList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListRegionUrlMapsRequest):
+ transport_class = transports.RegionUrlMapsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.UrlMapList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.UrlMapList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.RegionUrlMapsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.RegionUrlMapsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionUrlMapsRestInterceptor(),
+ )
+ client = RegionUrlMapsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionUrlMapsRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.RegionUrlMapsRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.UrlMapList.to_json(compute.UrlMapList())
+
+ request = compute.ListRegionUrlMapsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.UrlMapList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListRegionUrlMapsRequest
+):
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.UrlMapList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.UrlMapList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/urlMaps"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListRegionUrlMapsRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.UrlMapList(
+ items=[
+ compute.UrlMap(),
+ compute.UrlMap(),
+ compute.UrlMap(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.UrlMapList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.UrlMapList(
+ items=[
+ compute.UrlMap(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.UrlMapList(
+ items=[
+ compute.UrlMap(),
+ compute.UrlMap(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.UrlMapList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.UrlMap) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRegionUrlMapRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "url_map": "sample3"}
+ request_init["url_map_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "default_route_action": {
+ "cors_policy": {
+ "allow_credentials": True,
+ "allow_headers": ["allow_headers_value_1", "allow_headers_value_2"],
+ "allow_methods": ["allow_methods_value_1", "allow_methods_value_2"],
+ "allow_origin_regexes": [
+ "allow_origin_regexes_value_1",
+ "allow_origin_regexes_value_2",
+ ],
+ "allow_origins": ["allow_origins_value_1", "allow_origins_value_2"],
+ "disabled": True,
+ "expose_headers": ["expose_headers_value_1", "expose_headers_value_2"],
+ "max_age": 722,
+ },
+ "fault_injection_policy": {
+ "abort": {"http_status": 1219, "percentage": 0.10540000000000001},
+ "delay": {
+ "fixed_delay": {"nanos": 543, "seconds": 751},
+ "percentage": 0.10540000000000001,
+ },
+ },
+ "max_stream_duration": {},
+ "request_mirror_policy": {"backend_service": "backend_service_value"},
+ "retry_policy": {
+ "num_retries": 1197,
+ "per_try_timeout": {},
+ "retry_conditions": [
+ "retry_conditions_value_1",
+ "retry_conditions_value_2",
+ ],
+ },
+ "timeout": {},
+ "url_rewrite": {
+ "host_rewrite": "host_rewrite_value",
+ "path_prefix_rewrite": "path_prefix_rewrite_value",
+ },
+ "weighted_backend_services": [
+ {
+ "backend_service": "backend_service_value",
+ "header_action": {
+ "request_headers_to_add": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ "replace": True,
+ }
+ ],
+ "request_headers_to_remove": [
+ "request_headers_to_remove_value_1",
+ "request_headers_to_remove_value_2",
+ ],
+ "response_headers_to_add": {},
+ "response_headers_to_remove": [
+ "response_headers_to_remove_value_1",
+ "response_headers_to_remove_value_2",
+ ],
+ },
+ "weight": 648,
+ }
+ ],
+ },
+ "default_service": "default_service_value",
+ "default_url_redirect": {
+ "host_redirect": "host_redirect_value",
+ "https_redirect": True,
+ "path_redirect": "path_redirect_value",
+ "prefix_redirect": "prefix_redirect_value",
+ "redirect_response_code": "redirect_response_code_value",
+ "strip_query": True,
+ },
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "header_action": {},
+ "host_rules": [
+ {
+ "description": "description_value",
+ "hosts": ["hosts_value_1", "hosts_value_2"],
+ "path_matcher": "path_matcher_value",
+ }
+ ],
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "path_matchers": [
+ {
+ "default_route_action": {},
+ "default_service": "default_service_value",
+ "default_url_redirect": {},
+ "description": "description_value",
+ "header_action": {},
+ "name": "name_value",
+ "path_rules": [
+ {
+ "paths": ["paths_value_1", "paths_value_2"],
+ "route_action": {},
+ "service": "service_value",
+ "url_redirect": {},
+ }
+ ],
+ "route_rules": [
+ {
+ "description": "description_value",
+ "header_action": {},
+ "match_rules": [
+ {
+ "full_path_match": "full_path_match_value",
+ "header_matches": [
+ {
+ "exact_match": "exact_match_value",
+ "header_name": "header_name_value",
+ "invert_match": True,
+ "prefix_match": "prefix_match_value",
+ "present_match": True,
+ "range_match": {
+ "range_end": 931,
+ "range_start": 1178,
+ },
+ "regex_match": "regex_match_value",
+ "suffix_match": "suffix_match_value",
+ }
+ ],
+ "ignore_case": True,
+ "metadata_filters": [
+ {
+ "filter_labels": [
+ {
+ "name": "name_value",
+ "value": "value_value",
+ }
+ ],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "prefix_match": "prefix_match_value",
+ "query_parameter_matches": [
+ {
+ "exact_match": "exact_match_value",
+ "name": "name_value",
+ "present_match": True,
+ "regex_match": "regex_match_value",
+ }
+ ],
+ "regex_match": "regex_match_value",
+ }
+ ],
+ "priority": 898,
+ "route_action": {},
+ "service": "service_value",
+ "url_redirect": {},
+ }
+ ],
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "tests": [
+ {
+ "description": "description_value",
+ "expected_output_url": "expected_output_url_value",
+ "expected_redirect_response_code": 3275,
+ "headers": [{"name": "name_value", "value": "value_value"}],
+ "host": "host_value",
+ "path": "path_value",
+ "service": "service_value",
+ }
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchRegionUrlMapRequest):
+ transport_class = transports.RegionUrlMapsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["url_map"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["urlMap"] = "url_map_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "urlMap" in jsonified_request
+ assert jsonified_request["urlMap"] == "url_map_value"
+
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.RegionUrlMapsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "region",
+ "urlMap",
+ "urlMapResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.RegionUrlMapsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.RegionUrlMapsRestInterceptor(),
+ )
+ client = RegionUrlMapsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RegionUrlMapsRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.RegionUrlMapsRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchRegionUrlMapRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRegionUrlMapRequest
+):
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "url_map": "sample3"}
+ request_init["url_map_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "default_route_action": {
+ "cors_policy": {
+ "allow_credentials": True,
+ "allow_headers": ["allow_headers_value_1", "allow_headers_value_2"],
+ "allow_methods": ["allow_methods_value_1", "allow_methods_value_2"],
+ "allow_origin_regexes": [
+ "allow_origin_regexes_value_1",
+ "allow_origin_regexes_value_2",
+ ],
+ "allow_origins": ["allow_origins_value_1", "allow_origins_value_2"],
+ "disabled": True,
+ "expose_headers": ["expose_headers_value_1", "expose_headers_value_2"],
+ "max_age": 722,
+ },
+ "fault_injection_policy": {
+ "abort": {"http_status": 1219, "percentage": 0.10540000000000001},
+ "delay": {
+ "fixed_delay": {"nanos": 543, "seconds": 751},
+ "percentage": 0.10540000000000001,
+ },
+ },
+ "max_stream_duration": {},
+ "request_mirror_policy": {"backend_service": "backend_service_value"},
+ "retry_policy": {
+ "num_retries": 1197,
+ "per_try_timeout": {},
+ "retry_conditions": [
+ "retry_conditions_value_1",
+ "retry_conditions_value_2",
+ ],
+ },
+ "timeout": {},
+ "url_rewrite": {
+ "host_rewrite": "host_rewrite_value",
+ "path_prefix_rewrite": "path_prefix_rewrite_value",
+ },
+ "weighted_backend_services": [
+ {
+ "backend_service": "backend_service_value",
+ "header_action": {
+ "request_headers_to_add": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ "replace": True,
+ }
+ ],
+ "request_headers_to_remove": [
+ "request_headers_to_remove_value_1",
+ "request_headers_to_remove_value_2",
+ ],
+ "response_headers_to_add": {},
+ "response_headers_to_remove": [
+ "response_headers_to_remove_value_1",
+ "response_headers_to_remove_value_2",
+ ],
+ },
+ "weight": 648,
+ }
+ ],
+ },
+ "default_service": "default_service_value",
+ "default_url_redirect": {
+ "host_redirect": "host_redirect_value",
+ "https_redirect": True,
+ "path_redirect": "path_redirect_value",
+ "prefix_redirect": "prefix_redirect_value",
+ "redirect_response_code": "redirect_response_code_value",
+ "strip_query": True,
+ },
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "header_action": {},
+ "host_rules": [
+ {
+ "description": "description_value",
+ "hosts": ["hosts_value_1", "hosts_value_2"],
+ "path_matcher": "path_matcher_value",
+ }
+ ],
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "path_matchers": [
+ {
+ "default_route_action": {},
+ "default_service": "default_service_value",
+ "default_url_redirect": {},
+ "description": "description_value",
+ "header_action": {},
+ "name": "name_value",
+ "path_rules": [
+ {
+ "paths": ["paths_value_1", "paths_value_2"],
+ "route_action": {},
+ "service": "service_value",
+ "url_redirect": {},
+ }
+ ],
+ "route_rules": [
+ {
+ "description": "description_value",
+ "header_action": {},
+ "match_rules": [
+ {
+ "full_path_match": "full_path_match_value",
+ "header_matches": [
+ {
+ "exact_match": "exact_match_value",
+ "header_name": "header_name_value",
+ "invert_match": True,
+ "prefix_match": "prefix_match_value",
+ "present_match": True,
+ "range_match": {
+ "range_end": 931,
+ "range_start": 1178,
+ },
+ "regex_match": "regex_match_value",
+ "suffix_match": "suffix_match_value",
+ }
+ ],
+ "ignore_case": True,
+ "metadata_filters": [
+ {
+ "filter_labels": [
+ {
+ "name": "name_value",
+ "value": "value_value",
+ }
+ ],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "prefix_match": "prefix_match_value",
+ "query_parameter_matches": [
+ {
+ "exact_match": "exact_match_value",
+ "name": "name_value",
+ "present_match": True,
+ "regex_match": "regex_match_value",
+ }
+ ],
+ "regex_match": "regex_match_value",
+ }
+ ],
+ "priority": 898,
+ "route_action": {},
+ "service": "service_value",
+ "url_redirect": {},
+ }
+ ],
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "tests": [
+ {
+ "description": "description_value",
+ "expected_output_url": "expected_output_url_value",
+ "expected_redirect_response_code": 3275,
+ "headers": [{"name": "name_value", "value": "value_value"}],
+ "host": "host_value",
+ "path": "path_value",
+ "service": "service_value",
+ }
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = RegionUrlMapsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "url_map": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ url_map="url_map_value",
+ url_map_resource=compute.UrlMap(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
@@ -1757,20 +3707,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/urlMaps"
+ "%s/compute/v1/projects/{project}/regions/{region}/urlMaps/{url_map}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1779,17 +3729,18 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertRegionUrlMapRequest(),
+ client.patch(
+ compute.PatchRegionUrlMapRequest(),
project="project_value",
region="region_value",
+ url_map="url_map_value",
url_map_resource=compute.UrlMap(
creation_timestamp="creation_timestamp_value"
),
)
-def test_insert_unary_rest_error():
+def test_patch_rest_error():
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1798,52 +3749,238 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListRegionUrlMapsRequest,
+ compute.PatchRegionUrlMapRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_patch_unary_rest(request_type):
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {"project": "sample1", "region": "sample2", "url_map": "sample3"}
+ request_init["url_map_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "default_route_action": {
+ "cors_policy": {
+ "allow_credentials": True,
+ "allow_headers": ["allow_headers_value_1", "allow_headers_value_2"],
+ "allow_methods": ["allow_methods_value_1", "allow_methods_value_2"],
+ "allow_origin_regexes": [
+ "allow_origin_regexes_value_1",
+ "allow_origin_regexes_value_2",
+ ],
+ "allow_origins": ["allow_origins_value_1", "allow_origins_value_2"],
+ "disabled": True,
+ "expose_headers": ["expose_headers_value_1", "expose_headers_value_2"],
+ "max_age": 722,
+ },
+ "fault_injection_policy": {
+ "abort": {"http_status": 1219, "percentage": 0.10540000000000001},
+ "delay": {
+ "fixed_delay": {"nanos": 543, "seconds": 751},
+ "percentage": 0.10540000000000001,
+ },
+ },
+ "max_stream_duration": {},
+ "request_mirror_policy": {"backend_service": "backend_service_value"},
+ "retry_policy": {
+ "num_retries": 1197,
+ "per_try_timeout": {},
+ "retry_conditions": [
+ "retry_conditions_value_1",
+ "retry_conditions_value_2",
+ ],
+ },
+ "timeout": {},
+ "url_rewrite": {
+ "host_rewrite": "host_rewrite_value",
+ "path_prefix_rewrite": "path_prefix_rewrite_value",
+ },
+ "weighted_backend_services": [
+ {
+ "backend_service": "backend_service_value",
+ "header_action": {
+ "request_headers_to_add": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ "replace": True,
+ }
+ ],
+ "request_headers_to_remove": [
+ "request_headers_to_remove_value_1",
+ "request_headers_to_remove_value_2",
+ ],
+ "response_headers_to_add": {},
+ "response_headers_to_remove": [
+ "response_headers_to_remove_value_1",
+ "response_headers_to_remove_value_2",
+ ],
+ },
+ "weight": 648,
+ }
+ ],
+ },
+ "default_service": "default_service_value",
+ "default_url_redirect": {
+ "host_redirect": "host_redirect_value",
+ "https_redirect": True,
+ "path_redirect": "path_redirect_value",
+ "prefix_redirect": "prefix_redirect_value",
+ "redirect_response_code": "redirect_response_code_value",
+ "strip_query": True,
+ },
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "header_action": {},
+ "host_rules": [
+ {
+ "description": "description_value",
+ "hosts": ["hosts_value_1", "hosts_value_2"],
+ "path_matcher": "path_matcher_value",
+ }
+ ],
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "path_matchers": [
+ {
+ "default_route_action": {},
+ "default_service": "default_service_value",
+ "default_url_redirect": {},
+ "description": "description_value",
+ "header_action": {},
+ "name": "name_value",
+ "path_rules": [
+ {
+ "paths": ["paths_value_1", "paths_value_2"],
+ "route_action": {},
+ "service": "service_value",
+ "url_redirect": {},
+ }
+ ],
+ "route_rules": [
+ {
+ "description": "description_value",
+ "header_action": {},
+ "match_rules": [
+ {
+ "full_path_match": "full_path_match_value",
+ "header_matches": [
+ {
+ "exact_match": "exact_match_value",
+ "header_name": "header_name_value",
+ "invert_match": True,
+ "prefix_match": "prefix_match_value",
+ "present_match": True,
+ "range_match": {
+ "range_end": 931,
+ "range_start": 1178,
+ },
+ "regex_match": "regex_match_value",
+ "suffix_match": "suffix_match_value",
+ }
+ ],
+ "ignore_case": True,
+ "metadata_filters": [
+ {
+ "filter_labels": [
+ {
+ "name": "name_value",
+ "value": "value_value",
+ }
+ ],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "prefix_match": "prefix_match_value",
+ "query_parameter_matches": [
+ {
+ "exact_match": "exact_match_value",
+ "name": "name_value",
+ "present_match": True,
+ "regex_match": "regex_match_value",
+ }
+ ],
+ "regex_match": "regex_match_value",
+ }
+ ],
+ "priority": 898,
+ "route_action": {},
+ "service": "service_value",
+ "url_redirect": {},
+ }
+ ],
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "tests": [
+ {
+ "description": "description_value",
+ "expected_output_url": "expected_output_url_value",
+ "expected_redirect_response_code": 3275,
+ "headers": [{"name": "name_value", "value": "value_value"}],
+ "host": "host_value",
+ "path": "path_value",
+ "service": "service_value",
+ }
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.UrlMapList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.UrlMapList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_list_rest_required_fields(request_type=compute.ListRegionUrlMapsRequest):
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchRegionUrlMapRequest,
+):
transport_class = transports.RegionUrlMapsRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
+ request_init["url_map"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1855,27 +3992,20 @@ def test_list_rest_required_fields(request_type=compute.ListRegionUrlMapsRequest
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
+ jsonified_request["urlMap"] = "url_map_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1883,6 +4013,8 @@ def test_list_rest_required_fields(request_type=compute.ListRegionUrlMapsRequest
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
+ assert "urlMap" in jsonified_request
+ assert jsonified_request["urlMap"] == "url_map_value"
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1891,7 +4023,7 @@ def test_list_rest_required_fields(request_type=compute.ListRegionUrlMapsRequest
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.UrlMapList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1902,51 +4034,46 @@ def test_list_rest_required_fields(request_type=compute.ListRegionUrlMapsRequest
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.UrlMapList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_unary_rest_unset_required_fields():
transport = transports.RegionUrlMapsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
"project",
"region",
+ "urlMap",
+ "urlMapResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_unary_rest_interceptors(null_interceptor):
transport = transports.RegionUrlMapsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1959,9 +4086,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionUrlMapsRestInterceptor, "post_list"
+ transports.RegionUrlMapsRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.RegionUrlMapsRestInterceptor, "pre_list"
+ transports.RegionUrlMapsRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1976,17 +4103,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.UrlMapList.to_json(compute.UrlMapList())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListRegionUrlMapsRequest()
+ request = compute.PatchRegionUrlMapRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.UrlMapList
+ post.return_value = compute.Operation
- client.list(
+ client.patch_unary(
request,
metadata=[
("key", "val"),
@@ -1998,8 +4125,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListRegionUrlMapsRequest
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRegionUrlMapRequest
):
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2007,7 +4134,176 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {"project": "sample1", "region": "sample2", "url_map": "sample3"}
+ request_init["url_map_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "default_route_action": {
+ "cors_policy": {
+ "allow_credentials": True,
+ "allow_headers": ["allow_headers_value_1", "allow_headers_value_2"],
+ "allow_methods": ["allow_methods_value_1", "allow_methods_value_2"],
+ "allow_origin_regexes": [
+ "allow_origin_regexes_value_1",
+ "allow_origin_regexes_value_2",
+ ],
+ "allow_origins": ["allow_origins_value_1", "allow_origins_value_2"],
+ "disabled": True,
+ "expose_headers": ["expose_headers_value_1", "expose_headers_value_2"],
+ "max_age": 722,
+ },
+ "fault_injection_policy": {
+ "abort": {"http_status": 1219, "percentage": 0.10540000000000001},
+ "delay": {
+ "fixed_delay": {"nanos": 543, "seconds": 751},
+ "percentage": 0.10540000000000001,
+ },
+ },
+ "max_stream_duration": {},
+ "request_mirror_policy": {"backend_service": "backend_service_value"},
+ "retry_policy": {
+ "num_retries": 1197,
+ "per_try_timeout": {},
+ "retry_conditions": [
+ "retry_conditions_value_1",
+ "retry_conditions_value_2",
+ ],
+ },
+ "timeout": {},
+ "url_rewrite": {
+ "host_rewrite": "host_rewrite_value",
+ "path_prefix_rewrite": "path_prefix_rewrite_value",
+ },
+ "weighted_backend_services": [
+ {
+ "backend_service": "backend_service_value",
+ "header_action": {
+ "request_headers_to_add": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ "replace": True,
+ }
+ ],
+ "request_headers_to_remove": [
+ "request_headers_to_remove_value_1",
+ "request_headers_to_remove_value_2",
+ ],
+ "response_headers_to_add": {},
+ "response_headers_to_remove": [
+ "response_headers_to_remove_value_1",
+ "response_headers_to_remove_value_2",
+ ],
+ },
+ "weight": 648,
+ }
+ ],
+ },
+ "default_service": "default_service_value",
+ "default_url_redirect": {
+ "host_redirect": "host_redirect_value",
+ "https_redirect": True,
+ "path_redirect": "path_redirect_value",
+ "prefix_redirect": "prefix_redirect_value",
+ "redirect_response_code": "redirect_response_code_value",
+ "strip_query": True,
+ },
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "header_action": {},
+ "host_rules": [
+ {
+ "description": "description_value",
+ "hosts": ["hosts_value_1", "hosts_value_2"],
+ "path_matcher": "path_matcher_value",
+ }
+ ],
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "path_matchers": [
+ {
+ "default_route_action": {},
+ "default_service": "default_service_value",
+ "default_url_redirect": {},
+ "description": "description_value",
+ "header_action": {},
+ "name": "name_value",
+ "path_rules": [
+ {
+ "paths": ["paths_value_1", "paths_value_2"],
+ "route_action": {},
+ "service": "service_value",
+ "url_redirect": {},
+ }
+ ],
+ "route_rules": [
+ {
+ "description": "description_value",
+ "header_action": {},
+ "match_rules": [
+ {
+ "full_path_match": "full_path_match_value",
+ "header_matches": [
+ {
+ "exact_match": "exact_match_value",
+ "header_name": "header_name_value",
+ "invert_match": True,
+ "prefix_match": "prefix_match_value",
+ "present_match": True,
+ "range_match": {
+ "range_end": 931,
+ "range_start": 1178,
+ },
+ "regex_match": "regex_match_value",
+ "suffix_match": "suffix_match_value",
+ }
+ ],
+ "ignore_case": True,
+ "metadata_filters": [
+ {
+ "filter_labels": [
+ {
+ "name": "name_value",
+ "value": "value_value",
+ }
+ ],
+ "filter_match_criteria": "filter_match_criteria_value",
+ }
+ ],
+ "prefix_match": "prefix_match_value",
+ "query_parameter_matches": [
+ {
+ "exact_match": "exact_match_value",
+ "name": "name_value",
+ "present_match": True,
+ "regex_match": "regex_match_value",
+ }
+ ],
+ "regex_match": "regex_match_value",
+ }
+ ],
+ "priority": 898,
+ "route_action": {},
+ "service": "service_value",
+ "url_redirect": {},
+ }
+ ],
+ }
+ ],
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "tests": [
+ {
+ "description": "description_value",
+ "expected_output_url": "expected_output_url_value",
+ "expected_redirect_response_code": 3275,
+ "headers": [{"name": "name_value", "value": "value_value"}],
+ "host": "host_value",
+ "path": "path_value",
+ "service": "service_value",
+ }
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2019,10 +4315,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch_unary(request)
-def test_list_rest_flattened():
+def test_patch_unary_rest_flattened():
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2031,40 +4327,48 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.UrlMapList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "url_map": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ url_map="url_map_value",
+ url_map_resource=compute.UrlMap(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.UrlMapList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/urlMaps"
+ "%s/compute/v1/projects/{project}/regions/{region}/urlMaps/{url_map}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2073,82 +4377,31 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListRegionUrlMapsRequest(),
+ client.patch_unary(
+ compute.PatchRegionUrlMapRequest(),
project="project_value",
region="region_value",
+ url_map="url_map_value",
+ url_map_resource=compute.UrlMap(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_unary_rest_error():
client = RegionUrlMapsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.UrlMapList(
- items=[
- compute.UrlMap(),
- compute.UrlMap(),
- compute.UrlMap(),
- ],
- next_page_token="abc",
- ),
- compute.UrlMapList(
- items=[],
- next_page_token="def",
- ),
- compute.UrlMapList(
- items=[
- compute.UrlMap(),
- ],
- next_page_token="ghi",
- ),
- compute.UrlMapList(
- items=[
- compute.UrlMap(),
- compute.UrlMap(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.UrlMapList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.UrlMap) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchRegionUrlMapRequest,
+ compute.UpdateRegionUrlMapRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_update_rest(request_type):
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2361,10 +4614,10 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.update(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2389,9 +4642,7 @@ def test_patch_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchRegionUrlMapRequest,
-):
+def test_update_rest_required_fields(request_type=compute.UpdateRegionUrlMapRequest):
transport_class = transports.RegionUrlMapsRestTransport
request_init = {}
@@ -2409,7 +4660,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2420,7 +4671,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -2451,7 +4702,7 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "put",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -2463,19 +4714,19 @@ def test_patch_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.update(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_update_rest_unset_required_fields():
transport = transports.RegionUrlMapsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.update._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
@@ -2490,7 +4741,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_update_rest_interceptors(null_interceptor):
transport = transports.RegionUrlMapsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2503,9 +4754,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RegionUrlMapsRestInterceptor, "post_patch"
+ transports.RegionUrlMapsRestInterceptor, "post_update"
) as post, mock.patch.object(
- transports.RegionUrlMapsRestInterceptor, "pre_patch"
+ transports.RegionUrlMapsRestInterceptor, "pre_update"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2522,7 +4773,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchRegionUrlMapRequest()
+ request = compute.UpdateRegionUrlMapRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2530,7 +4781,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.update(
request,
metadata=[
("key", "val"),
@@ -2542,8 +4793,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchRegionUrlMapRequest
+def test_update_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateRegionUrlMapRequest
):
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2732,10 +4983,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.update(request)
-def test_patch_unary_rest_flattened():
+def test_update_rest_flattened():
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2772,7 +5023,7 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.update(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -2785,7 +5036,7 @@ def test_patch_unary_rest_flattened():
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_update_rest_flattened_error(transport: str = "rest"):
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2794,8 +5045,8 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchRegionUrlMapRequest(),
+ client.update(
+ compute.UpdateRegionUrlMapRequest(),
project="project_value",
region="region_value",
url_map="url_map_value",
@@ -2805,7 +5056,7 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_patch_unary_rest_error():
+def test_update_rest_error():
client = RegionUrlMapsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3035,28 +5286,6 @@ def test_update_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_unary_rest_required_fields(
@@ -4191,6 +6420,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionUrlMapsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_region_url_maps_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -4228,6 +6470,14 @@ def test_region_url_maps_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_region_url_maps_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_regions.py b/tests/unit/gapic/compute_v1/test_regions.py
index 51f16cc21..b0fc203d4 100644
--- a/tests/unit/gapic/compute_v1/test_regions.py
+++ b/tests/unit/gapic/compute_v1/test_regions.py
@@ -1189,6 +1189,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RegionsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_regions_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -1221,6 +1234,14 @@ def test_regions_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_regions_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_reservations.py b/tests/unit/gapic/compute_v1/test_reservations.py
index 807216676..fb53bcc37 100644
--- a/tests/unit/gapic/compute_v1/test_reservations.py
+++ b/tests/unit/gapic/compute_v1/test_reservations.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -871,7 +873,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -915,10 +917,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -943,9 +945,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteReservationRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteReservationRequest):
transport_class = transports.ReservationsRestTransport
request_init = {}
@@ -1016,14 +1016,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1042,7 +1042,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1082,7 +1082,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1094,7 +1094,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteReservationRequest
):
client = ReservationsClient(
@@ -1115,10 +1115,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1152,7 +1152,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1165,7 +1165,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1174,7 +1174,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteReservationRequest(),
project="project_value",
zone="zone_value",
@@ -1182,7 +1182,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1191,11 +1191,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetReservationRequest,
+ compute.DeleteReservationRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1208,44 +1208,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Reservation(
- commitment="commitment_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- satisfies_pzs=True,
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- specific_reservation_required=True,
- status="status_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Reservation.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Reservation)
- assert response.commitment == "commitment_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.satisfies_pzs is True
- assert response.self_link == "self_link_value"
- assert response.specific_reservation_required is True
- assert response.status == "status_value"
- assert response.zone == "zone_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetReservationRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteReservationRequest,
+):
transport_class = transports.ReservationsRestTransport
request_init = {}
@@ -1263,7 +1265,7 @@ def test_get_rest_required_fields(request_type=compute.GetReservationRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1274,7 +1276,9 @@ def test_get_rest_required_fields(request_type=compute.GetReservationRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1292,7 +1296,7 @@ def test_get_rest_required_fields(request_type=compute.GetReservationRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Reservation()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1303,32 +1307,32 @@ def test_get_rest_required_fields(request_type=compute.GetReservationRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Reservation.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -1340,7 +1344,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1353,9 +1357,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ReservationsRestInterceptor, "post_get"
+ transports.ReservationsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.ReservationsRestInterceptor, "pre_get"
+ transports.ReservationsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1370,17 +1374,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Reservation.to_json(compute.Reservation())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetReservationRequest()
+ request = compute.DeleteReservationRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Reservation
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1392,8 +1396,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetReservationRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteReservationRequest
):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1413,10 +1417,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1425,7 +1429,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Reservation()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1445,12 +1449,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Reservation.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1463,7 +1467,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1472,15 +1476,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetReservationRequest(),
+ client.delete_unary(
+ compute.DeleteReservationRequest(),
project="project_value",
zone="zone_value",
reservation="reservation_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1489,52 +1493,66 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicyReservationRequest,
+ compute.GetReservationRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_get_rest(request_type):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2", "reservation": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Reservation(
+ commitment="commitment_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ satisfies_pzs=True,
+ self_link="self_link_value",
+ specific_reservation_required=True,
+ status="status_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Reservation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, compute.Reservation)
+ assert response.commitment == "commitment_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.satisfies_pzs is True
+ assert response.self_link == "self_link_value"
+ assert response.specific_reservation_required is True
+ assert response.status == "status_value"
+ assert response.zone == "zone_value"
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicyReservationRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetReservationRequest):
transport_class = transports.ReservationsRestTransport
request_init = {}
request_init["project"] = ""
- request_init["resource"] = ""
+ request_init["reservation"] = ""
request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1547,27 +1565,25 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
+ jsonified_request["reservation"] = "reservation_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
+ assert "reservation" in jsonified_request
+ assert jsonified_request["reservation"] == "reservation_value"
assert "zone" in jsonified_request
assert jsonified_request["zone"] == "zone_value"
@@ -1578,7 +1594,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Reservation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1596,29 +1612,29 @@ def test_get_iam_policy_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Reservation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
+ set(())
& set(
(
"project",
- "resource",
+ "reservation",
"zone",
)
)
@@ -1626,7 +1642,7 @@ def test_get_iam_policy_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1639,9 +1655,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ReservationsRestInterceptor, "post_get_iam_policy"
+ transports.ReservationsRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.ReservationsRestInterceptor, "pre_get_iam_policy"
+ transports.ReservationsRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1656,17 +1672,17 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Reservation.to_json(compute.Reservation())
- request = compute.GetIamPolicyReservationRequest()
+ request = compute.GetReservationRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Reservation
- client.get_iam_policy(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1678,8 +1694,8 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.GetIamPolicyReservationRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetReservationRequest
):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1687,7 +1703,7 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "zone": "sample2", "reservation": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1699,10 +1715,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.get(request)
-def test_get_iam_policy_rest_flattened():
+def test_get_rest_flattened():
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1711,45 +1727,45 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Reservation()
# get arguments that satisfy an http rule for this method
sample_request = {
"project": "sample1",
"zone": "sample2",
- "resource": "sample3",
+ "reservation": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- resource="resource_value",
+ reservation="reservation_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Reservation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/reservations/{resource}/getIamPolicy"
+ "%s/compute/v1/projects/{project}/zones/{zone}/reservations/{reservation}"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1758,15 +1774,15 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicyReservationRequest(),
+ client.get(
+ compute.GetReservationRequest(),
project="project_value",
zone="zone_value",
- resource="resource_value",
+ reservation="reservation_value",
)
-def test_get_iam_policy_rest_error():
+def test_get_rest_error():
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1775,120 +1791,52 @@ def test_get_iam_policy_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertReservationRequest,
+ compute.GetIamPolicyReservationRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_iam_policy_rest(request_type):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
- request_init["reservation_resource"] = {
- "commitment": "commitment_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "share_settings": {"project_map": {}, "share_type": "share_type_value"},
- "specific_reservation": {
- "assured_count": 1407,
- "count": 553,
- "in_use_count": 1291,
- "instance_properties": {
- "guest_accelerators": [
- {
- "accelerator_count": 1805,
- "accelerator_type": "accelerator_type_value",
- }
- ],
- "local_ssds": [{"disk_size_gb": 1261, "interface": "interface_value"}],
- "location_hint": "location_hint_value",
- "machine_type": "machine_type_value",
- "min_cpu_platform": "min_cpu_platform_value",
- },
- },
- "specific_reservation_required": True,
- "status": "status_value",
- "zone": "zone_value",
- }
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
- kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
- self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get_iam_policy(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertReservationRequest,
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicyReservationRequest,
):
transport_class = transports.ReservationsRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["resource"] = ""
request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -1901,24 +1849,27 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
assert "zone" in jsonified_request
assert jsonified_request["zone"] == "zone_value"
@@ -1929,7 +1880,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Policy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1940,37 +1891,36 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get_iam_policy(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_iam_policy_rest_unset_required_fields():
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(("optionsRequestedPolicyVersion",))
& set(
(
"project",
- "reservationResource",
+ "resource",
"zone",
)
)
@@ -1978,7 +1928,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_iam_policy_rest_interceptors(null_interceptor):
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1991,9 +1941,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ReservationsRestInterceptor, "post_insert"
+ transports.ReservationsRestInterceptor, "post_get_iam_policy"
) as post, mock.patch.object(
- transports.ReservationsRestInterceptor, "pre_insert"
+ transports.ReservationsRestInterceptor, "pre_get_iam_policy"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2008,17 +1958,17 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
- request = compute.InsertReservationRequest()
+ request = compute.GetIamPolicyReservationRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.Policy
- client.insert_unary(
+ client.get_iam_policy(
request,
metadata=[
("key", "val"),
@@ -2030,8 +1980,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertReservationRequest
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetIamPolicyReservationRequest
):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2039,38 +1989,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2"}
- request_init["reservation_resource"] = {
- "commitment": "commitment_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "share_settings": {"project_map": {}, "share_type": "share_type_value"},
- "specific_reservation": {
- "assured_count": 1407,
- "count": 553,
- "in_use_count": 1291,
- "instance_properties": {
- "guest_accelerators": [
- {
- "accelerator_count": 1805,
- "accelerator_type": "accelerator_type_value",
- }
- ],
- "local_ssds": [{"disk_size_gb": 1261, "interface": "interface_value"}],
- "location_hint": "location_hint_value",
- "machine_type": "machine_type_value",
- "min_cpu_platform": "min_cpu_platform_value",
- },
- },
- "specific_reservation_required": True,
- "status": "status_value",
- "zone": "zone_value",
- }
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2082,10 +2001,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get_iam_policy(request)
-def test_insert_unary_rest_flattened():
+def test_get_iam_policy_rest_flattened():
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2094,41 +2013,45 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Policy()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "zone": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "resource": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- reservation_resource=compute.Reservation(commitment="commitment_value"),
+ resource="resource_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get_iam_policy(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/reservations"
+ "%s/compute/v1/projects/{project}/zones/{zone}/reservations/{resource}/getIamPolicy"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2137,15 +2060,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertReservationRequest(),
+ client.get_iam_policy(
+ compute.GetIamPolicyReservationRequest(),
project="project_value",
zone="zone_value",
- reservation_resource=compute.Reservation(commitment="commitment_value"),
+ resource="resource_value",
)
-def test_insert_unary_rest_error():
+def test_get_iam_policy_rest_error():
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2154,11 +2077,11 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListReservationsRequest,
+ compute.InsertReservationRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_insert_rest(request_type):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2166,35 +2089,102 @@ def test_list_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["reservation_resource"] = {
+ "commitment": "commitment_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "share_settings": {"project_map": {}, "share_type": "share_type_value"},
+ "specific_reservation": {
+ "assured_count": 1407,
+ "count": 553,
+ "in_use_count": 1291,
+ "instance_properties": {
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "local_ssds": [{"disk_size_gb": 1261, "interface": "interface_value"}],
+ "location_hint": "location_hint_value",
+ "machine_type": "machine_type_value",
+ "min_cpu_platform": "min_cpu_platform_value",
+ },
+ },
+ "specific_reservation_required": True,
+ "status": "status_value",
+ "zone": "zone_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ReservationList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ReservationList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(request_type=compute.ListReservationsRequest):
+def test_insert_rest_required_fields(request_type=compute.InsertReservationRequest):
transport_class = transports.ReservationsRestTransport
request_init = {}
@@ -2211,7 +2201,7 @@ def test_list_rest_required_fields(request_type=compute.ListReservationsRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2221,17 +2211,9 @@ def test_list_rest_required_fields(request_type=compute.ListReservationsRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2247,7 +2229,7 @@ def test_list_rest_required_fields(request_type=compute.ListReservationsRequest)
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.ReservationList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2258,43 +2240,37 @@ def test_list_rest_required_fields(request_type=compute.ListReservationsRequest)
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ReservationList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
"project",
+ "reservationResource",
"zone",
)
)
@@ -2302,7 +2278,7 @@ def test_list_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2315,9 +2291,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ReservationsRestInterceptor, "post_list"
+ transports.ReservationsRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.ReservationsRestInterceptor, "pre_list"
+ transports.ReservationsRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2332,19 +2308,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.ReservationList.to_json(
- compute.ReservationList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListReservationsRequest()
+ request = compute.InsertReservationRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.ReservationList
+ post.return_value = compute.Operation
- client.list(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -2356,8 +2330,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListReservationsRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertReservationRequest
):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2366,6 +2340,37 @@ def test_list_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["reservation_resource"] = {
+ "commitment": "commitment_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "share_settings": {"project_map": {}, "share_type": "share_type_value"},
+ "specific_reservation": {
+ "assured_count": 1407,
+ "count": 553,
+ "in_use_count": 1291,
+ "instance_properties": {
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "local_ssds": [{"disk_size_gb": 1261, "interface": "interface_value"}],
+ "location_hint": "location_hint_value",
+ "machine_type": "machine_type_value",
+ "min_cpu_platform": "min_cpu_platform_value",
+ },
+ },
+ "specific_reservation_required": True,
+ "status": "status_value",
+ "zone": "zone_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2377,10 +2382,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.insert(request)
-def test_list_rest_flattened():
+def test_insert_rest_flattened():
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2389,7 +2394,7 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ReservationList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "zone": "sample2"}
@@ -2398,18 +2403,19 @@ def test_list_rest_flattened():
mock_args = dict(
project="project_value",
zone="zone_value",
+ reservation_resource=compute.Reservation(commitment="commitment_value"),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ReservationList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -2422,7 +2428,7 @@ def test_list_rest_flattened():
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2431,90 +2437,66 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListReservationsRequest(),
+ client.insert(
+ compute.InsertReservationRequest(),
project="project_value",
zone="zone_value",
+ reservation_resource=compute.Reservation(commitment="commitment_value"),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_insert_rest_error():
client = ReservationsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.ReservationList(
- items=[
- compute.Reservation(),
- compute.Reservation(),
- compute.Reservation(),
- ],
- next_page_token="abc",
- ),
- compute.ReservationList(
- items=[],
- next_page_token="def",
- ),
- compute.ReservationList(
- items=[
- compute.Reservation(),
- ],
- next_page_token="ghi",
- ),
- compute.ReservationList(
- items=[
- compute.Reservation(),
- compute.Reservation(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.ReservationList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "zone": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Reservation) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.ResizeReservationRequest,
+ compute.InsertReservationRequest,
dict,
],
)
-def test_resize_unary_rest(request_type):
+def test_insert_unary_rest(request_type):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "reservation": "sample3"}
- request_init["reservations_resize_request_resource"] = {"specific_sku_count": 1920}
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["reservation_resource"] = {
+ "commitment": "commitment_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "share_settings": {"project_map": {}, "share_type": "share_type_value"},
+ "specific_reservation": {
+ "assured_count": 1407,
+ "count": 553,
+ "in_use_count": 1291,
+ "instance_properties": {
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "local_ssds": [{"disk_size_gb": 1261, "interface": "interface_value"}],
+ "location_hint": "location_hint_value",
+ "machine_type": "machine_type_value",
+ "min_cpu_platform": "min_cpu_platform_value",
+ },
+ },
+ "specific_reservation_required": True,
+ "status": "status_value",
+ "zone": "zone_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -2551,42 +2533,19 @@ def test_resize_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.resize_unary(request)
+ response = client.insert_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_resize_unary_rest_required_fields(
- request_type=compute.ResizeReservationRequest,
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertReservationRequest,
):
transport_class = transports.ReservationsRestTransport
request_init = {}
request_init["project"] = ""
- request_init["reservation"] = ""
request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -2599,18 +2558,17 @@ def test_resize_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).resize._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
- jsonified_request["reservation"] = "reservation_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).resize._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -2618,8 +2576,6 @@ def test_resize_unary_rest_required_fields(
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "reservation" in jsonified_request
- assert jsonified_request["reservation"] == "reservation_value"
assert "zone" in jsonified_request
assert jsonified_request["zone"] == "zone_value"
@@ -2653,34 +2609,1415 @@ def test_resize_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.resize_unary(request)
+ response = client.insert_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_resize_unary_rest_unset_required_fields():
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.ReservationsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "reservationResource",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.ReservationsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ReservationsRestInterceptor(),
+ )
+ client = ReservationsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ReservationsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.ReservationsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertReservationRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertReservationRequest
+):
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request_init["reservation_resource"] = {
+ "commitment": "commitment_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "share_settings": {"project_map": {}, "share_type": "share_type_value"},
+ "specific_reservation": {
+ "assured_count": 1407,
+ "count": 553,
+ "in_use_count": 1291,
+ "instance_properties": {
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "local_ssds": [{"disk_size_gb": 1261, "interface": "interface_value"}],
+ "location_hint": "location_hint_value",
+ "machine_type": "machine_type_value",
+ "min_cpu_platform": "min_cpu_platform_value",
+ },
+ },
+ "specific_reservation_required": True,
+ "status": "status_value",
+ "zone": "zone_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ reservation_resource=compute.Reservation(commitment="commitment_value"),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/reservations"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertReservationRequest(),
+ project="project_value",
+ zone="zone_value",
+ reservation_resource=compute.Reservation(commitment="commitment_value"),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListReservationsRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ReservationList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ReservationList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListReservationsRequest):
+ transport_class = transports.ReservationsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ReservationList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ReservationList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.ReservationsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.ReservationsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ReservationsRestInterceptor(),
+ )
+ client = ReservationsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ReservationsRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.ReservationsRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.ReservationList.to_json(
+ compute.ReservationList()
+ )
+
+ request = compute.ListReservationsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.ReservationList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListReservationsRequest
+):
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ReservationList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ReservationList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/reservations"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListReservationsRequest(),
+ project="project_value",
+ zone="zone_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.ReservationList(
+ items=[
+ compute.Reservation(),
+ compute.Reservation(),
+ compute.Reservation(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.ReservationList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.ReservationList(
+ items=[
+ compute.Reservation(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.ReservationList(
+ items=[
+ compute.Reservation(),
+ compute.Reservation(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.ReservationList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "zone": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Reservation) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ResizeReservationRequest,
+ dict,
+ ],
+)
+def test_resize_rest(request_type):
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "reservation": "sample3"}
+ request_init["reservations_resize_request_resource"] = {"specific_sku_count": 1920}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.resize(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_resize_rest_required_fields(request_type=compute.ResizeReservationRequest):
+ transport_class = transports.ReservationsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["reservation"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["reservation"] = "reservation_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "reservation" in jsonified_request
+ assert jsonified_request["reservation"] == "reservation_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.resize(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_resize_rest_unset_required_fields():
+ transport = transports.ReservationsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.resize._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "reservation",
+ "reservationsResizeRequestResource",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_resize_rest_interceptors(null_interceptor):
+ transport = transports.ReservationsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ReservationsRestInterceptor(),
+ )
+ client = ReservationsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ReservationsRestInterceptor, "post_resize"
+ ) as post, mock.patch.object(
+ transports.ReservationsRestInterceptor, "pre_resize"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.ResizeReservationRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.resize(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_resize_rest_bad_request(
+ transport: str = "rest", request_type=compute.ResizeReservationRequest
+):
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "reservation": "sample3"}
+ request_init["reservations_resize_request_resource"] = {"specific_sku_count": 1920}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.resize(request)
+
+
+def test_resize_rest_flattened():
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "reservation": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ reservation="reservation_value",
+ reservations_resize_request_resource=compute.ReservationsResizeRequest(
+ specific_sku_count=1920
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.resize(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/reservations/{reservation}/resize"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_resize_rest_flattened_error(transport: str = "rest"):
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.resize(
+ compute.ResizeReservationRequest(),
+ project="project_value",
+ zone="zone_value",
+ reservation="reservation_value",
+ reservations_resize_request_resource=compute.ReservationsResizeRequest(
+ specific_sku_count=1920
+ ),
+ )
+
+
+def test_resize_rest_error():
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ResizeReservationRequest,
+ dict,
+ ],
+)
+def test_resize_unary_rest(request_type):
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "reservation": "sample3"}
+ request_init["reservations_resize_request_resource"] = {"specific_sku_count": 1920}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.resize_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_resize_unary_rest_required_fields(
+ request_type=compute.ResizeReservationRequest,
+):
+ transport_class = transports.ReservationsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["reservation"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["reservation"] = "reservation_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).resize._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "reservation" in jsonified_request
+ assert jsonified_request["reservation"] == "reservation_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.resize_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_resize_unary_rest_unset_required_fields():
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
unset_fields = transport.resize._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "reservation",
+ "reservationsResizeRequestResource",
+ "zone",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_resize_unary_rest_interceptors(null_interceptor):
+ transport = transports.ReservationsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ReservationsRestInterceptor(),
+ )
+ client = ReservationsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ReservationsRestInterceptor, "post_resize"
+ ) as post, mock.patch.object(
+ transports.ReservationsRestInterceptor, "pre_resize"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.ResizeReservationRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.resize_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_resize_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.ResizeReservationRequest
+):
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "reservation": "sample3"}
+ request_init["reservations_resize_request_resource"] = {"specific_sku_count": 1920}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.resize_unary(request)
+
+
+def test_resize_unary_rest_flattened():
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "zone": "sample2",
+ "reservation": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ zone="zone_value",
+ reservation="reservation_value",
+ reservations_resize_request_resource=compute.ReservationsResizeRequest(
+ specific_sku_count=1920
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.resize_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/zones/{zone}/reservations/{reservation}/resize"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_resize_unary_rest_flattened_error(transport: str = "rest"):
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.resize_unary(
+ compute.ResizeReservationRequest(),
+ project="project_value",
+ zone="zone_value",
+ reservation="reservation_value",
+ reservations_resize_request_resource=compute.ReservationsResizeRequest(
+ specific_sku_count=1920
+ ),
+ )
+
+
+def test_resize_unary_rest_error():
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetIamPolicyReservationRequest,
+ dict,
+ ],
+)
+def test_set_iam_policy_rest(request_type):
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init["zone_set_policy_request_resource"] = {
+ "bindings": [
+ {
+ "binding_id": "binding_id_value",
+ "condition": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "members": ["members_value_1", "members_value_2"],
+ "role": "role_value",
+ }
+ ],
+ "etag": "etag_value",
+ "policy": {
+ "audit_configs": [
+ {
+ "audit_log_configs": [
+ {
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "ignore_child_exemptions": True,
+ "log_type": "log_type_value",
+ }
+ ],
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "service": "service_value",
+ }
+ ],
+ "bindings": {},
+ "etag": "etag_value",
+ "iam_owned": True,
+ "rules": [
+ {
+ "action": "action_value",
+ "conditions": [
+ {
+ "iam": "iam_value",
+ "op": "op_value",
+ "svc": "svc_value",
+ "sys": "sys_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "ins": ["ins_value_1", "ins_value_2"],
+ "log_configs": [
+ {
+ "cloud_audit": {
+ "authorization_logging_options": {
+ "permission_type": "permission_type_value"
+ },
+ "log_name": "log_name_value",
+ },
+ "counter": {
+ "custom_fields": [
+ {"name": "name_value", "value": "value_value"}
+ ],
+ "field": "field_value",
+ "metric": "metric_value",
+ },
+ "data_access": {"log_mode": "log_mode_value"},
+ }
+ ],
+ "not_ins": ["not_ins_value_1", "not_ins_value_2"],
+ "permissions": ["permissions_value_1", "permissions_value_2"],
+ }
+ ],
+ "version": 774,
+ },
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_set_iam_policy_rest_required_fields(
+ request_type=compute.SetIamPolicyReservationRequest,
+):
+ transport_class = transports.ReservationsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["resource"] = ""
+ request_init["zone"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
+ jsonified_request["zone"] = "zone_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+ assert "zone" in jsonified_request
+ assert jsonified_request["zone"] == "zone_value"
+
+ client = ReservationsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_iam_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_iam_policy_rest_unset_required_fields():
+ transport = transports.ReservationsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
& set(
(
"project",
- "reservation",
- "reservationsResizeRequestResource",
+ "resource",
"zone",
+ "zoneSetPolicyRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_resize_unary_rest_interceptors(null_interceptor):
+def test_set_iam_policy_rest_interceptors(null_interceptor):
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2693,9 +4030,9 @@ def test_resize_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ReservationsRestInterceptor, "post_resize"
+ transports.ReservationsRestInterceptor, "post_set_iam_policy"
) as post, mock.patch.object(
- transports.ReservationsRestInterceptor, "pre_resize"
+ transports.ReservationsRestInterceptor, "pre_set_iam_policy"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2710,17 +4047,17 @@ def test_resize_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
- request = compute.ResizeReservationRequest()
+ request = compute.SetIamPolicyReservationRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.Policy
- client.resize_unary(
+ client.set_iam_policy(
request,
metadata=[
("key", "val"),
@@ -2732,8 +4069,8 @@ def test_resize_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_resize_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.ResizeReservationRequest
+def test_set_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetIamPolicyReservationRequest
):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2741,8 +4078,84 @@ def test_resize_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "reservation": "sample3"}
- request_init["reservations_resize_request_resource"] = {"specific_sku_count": 1920}
+ request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
+ request_init["zone_set_policy_request_resource"] = {
+ "bindings": [
+ {
+ "binding_id": "binding_id_value",
+ "condition": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "members": ["members_value_1", "members_value_2"],
+ "role": "role_value",
+ }
+ ],
+ "etag": "etag_value",
+ "policy": {
+ "audit_configs": [
+ {
+ "audit_log_configs": [
+ {
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "ignore_child_exemptions": True,
+ "log_type": "log_type_value",
+ }
+ ],
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "service": "service_value",
+ }
+ ],
+ "bindings": {},
+ "etag": "etag_value",
+ "iam_owned": True,
+ "rules": [
+ {
+ "action": "action_value",
+ "conditions": [
+ {
+ "iam": "iam_value",
+ "op": "op_value",
+ "svc": "svc_value",
+ "sys": "sys_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "ins": ["ins_value_1", "ins_value_2"],
+ "log_configs": [
+ {
+ "cloud_audit": {
+ "authorization_logging_options": {
+ "permission_type": "permission_type_value"
+ },
+ "log_name": "log_name_value",
+ },
+ "counter": {
+ "custom_fields": [
+ {"name": "name_value", "value": "value_value"}
+ ],
+ "field": "field_value",
+ "metric": "metric_value",
+ },
+ "data_access": {"log_mode": "log_mode_value"},
+ }
+ ],
+ "not_ins": ["not_ins_value_1", "not_ins_value_2"],
+ "permissions": ["permissions_value_1", "permissions_value_2"],
+ }
+ ],
+ "version": 774,
+ },
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2754,10 +4167,10 @@ def test_resize_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.resize_unary(request)
+ client.set_iam_policy(request)
-def test_resize_unary_rest_flattened():
+def test_set_iam_policy_rest_flattened():
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2766,22 +4179,22 @@ def test_resize_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Policy()
# get arguments that satisfy an http rule for this method
sample_request = {
"project": "sample1",
"zone": "sample2",
- "reservation": "sample3",
+ "resource": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- reservation="reservation_value",
- reservations_resize_request_resource=compute.ReservationsResizeRequest(
- specific_sku_count=1920
+ resource="resource_value",
+ zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
),
)
mock_args.update(sample_request)
@@ -2789,25 +4202,25 @@ def test_resize_unary_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.resize_unary(**mock_args)
+ client.set_iam_policy(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/reservations/{reservation}/resize"
+ "%s/compute/v1/projects/{project}/zones/{zone}/reservations/{resource}/setIamPolicy"
% client.transport._host,
args[1],
)
-def test_resize_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2816,18 +4229,18 @@ def test_resize_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.resize_unary(
- compute.ResizeReservationRequest(),
+ client.set_iam_policy(
+ compute.SetIamPolicyReservationRequest(),
project="project_value",
zone="zone_value",
- reservation="reservation_value",
- reservations_resize_request_resource=compute.ReservationsResizeRequest(
- specific_sku_count=1920
+ resource="resource_value",
+ zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
),
)
-def test_resize_unary_rest_error():
+def test_set_iam_policy_rest_error():
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2836,11 +4249,11 @@ def test_resize_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetIamPolicyReservationRequest,
+ compute.TestIamPermissionsReservationRequest,
dict,
],
)
-def test_set_iam_policy_rest(request_type):
+def test_test_iam_permissions_rest(request_type):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2848,111 +4261,33 @@ def test_set_iam_policy_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
- request_init["zone_set_policy_request_resource"] = {
- "bindings": [
- {
- "binding_id": "binding_id_value",
- "condition": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "members": ["members_value_1", "members_value_2"],
- "role": "role_value",
- }
- ],
- "etag": "etag_value",
- "policy": {
- "audit_configs": [
- {
- "audit_log_configs": [
- {
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "ignore_child_exemptions": True,
- "log_type": "log_type_value",
- }
- ],
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "service": "service_value",
- }
- ],
- "bindings": {},
- "etag": "etag_value",
- "iam_owned": True,
- "rules": [
- {
- "action": "action_value",
- "conditions": [
- {
- "iam": "iam_value",
- "op": "op_value",
- "svc": "svc_value",
- "sys": "sys_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "description": "description_value",
- "ins": ["ins_value_1", "ins_value_2"],
- "log_configs": [
- {
- "cloud_audit": {
- "authorization_logging_options": {
- "permission_type": "permission_type_value"
- },
- "log_name": "log_name_value",
- },
- "counter": {
- "custom_fields": [
- {"name": "name_value", "value": "value_value"}
- ],
- "field": "field_value",
- "metric": "metric_value",
- },
- "data_access": {"log_mode": "log_mode_value"},
- }
- ],
- "not_ins": ["not_ins_value_1", "not_ins_value_2"],
- "permissions": ["permissions_value_1", "permissions_value_2"],
- }
- ],
- "version": 774,
- },
+ request_init["test_permissions_request_resource"] = {
+ "permissions": ["permissions_value_1", "permissions_value_2"]
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.TestPermissionsResponse(
+ permissions=["permissions_value"],
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.TestPermissionsResponse.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.test_iam_permissions(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, compute.TestPermissionsResponse)
+ assert response.permissions == ["permissions_value"]
-def test_set_iam_policy_rest_required_fields(
- request_type=compute.SetIamPolicyReservationRequest,
+def test_test_iam_permissions_rest_required_fields(
+ request_type=compute.TestIamPermissionsReservationRequest,
):
transport_class = transports.ReservationsRestTransport
@@ -2971,7 +4306,7 @@ def test_set_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).test_iam_permissions._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2982,7 +4317,7 @@ def test_set_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).test_iam_permissions._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -3000,7 +4335,7 @@ def test_set_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.TestPermissionsResponse()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3019,38 +4354,38 @@ def test_set_iam_policy_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.TestPermissionsResponse.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.test_iam_permissions(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_iam_policy_rest_unset_required_fields():
+def test_test_iam_permissions_rest_unset_required_fields():
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.test_iam_permissions._get_unset_required_fields({})
assert set(unset_fields) == (
set(())
& set(
(
"project",
"resource",
+ "testPermissionsRequestResource",
"zone",
- "zoneSetPolicyRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_iam_policy_rest_interceptors(null_interceptor):
+def test_test_iam_permissions_rest_interceptors(null_interceptor):
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3063,9 +4398,9 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ReservationsRestInterceptor, "post_set_iam_policy"
+ transports.ReservationsRestInterceptor, "post_test_iam_permissions"
) as post, mock.patch.object(
- transports.ReservationsRestInterceptor, "pre_set_iam_policy"
+ transports.ReservationsRestInterceptor, "pre_test_iam_permissions"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3080,17 +4415,19 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.TestPermissionsResponse.to_json(
+ compute.TestPermissionsResponse()
+ )
- request = compute.SetIamPolicyReservationRequest()
+ request = compute.TestIamPermissionsReservationRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.TestPermissionsResponse
- client.set_iam_policy(
+ client.test_iam_permissions(
request,
metadata=[
("key", "val"),
@@ -3102,8 +4439,8 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.SetIamPolicyReservationRequest
+def test_test_iam_permissions_rest_bad_request(
+ transport: str = "rest", request_type=compute.TestIamPermissionsReservationRequest
):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3112,82 +4449,8 @@ def test_set_iam_policy_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
- request_init["zone_set_policy_request_resource"] = {
- "bindings": [
- {
- "binding_id": "binding_id_value",
- "condition": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "members": ["members_value_1", "members_value_2"],
- "role": "role_value",
- }
- ],
- "etag": "etag_value",
- "policy": {
- "audit_configs": [
- {
- "audit_log_configs": [
- {
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "ignore_child_exemptions": True,
- "log_type": "log_type_value",
- }
- ],
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "service": "service_value",
- }
- ],
- "bindings": {},
- "etag": "etag_value",
- "iam_owned": True,
- "rules": [
- {
- "action": "action_value",
- "conditions": [
- {
- "iam": "iam_value",
- "op": "op_value",
- "svc": "svc_value",
- "sys": "sys_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "description": "description_value",
- "ins": ["ins_value_1", "ins_value_2"],
- "log_configs": [
- {
- "cloud_audit": {
- "authorization_logging_options": {
- "permission_type": "permission_type_value"
- },
- "log_name": "log_name_value",
- },
- "counter": {
- "custom_fields": [
- {"name": "name_value", "value": "value_value"}
- ],
- "field": "field_value",
- "metric": "metric_value",
- },
- "data_access": {"log_mode": "log_mode_value"},
- }
- ],
- "not_ins": ["not_ins_value_1", "not_ins_value_2"],
- "permissions": ["permissions_value_1", "permissions_value_2"],
- }
- ],
- "version": 774,
- },
+ request_init["test_permissions_request_resource"] = {
+ "permissions": ["permissions_value_1", "permissions_value_2"]
}
request = request_type(request_init)
@@ -3200,10 +4463,10 @@ def test_set_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_iam_policy(request)
+ client.test_iam_permissions(request)
-def test_set_iam_policy_rest_flattened():
+def test_test_iam_permissions_rest_flattened():
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3212,7 +4475,7 @@ def test_set_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.TestPermissionsResponse()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -3226,8 +4489,8 @@ def test_set_iam_policy_rest_flattened():
project="project_value",
zone="zone_value",
resource="resource_value",
- zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
+ test_permissions_request_resource=compute.TestPermissionsRequest(
+ permissions=["permissions_value"]
),
)
mock_args.update(sample_request)
@@ -3235,25 +4498,25 @@ def test_set_iam_policy_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.TestPermissionsResponse.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_iam_policy(**mock_args)
+ client.test_iam_permissions(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/reservations/{resource}/setIamPolicy"
+ "%s/compute/v1/projects/{project}/zones/{zone}/reservations/{resource}/testIamPermissions"
% client.transport._host,
args[1],
)
-def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3262,18 +4525,18 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_iam_policy(
- compute.SetIamPolicyReservationRequest(),
+ client.test_iam_permissions(
+ compute.TestIamPermissionsReservationRequest(),
project="project_value",
zone="zone_value",
resource="resource_value",
- zone_set_policy_request_resource=compute.ZoneSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
+ test_permissions_request_resource=compute.TestPermissionsRequest(
+ permissions=["permissions_value"]
),
)
-def test_set_iam_policy_rest_error():
+def test_test_iam_permissions_rest_error():
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3282,51 +4545,119 @@ def test_set_iam_policy_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.TestIamPermissionsReservationRequest,
+ compute.UpdateReservationRequest,
dict,
],
)
-def test_test_iam_permissions_rest(request_type):
+def test_update_rest(request_type):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
- request_init["test_permissions_request_resource"] = {
- "permissions": ["permissions_value_1", "permissions_value_2"]
+ request_init = {"project": "sample1", "zone": "sample2", "reservation": "sample3"}
+ request_init["reservation_resource"] = {
+ "commitment": "commitment_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "share_settings": {"project_map": {}, "share_type": "share_type_value"},
+ "specific_reservation": {
+ "assured_count": 1407,
+ "count": 553,
+ "in_use_count": 1291,
+ "instance_properties": {
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "local_ssds": [{"disk_size_gb": 1261, "interface": "interface_value"}],
+ "location_hint": "location_hint_value",
+ "machine_type": "machine_type_value",
+ "min_cpu_platform": "min_cpu_platform_value",
+ },
+ },
+ "specific_reservation_required": True,
+ "status": "status_value",
+ "zone": "zone_value",
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TestPermissionsResponse(
- permissions=["permissions_value"],
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TestPermissionsResponse.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.test_iam_permissions(request)
+ response = client.update(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.TestPermissionsResponse)
- assert response.permissions == ["permissions_value"]
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_test_iam_permissions_rest_required_fields(
- request_type=compute.TestIamPermissionsReservationRequest,
-):
+def test_update_rest_required_fields(request_type=compute.UpdateReservationRequest):
transport_class = transports.ReservationsRestTransport
request_init = {}
request_init["project"] = ""
- request_init["resource"] = ""
+ request_init["reservation"] = ""
request_init["zone"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
@@ -3339,25 +4670,33 @@ def test_test_iam_permissions_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).test_iam_permissions._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
+ jsonified_request["reservation"] = "reservation_value"
jsonified_request["zone"] = "zone_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).test_iam_permissions._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "paths",
+ "request_id",
+ "update_mask",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
+ assert "reservation" in jsonified_request
+ assert jsonified_request["reservation"] == "reservation_value"
assert "zone" in jsonified_request
assert jsonified_request["zone"] == "zone_value"
@@ -3368,7 +4707,7 @@ def test_test_iam_permissions_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.TestPermissionsResponse()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3379,7 +4718,7 @@ def test_test_iam_permissions_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "patch",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -3387,30 +4726,36 @@ def test_test_iam_permissions_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TestPermissionsResponse.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.test_iam_permissions(request)
+ response = client.update(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_test_iam_permissions_rest_unset_required_fields():
+def test_update_rest_unset_required_fields():
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.test_iam_permissions._get_unset_required_fields({})
+ unset_fields = transport.update._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(
+ (
+ "paths",
+ "requestId",
+ "updateMask",
+ )
+ )
& set(
(
"project",
- "resource",
- "testPermissionsRequestResource",
+ "reservation",
+ "reservationResource",
"zone",
)
)
@@ -3418,7 +4763,7 @@ def test_test_iam_permissions_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_test_iam_permissions_rest_interceptors(null_interceptor):
+def test_update_rest_interceptors(null_interceptor):
transport = transports.ReservationsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3431,9 +4776,9 @@ def test_test_iam_permissions_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ReservationsRestInterceptor, "post_test_iam_permissions"
+ transports.ReservationsRestInterceptor, "post_update"
) as post, mock.patch.object(
- transports.ReservationsRestInterceptor, "pre_test_iam_permissions"
+ transports.ReservationsRestInterceptor, "pre_update"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3448,19 +4793,17 @@ def test_test_iam_permissions_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.TestPermissionsResponse.to_json(
- compute.TestPermissionsResponse()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.TestIamPermissionsReservationRequest()
+ request = compute.UpdateReservationRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.TestPermissionsResponse
+ post.return_value = compute.Operation
- client.test_iam_permissions(
+ client.update(
request,
metadata=[
("key", "val"),
@@ -3472,8 +4815,8 @@ def test_test_iam_permissions_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_test_iam_permissions_rest_bad_request(
- transport: str = "rest", request_type=compute.TestIamPermissionsReservationRequest
+def test_update_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateReservationRequest
):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3481,9 +4824,37 @@ def test_test_iam_permissions_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "zone": "sample2", "resource": "sample3"}
- request_init["test_permissions_request_resource"] = {
- "permissions": ["permissions_value_1", "permissions_value_2"]
+ request_init = {"project": "sample1", "zone": "sample2", "reservation": "sample3"}
+ request_init["reservation_resource"] = {
+ "commitment": "commitment_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "share_settings": {"project_map": {}, "share_type": "share_type_value"},
+ "specific_reservation": {
+ "assured_count": 1407,
+ "count": 553,
+ "in_use_count": 1291,
+ "instance_properties": {
+ "guest_accelerators": [
+ {
+ "accelerator_count": 1805,
+ "accelerator_type": "accelerator_type_value",
+ }
+ ],
+ "local_ssds": [{"disk_size_gb": 1261, "interface": "interface_value"}],
+ "location_hint": "location_hint_value",
+ "machine_type": "machine_type_value",
+ "min_cpu_platform": "min_cpu_platform_value",
+ },
+ },
+ "specific_reservation_required": True,
+ "status": "status_value",
+ "zone": "zone_value",
}
request = request_type(request_init)
@@ -3496,10 +4867,10 @@ def test_test_iam_permissions_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.test_iam_permissions(request)
+ client.update(request)
-def test_test_iam_permissions_rest_flattened():
+def test_update_rest_flattened():
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3508,48 +4879,46 @@ def test_test_iam_permissions_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TestPermissionsResponse()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
"project": "sample1",
"zone": "sample2",
- "resource": "sample3",
+ "reservation": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
zone="zone_value",
- resource="resource_value",
- test_permissions_request_resource=compute.TestPermissionsRequest(
- permissions=["permissions_value"]
- ),
+ reservation="reservation_value",
+ reservation_resource=compute.Reservation(commitment="commitment_value"),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TestPermissionsResponse.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.test_iam_permissions(**mock_args)
+ client.update(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/zones/{zone}/reservations/{resource}/testIamPermissions"
+ "%s/compute/v1/projects/{project}/zones/{zone}/reservations/{reservation}"
% client.transport._host,
args[1],
)
-def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"):
+def test_update_rest_flattened_error(transport: str = "rest"):
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3558,18 +4927,16 @@ def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.test_iam_permissions(
- compute.TestIamPermissionsReservationRequest(),
+ client.update(
+ compute.UpdateReservationRequest(),
project="project_value",
zone="zone_value",
- resource="resource_value",
- test_permissions_request_resource=compute.TestPermissionsRequest(
- permissions=["permissions_value"]
- ),
+ reservation="reservation_value",
+ reservation_resource=compute.Reservation(commitment="commitment_value"),
)
-def test_test_iam_permissions_rest_error():
+def test_update_rest_error():
client = ReservationsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3661,28 +5028,6 @@ def test_update_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_unary_rest_required_fields(
@@ -4052,6 +5397,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = ReservationsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_reservations_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -4092,6 +5450,14 @@ def test_reservations_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_reservations_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_resource_policies.py b/tests/unit/gapic/compute_v1/test_resource_policies.py
index 111ac5e09..7078cadbb 100644
--- a/tests/unit/gapic/compute_v1/test_resource_policies.py
+++ b/tests/unit/gapic/compute_v1/test_resource_policies.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -906,7 +908,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = ResourcePoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -954,10 +956,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -982,9 +984,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteResourcePolicyRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteResourcePolicyRequest):
transport_class = transports.ResourcePoliciesRestTransport
request_init = {}
@@ -1055,14 +1055,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.ResourcePoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1081,7 +1081,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.ResourcePoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1121,7 +1121,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1133,7 +1133,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteResourcePolicyRequest
):
client = ResourcePoliciesClient(
@@ -1158,10 +1158,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = ResourcePoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1195,7 +1195,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1208,7 +1208,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = ResourcePoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1217,7 +1217,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteResourcePolicyRequest(),
project="project_value",
region="region_value",
@@ -1225,7 +1225,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = ResourcePoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1234,11 +1234,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetResourcePolicyRequest,
+ compute.DeleteResourcePolicyRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = ResourcePoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1255,38 +1255,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ResourcePolicy(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- status="status_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ResourcePolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.ResourcePolicy)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.status == "status_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetResourcePolicyRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteResourcePolicyRequest,
+):
transport_class = transports.ResourcePoliciesRestTransport
request_init = {}
@@ -1304,7 +1312,7 @@ def test_get_rest_required_fields(request_type=compute.GetResourcePolicyRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1315,7 +1323,9 @@ def test_get_rest_required_fields(request_type=compute.GetResourcePolicyRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1333,7 +1343,7 @@ def test_get_rest_required_fields(request_type=compute.GetResourcePolicyRequest)
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.ResourcePolicy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1344,32 +1354,32 @@ def test_get_rest_required_fields(request_type=compute.GetResourcePolicyRequest)
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ResourcePolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.ResourcePoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -1381,7 +1391,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.ResourcePoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1394,9 +1404,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ResourcePoliciesRestInterceptor, "post_get"
+ transports.ResourcePoliciesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.ResourcePoliciesRestInterceptor, "pre_get"
+ transports.ResourcePoliciesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1411,19 +1421,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.ResourcePolicy.to_json(
- compute.ResourcePolicy()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetResourcePolicyRequest()
+ request = compute.DeleteResourcePolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.ResourcePolicy
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1435,8 +1443,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetResourcePolicyRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteResourcePolicyRequest
):
client = ResourcePoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1460,10 +1468,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = ResourcePoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1472,7 +1480,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ResourcePolicy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1492,12 +1500,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ResourcePolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1510,7 +1518,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = ResourcePoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1519,15 +1527,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetResourcePolicyRequest(),
+ client.delete_unary(
+ compute.DeleteResourcePolicyRequest(),
project="project_value",
region="region_value",
resource_policy="resource_policy_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = ResourcePoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1536,53 +1544,740 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicyResourcePolicyRequest,
+ compute.GetResourcePolicyRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_get_rest(request_type):
client = ResourcePoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "resource_policy": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ResourcePolicy(
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ region="region_value",
+ self_link="self_link_value",
+ status="status_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ResourcePolicy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.ResourcePolicy)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.status == "status_value"
+
+
+def test_get_rest_required_fields(request_type=compute.GetResourcePolicyRequest):
+ transport_class = transports.ResourcePoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["resource_policy"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["resourcePolicy"] = "resource_policy_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "resourcePolicy" in jsonified_request
+ assert jsonified_request["resourcePolicy"] == "resource_policy_value"
+
+ client = ResourcePoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ResourcePolicy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ResourcePolicy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.ResourcePoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "project",
+ "region",
+ "resourcePolicy",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.ResourcePoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ResourcePoliciesRestInterceptor(),
+ )
+ client = ResourcePoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ResourcePoliciesRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.ResourcePoliciesRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.ResourcePolicy.to_json(
+ compute.ResourcePolicy()
+ )
+
+ request = compute.GetResourcePolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.ResourcePolicy
+
+ client.get(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetResourcePolicyRequest
+):
+ client = ResourcePoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "resource_policy": "sample3",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = ResourcePoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ResourcePolicy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "resource_policy": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ resource_policy="resource_policy_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ResourcePolicy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/resourcePolicies/{resource_policy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = ResourcePoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetResourcePolicyRequest(),
+ project="project_value",
+ region="region_value",
+ resource_policy="resource_policy_value",
+ )
+
+
+def test_get_rest_error():
+ client = ResourcePoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetIamPolicyResourcePolicyRequest,
+ dict,
+ ],
+)
+def test_get_iam_policy_rest(request_type):
+ client = ResourcePoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicyResourcePolicyRequest,
+):
+ transport_class = transports.ResourcePoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["resource"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["resource"] = "resource_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+
+ client = ResourcePoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_iam_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_iam_policy_rest_unset_required_fields():
+ transport = transports.ResourcePoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("optionsRequestedPolicyVersion",))
+ & set(
+ (
+ "project",
+ "region",
+ "resource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_iam_policy_rest_interceptors(null_interceptor):
+ transport = transports.ResourcePoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ResourcePoliciesRestInterceptor(),
+ )
+ client = ResourcePoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ResourcePoliciesRestInterceptor, "post_get_iam_policy"
+ ) as post, mock.patch.object(
+ transports.ResourcePoliciesRestInterceptor, "pre_get_iam_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
+
+ request = compute.GetIamPolicyResourcePolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Policy
+
+ client.get_iam_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetIamPolicyResourcePolicyRequest
+):
+ client = ResourcePoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_iam_policy(request)
+
+
+def test_get_iam_policy_rest_flattened():
+ client = ResourcePoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "resource": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ resource="resource_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_iam_policy(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/resourcePolicies/{resource}/getIamPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+ client = ResourcePoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_iam_policy(
+ compute.GetIamPolicyResourcePolicyRequest(),
+ project="project_value",
+ region="region_value",
+ resource="resource_value",
+ )
+
+
+def test_get_iam_policy_rest_error():
+ client = ResourcePoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertResourcePolicyRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = ResourcePoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["resource_policy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "group_placement_policy": {
+ "availability_domain_count": 2650,
+ "collocation": "collocation_value",
+ "vm_count": 875,
+ },
+ "id": 205,
+ "instance_schedule_policy": {
+ "expiration_time": "expiration_time_value",
+ "start_time": "start_time_value",
+ "time_zone": "time_zone_value",
+ "vm_start_schedule": {"schedule": "schedule_value"},
+ "vm_stop_schedule": {},
+ },
+ "kind": "kind_value",
+ "name": "name_value",
+ "region": "region_value",
+ "resource_status": {
+ "instance_schedule_policy": {
+ "last_run_start_time": "last_run_start_time_value",
+ "next_run_start_time": "next_run_start_time_value",
+ }
+ },
+ "self_link": "self_link_value",
+ "snapshot_schedule_policy": {
+ "retention_policy": {
+ "max_retention_days": 1933,
+ "on_source_disk_delete": "on_source_disk_delete_value",
+ },
+ "schedule": {
+ "daily_schedule": {
+ "days_in_cycle": 1366,
+ "duration": "duration_value",
+ "start_time": "start_time_value",
+ },
+ "hourly_schedule": {
+ "duration": "duration_value",
+ "hours_in_cycle": 1494,
+ "start_time": "start_time_value",
+ },
+ "weekly_schedule": {
+ "day_of_weeks": [
+ {
+ "day": "day_value",
+ "duration": "duration_value",
+ "start_time": "start_time_value",
+ }
+ ]
+ },
+ },
+ "snapshot_properties": {
+ "chain_name": "chain_name_value",
+ "guest_flush": True,
+ "labels": {},
+ "storage_locations": [
+ "storage_locations_value_1",
+ "storage_locations_value_2",
+ ],
+ },
+ },
+ "status": "status_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicyResourcePolicyRequest,
-):
+def test_insert_rest_required_fields(request_type=compute.InsertResourcePolicyRequest):
transport_class = transports.ResourcePoliciesRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
- request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1594,20 +2289,19 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
- jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1615,8 +2309,6 @@ def test_get_iam_policy_rest_required_fields(
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
client = ResourcePoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1625,7 +2317,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1636,44 +2328,45 @@ def test_get_iam_policy_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.ResourcePoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
+ set(("requestId",))
& set(
(
"project",
"region",
- "resource",
+ "resourcePolicyResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.ResourcePoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1686,9 +2379,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ResourcePoliciesRestInterceptor, "post_get_iam_policy"
+ transports.ResourcePoliciesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.ResourcePoliciesRestInterceptor, "pre_get_iam_policy"
+ transports.ResourcePoliciesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1703,17 +2396,17 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetIamPolicyResourcePolicyRequest()
+ request = compute.InsertResourcePolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.get_iam_policy(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1725,8 +2418,8 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.GetIamPolicyResourcePolicyRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertResourcePolicyRequest
):
client = ResourcePoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1734,7 +2427,71 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["resource_policy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "group_placement_policy": {
+ "availability_domain_count": 2650,
+ "collocation": "collocation_value",
+ "vm_count": 875,
+ },
+ "id": 205,
+ "instance_schedule_policy": {
+ "expiration_time": "expiration_time_value",
+ "start_time": "start_time_value",
+ "time_zone": "time_zone_value",
+ "vm_start_schedule": {"schedule": "schedule_value"},
+ "vm_stop_schedule": {},
+ },
+ "kind": "kind_value",
+ "name": "name_value",
+ "region": "region_value",
+ "resource_status": {
+ "instance_schedule_policy": {
+ "last_run_start_time": "last_run_start_time_value",
+ "next_run_start_time": "next_run_start_time_value",
+ }
+ },
+ "self_link": "self_link_value",
+ "snapshot_schedule_policy": {
+ "retention_policy": {
+ "max_retention_days": 1933,
+ "on_source_disk_delete": "on_source_disk_delete_value",
+ },
+ "schedule": {
+ "daily_schedule": {
+ "days_in_cycle": 1366,
+ "duration": "duration_value",
+ "start_time": "start_time_value",
+ },
+ "hourly_schedule": {
+ "duration": "duration_value",
+ "hours_in_cycle": 1494,
+ "start_time": "start_time_value",
+ },
+ "weekly_schedule": {
+ "day_of_weeks": [
+ {
+ "day": "day_value",
+ "duration": "duration_value",
+ "start_time": "start_time_value",
+ }
+ ]
+ },
+ },
+ "snapshot_properties": {
+ "chain_name": "chain_name_value",
+ "guest_flush": True,
+ "labels": {},
+ "storage_locations": [
+ "storage_locations_value_1",
+ "storage_locations_value_2",
+ ],
+ },
+ },
+ "status": "status_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1746,10 +2503,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.insert(request)
-def test_get_iam_policy_rest_flattened():
+def test_insert_rest_flattened():
client = ResourcePoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1758,45 +2515,43 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "region": "sample2",
- "resource": "sample3",
- }
+ sample_request = {"project": "sample1", "region": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- resource="resource_value",
+ resource_policy_resource=compute.ResourcePolicy(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/resourcePolicies/{resource}/getIamPolicy"
+ "%s/compute/v1/projects/{project}/regions/{region}/resourcePolicies"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = ResourcePoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1805,15 +2560,17 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicyResourcePolicyRequest(),
+ client.insert(
+ compute.InsertResourcePolicyRequest(),
project="project_value",
region="region_value",
- resource="resource_value",
+ resource_policy_resource=compute.ResourcePolicy(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
-def test_get_iam_policy_rest_error():
+def test_insert_rest_error():
client = ResourcePoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1938,28 +2695,6 @@ def test_insert_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_insert_unary_rest_required_fields(
@@ -3436,6 +4171,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = ResourcePoliciesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_resource_policies_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3474,6 +4222,14 @@ def test_resource_policies_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_resource_policies_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_routers.py b/tests/unit/gapic/compute_v1/test_routers.py
index cee322373..47972c56c 100644
--- a/tests/unit/gapic/compute_v1/test_routers.py
+++ b/tests/unit/gapic/compute_v1/test_routers.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -859,7 +861,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -903,10 +905,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -931,7 +933,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(request_type=compute.DeleteRouterRequest):
+def test_delete_rest_required_fields(request_type=compute.DeleteRouterRequest):
transport_class = transports.RoutersRestTransport
request_init = {}
@@ -1002,14 +1004,14 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteRouterRequ
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1028,7 +1030,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.RoutersRestInterceptor(),
@@ -1066,7 +1068,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1078,7 +1080,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteRouterRequest
):
client = RoutersClient(
@@ -1099,10 +1101,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1136,7 +1138,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1149,7 +1151,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1158,7 +1160,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteRouterRequest(),
project="project_value",
region="region_value",
@@ -1166,7 +1168,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1175,11 +1177,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRouterRequest,
+ compute.DeleteRouterRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1192,40 +1194,44 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Router(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- encrypted_interconnect_router=True,
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- network="network_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Router.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Router)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.encrypted_interconnect_router is True
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.network == "network_value"
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetRouterRequest):
+def test_delete_unary_rest_required_fields(request_type=compute.DeleteRouterRequest):
transport_class = transports.RoutersRestTransport
request_init = {}
@@ -1243,7 +1249,7 @@ def test_get_rest_required_fields(request_type=compute.GetRouterRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1254,7 +1260,9 @@ def test_get_rest_required_fields(request_type=compute.GetRouterRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1272,7 +1280,7 @@ def test_get_rest_required_fields(request_type=compute.GetRouterRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Router()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1283,32 +1291,32 @@ def test_get_rest_required_fields(request_type=compute.GetRouterRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Router.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -1320,7 +1328,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.RoutersRestInterceptor(),
@@ -1331,9 +1339,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RoutersRestInterceptor, "post_get"
+ transports.RoutersRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.RoutersRestInterceptor, "pre_get"
+ transports.RoutersRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1348,17 +1356,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Router.to_json(compute.Router())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRouterRequest()
+ request = compute.DeleteRouterRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Router
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1370,8 +1378,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRouterRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteRouterRequest
):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1391,10 +1399,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1403,7 +1411,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Router()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1423,12 +1431,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Router.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1441,7 +1449,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1450,15 +1458,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRouterRequest(),
+ client.delete_unary(
+ compute.DeleteRouterRequest(),
project="project_value",
region="region_value",
router="router_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1467,11 +1475,11 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetNatMappingInfoRoutersRequest,
+ compute.GetRouterRequest,
dict,
],
)
-def test_get_nat_mapping_info_rest(request_type):
+def test_get_rest(request_type):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1484,32 +1492,40 @@ def test_get_nat_mapping_info_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.VmEndpointNatMappingsList(
- id="id_value",
+ return_value = compute.Router(
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ encrypted_interconnect_router=True,
+ id=205,
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ network="network_value",
+ region="region_value",
self_link="self_link_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.VmEndpointNatMappingsList.to_json(return_value)
+ json_return_value = compute.Router.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_nat_mapping_info(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.GetNatMappingInfoPager)
- assert response.id == "id_value"
+ assert isinstance(response, compute.Router)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.encrypted_interconnect_router is True
+ assert response.id == 205
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.network == "network_value"
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
-def test_get_nat_mapping_info_rest_required_fields(
- request_type=compute.GetNatMappingInfoRoutersRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetRouterRequest):
transport_class = transports.RoutersRestTransport
request_init = {}
@@ -1527,7 +1543,7 @@ def test_get_nat_mapping_info_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_nat_mapping_info._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1538,17 +1554,7 @@ def test_get_nat_mapping_info_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_nat_mapping_info._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1566,7 +1572,7 @@ def test_get_nat_mapping_info_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.VmEndpointNatMappingsList()
+ return_value = compute.Router()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1584,33 +1590,25 @@ def test_get_nat_mapping_info_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.VmEndpointNatMappingsList.to_json(return_value)
+ json_return_value = compute.Router.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_nat_mapping_info(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_nat_mapping_info_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_nat_mapping_info._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(())
& set(
(
"project",
@@ -1622,7 +1620,7 @@ def test_get_nat_mapping_info_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_nat_mapping_info_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.RoutersRestInterceptor(),
@@ -1633,9 +1631,9 @@ def test_get_nat_mapping_info_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RoutersRestInterceptor, "post_get_nat_mapping_info"
+ transports.RoutersRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.RoutersRestInterceptor, "pre_get_nat_mapping_info"
+ transports.RoutersRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1650,19 +1648,17 @@ def test_get_nat_mapping_info_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.VmEndpointNatMappingsList.to_json(
- compute.VmEndpointNatMappingsList()
- )
+ req.return_value._content = compute.Router.to_json(compute.Router())
- request = compute.GetNatMappingInfoRoutersRequest()
+ request = compute.GetRouterRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.VmEndpointNatMappingsList
+ post.return_value = compute.Router
- client.get_nat_mapping_info(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1674,8 +1670,8 @@ def test_get_nat_mapping_info_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_nat_mapping_info_rest_bad_request(
- transport: str = "rest", request_type=compute.GetNatMappingInfoRoutersRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRouterRequest
):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1695,10 +1691,10 @@ def test_get_nat_mapping_info_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_nat_mapping_info(request)
+ client.get(request)
-def test_get_nat_mapping_info_rest_flattened():
+def test_get_rest_flattened():
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1707,7 +1703,7 @@ def test_get_nat_mapping_info_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.VmEndpointNatMappingsList()
+ return_value = compute.Router()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1727,25 +1723,25 @@ def test_get_nat_mapping_info_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.VmEndpointNatMappingsList.to_json(return_value)
+ json_return_value = compute.Router.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_nat_mapping_info(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/routers/{router}/getNatMappingInfo"
+ "%s/compute/v1/projects/{project}/regions/{region}/routers/{router}"
% client.transport._host,
args[1],
)
-def test_get_nat_mapping_info_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1754,118 +1750,65 @@ def test_get_nat_mapping_info_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_nat_mapping_info(
- compute.GetNatMappingInfoRoutersRequest(),
+ client.get(
+ compute.GetRouterRequest(),
project="project_value",
region="region_value",
router="router_value",
)
-def test_get_nat_mapping_info_rest_pager(transport: str = "rest"):
+def test_get_rest_error():
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetNatMappingInfoRoutersRequest,
+ dict,
+ ],
+)
+def test_get_nat_mapping_info_rest(request_type):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ transport="rest",
)
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.VmEndpointNatMappingsList(
- result=[
- compute.VmEndpointNatMappings(),
- compute.VmEndpointNatMappings(),
- compute.VmEndpointNatMappings(),
- ],
- next_page_token="abc",
- ),
- compute.VmEndpointNatMappingsList(
- result=[],
- next_page_token="def",
- ),
- compute.VmEndpointNatMappingsList(
- result=[
- compute.VmEndpointNatMappings(),
- ],
- next_page_token="ghi",
- ),
- compute.VmEndpointNatMappingsList(
- result=[
- compute.VmEndpointNatMappings(),
- compute.VmEndpointNatMappings(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.VmEndpointNatMappingsList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {
- "project": "sample1",
- "region": "sample2",
- "router": "sample3",
- }
-
- pager = client.get_nat_mapping_info(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.VmEndpointNatMappings) for i in results)
-
- pages = list(client.get_nat_mapping_info(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
-
-@pytest.mark.parametrize(
- "request_type",
- [
- compute.GetRouterStatusRouterRequest,
- dict,
- ],
-)
-def test_get_router_status_rest(request_type):
- client = RoutersClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport="rest",
- )
-
- # send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "router": "sample3"}
- request = request_type(request_init)
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "router": "sample3"}
+ request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RouterStatusResponse(
+ return_value = compute.VmEndpointNatMappingsList(
+ id="id_value",
kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RouterStatusResponse.to_json(return_value)
+ json_return_value = compute.VmEndpointNatMappingsList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_router_status(request)
+ response = client.get_nat_mapping_info(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.RouterStatusResponse)
+ assert isinstance(response, pagers.GetNatMappingInfoPager)
+ assert response.id == "id_value"
assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
-def test_get_router_status_rest_required_fields(
- request_type=compute.GetRouterStatusRouterRequest,
+def test_get_nat_mapping_info_rest_required_fields(
+ request_type=compute.GetNatMappingInfoRoutersRequest,
):
transport_class = transports.RoutersRestTransport
@@ -1884,7 +1827,7 @@ def test_get_router_status_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_router_status._get_unset_required_fields(jsonified_request)
+ ).get_nat_mapping_info._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1895,7 +1838,17 @@ def test_get_router_status_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_router_status._get_unset_required_fields(jsonified_request)
+ ).get_nat_mapping_info._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1913,7 +1866,7 @@ def test_get_router_status_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.RouterStatusResponse()
+ return_value = compute.VmEndpointNatMappingsList()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1931,25 +1884,33 @@ def test_get_router_status_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RouterStatusResponse.to_json(return_value)
+ json_return_value = compute.VmEndpointNatMappingsList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_router_status(request)
+ response = client.get_nat_mapping_info(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_router_status_rest_unset_required_fields():
+def test_get_nat_mapping_info_rest_unset_required_fields():
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_router_status._get_unset_required_fields({})
+ unset_fields = transport.get_nat_mapping_info._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
& set(
(
"project",
@@ -1961,7 +1922,7 @@ def test_get_router_status_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_router_status_rest_interceptors(null_interceptor):
+def test_get_nat_mapping_info_rest_interceptors(null_interceptor):
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.RoutersRestInterceptor(),
@@ -1972,9 +1933,9 @@ def test_get_router_status_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RoutersRestInterceptor, "post_get_router_status"
+ transports.RoutersRestInterceptor, "post_get_nat_mapping_info"
) as post, mock.patch.object(
- transports.RoutersRestInterceptor, "pre_get_router_status"
+ transports.RoutersRestInterceptor, "pre_get_nat_mapping_info"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1989,19 +1950,19 @@ def test_get_router_status_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.RouterStatusResponse.to_json(
- compute.RouterStatusResponse()
+ req.return_value._content = compute.VmEndpointNatMappingsList.to_json(
+ compute.VmEndpointNatMappingsList()
)
- request = compute.GetRouterStatusRouterRequest()
+ request = compute.GetNatMappingInfoRoutersRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.RouterStatusResponse
+ post.return_value = compute.VmEndpointNatMappingsList
- client.get_router_status(
+ client.get_nat_mapping_info(
request,
metadata=[
("key", "val"),
@@ -2013,8 +1974,8 @@ def test_get_router_status_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_router_status_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRouterStatusRouterRequest
+def test_get_nat_mapping_info_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetNatMappingInfoRoutersRequest
):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2034,10 +1995,10 @@ def test_get_router_status_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_router_status(request)
+ client.get_nat_mapping_info(request)
-def test_get_router_status_rest_flattened():
+def test_get_nat_mapping_info_rest_flattened():
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2046,7 +2007,7 @@ def test_get_router_status_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RouterStatusResponse()
+ return_value = compute.VmEndpointNatMappingsList()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -2066,25 +2027,25 @@ def test_get_router_status_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RouterStatusResponse.to_json(return_value)
+ json_return_value = compute.VmEndpointNatMappingsList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_router_status(**mock_args)
+ client.get_nat_mapping_info(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/routers/{router}/getRouterStatus"
+ "%s/compute/v1/projects/{project}/regions/{region}/routers/{router}/getNatMappingInfo"
% client.transport._host,
args[1],
)
-def test_get_router_status_rest_flattened_error(transport: str = "rest"):
+def test_get_nat_mapping_info_rest_flattened_error(transport: str = "rest"):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2093,75 +2054,1818 @@ def test_get_router_status_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_router_status(
- compute.GetRouterStatusRouterRequest(),
+ client.get_nat_mapping_info(
+ compute.GetNatMappingInfoRoutersRequest(),
project="project_value",
region="region_value",
router="router_value",
)
-def test_get_router_status_rest_error():
+def test_get_nat_mapping_info_rest_pager(transport: str = "rest"):
client = RoutersClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
)
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.VmEndpointNatMappingsList(
+ result=[
+ compute.VmEndpointNatMappings(),
+ compute.VmEndpointNatMappings(),
+ compute.VmEndpointNatMappings(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.VmEndpointNatMappingsList(
+ result=[],
+ next_page_token="def",
+ ),
+ compute.VmEndpointNatMappingsList(
+ result=[
+ compute.VmEndpointNatMappings(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.VmEndpointNatMappingsList(
+ result=[
+ compute.VmEndpointNatMappings(),
+ compute.VmEndpointNatMappings(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.VmEndpointNatMappingsList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "router": "sample3",
+ }
+
+ pager = client.get_nat_mapping_info(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.VmEndpointNatMappings) for i in results)
+
+ pages = list(client.get_nat_mapping_info(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertRouterRequest,
+ compute.GetRouterStatusRouterRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_router_status_rest(request_type):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["router_resource"] = {
- "bgp": {
- "advertise_mode": "advertise_mode_value",
- "advertised_groups": [
- "advertised_groups_value_1",
- "advertised_groups_value_2",
- ],
- "advertised_ip_ranges": [
- {"description": "description_value", "range_": "range__value"}
- ],
- "asn": 322,
- "keepalive_interval": 1914,
- },
- "bgp_peers": [
- {
- "advertise_mode": "advertise_mode_value",
- "advertised_groups": [
- "advertised_groups_value_1",
- "advertised_groups_value_2",
- ],
- "advertised_ip_ranges": {},
- "advertised_route_priority": 2714,
- "bfd": {
- "min_receive_interval": 2122,
- "min_transmit_interval": 2265,
- "multiplier": 1095,
- "session_initialization_mode": "session_initialization_mode_value",
- },
- "enable": "enable_value",
- "enable_ipv6": True,
- "interface_name": "interface_name_value",
- "ip_address": "ip_address_value",
- "ipv6_nexthop_address": "ipv6_nexthop_address_value",
- "management_type": "management_type_value",
- "name": "name_value",
- "peer_asn": 845,
- "peer_ip_address": "peer_ip_address_value",
- "peer_ipv6_nexthop_address": "peer_ipv6_nexthop_address_value",
- "router_appliance_instance": "router_appliance_instance_value",
- }
+ request_init = {"project": "sample1", "region": "sample2", "router": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RouterStatusResponse(
+ kind="kind_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.RouterStatusResponse.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get_router_status(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.RouterStatusResponse)
+ assert response.kind == "kind_value"
+
+
+def test_get_router_status_rest_required_fields(
+ request_type=compute.GetRouterStatusRouterRequest,
+):
+ transport_class = transports.RoutersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["router"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_router_status._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["router"] = "router_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get_router_status._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "router" in jsonified_request
+ assert jsonified_request["router"] == "router_value"
+
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RouterStatusResponse()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.RouterStatusResponse.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get_router_status(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_router_status_rest_unset_required_fields():
+ transport = transports.RoutersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get_router_status._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "project",
+ "region",
+ "router",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_router_status_rest_interceptors(null_interceptor):
+ transport = transports.RoutersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.RoutersRestInterceptor(),
+ )
+ client = RoutersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RoutersRestInterceptor, "post_get_router_status"
+ ) as post, mock.patch.object(
+ transports.RoutersRestInterceptor, "pre_get_router_status"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.RouterStatusResponse.to_json(
+ compute.RouterStatusResponse()
+ )
+
+ request = compute.GetRouterStatusRouterRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.RouterStatusResponse
+
+ client.get_router_status(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_get_router_status_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRouterStatusRouterRequest
+):
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "router": "sample3"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get_router_status(request)
+
+
+def test_get_router_status_rest_flattened():
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RouterStatusResponse()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "router": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ router="router_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.RouterStatusResponse.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get_router_status(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/routers/{router}/getRouterStatus"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_router_status_rest_flattened_error(transport: str = "rest"):
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get_router_status(
+ compute.GetRouterStatusRouterRequest(),
+ project="project_value",
+ region="region_value",
+ router="router_value",
+ )
+
+
+def test_get_router_status_rest_error():
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRouterRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["router_resource"] = {
+ "bgp": {
+ "advertise_mode": "advertise_mode_value",
+ "advertised_groups": [
+ "advertised_groups_value_1",
+ "advertised_groups_value_2",
+ ],
+ "advertised_ip_ranges": [
+ {"description": "description_value", "range_": "range__value"}
+ ],
+ "asn": 322,
+ "keepalive_interval": 1914,
+ },
+ "bgp_peers": [
+ {
+ "advertise_mode": "advertise_mode_value",
+ "advertised_groups": [
+ "advertised_groups_value_1",
+ "advertised_groups_value_2",
+ ],
+ "advertised_ip_ranges": {},
+ "advertised_route_priority": 2714,
+ "bfd": {
+ "min_receive_interval": 2122,
+ "min_transmit_interval": 2265,
+ "multiplier": 1095,
+ "session_initialization_mode": "session_initialization_mode_value",
+ },
+ "enable": "enable_value",
+ "enable_ipv6": True,
+ "interface_name": "interface_name_value",
+ "ip_address": "ip_address_value",
+ "ipv6_nexthop_address": "ipv6_nexthop_address_value",
+ "management_type": "management_type_value",
+ "name": "name_value",
+ "peer_asn": 845,
+ "peer_ip_address": "peer_ip_address_value",
+ "peer_ipv6_nexthop_address": "peer_ipv6_nexthop_address_value",
+ "router_appliance_instance": "router_appliance_instance_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "encrypted_interconnect_router": True,
+ "id": 205,
+ "interfaces": [
+ {
+ "ip_range": "ip_range_value",
+ "linked_interconnect_attachment": "linked_interconnect_attachment_value",
+ "linked_vpn_tunnel": "linked_vpn_tunnel_value",
+ "management_type": "management_type_value",
+ "name": "name_value",
+ "private_ip_address": "private_ip_address_value",
+ "redundant_interface": "redundant_interface_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "kind": "kind_value",
+ "name": "name_value",
+ "nats": [
+ {
+ "drain_nat_ips": ["drain_nat_ips_value_1", "drain_nat_ips_value_2"],
+ "enable_dynamic_port_allocation": True,
+ "enable_endpoint_independent_mapping": True,
+ "icmp_idle_timeout_sec": 2214,
+ "log_config": {"enable": True, "filter": "filter_value"},
+ "max_ports_per_vm": 1733,
+ "min_ports_per_vm": 1731,
+ "name": "name_value",
+ "nat_ip_allocate_option": "nat_ip_allocate_option_value",
+ "nat_ips": ["nat_ips_value_1", "nat_ips_value_2"],
+ "rules": [
+ {
+ "action": {
+ "source_nat_active_ips": [
+ "source_nat_active_ips_value_1",
+ "source_nat_active_ips_value_2",
+ ],
+ "source_nat_drain_ips": [
+ "source_nat_drain_ips_value_1",
+ "source_nat_drain_ips_value_2",
+ ],
+ },
+ "description": "description_value",
+ "match": "match_value",
+ "rule_number": 1184,
+ }
+ ],
+ "source_subnetwork_ip_ranges_to_nat": "source_subnetwork_ip_ranges_to_nat_value",
+ "subnetworks": [
+ {
+ "name": "name_value",
+ "secondary_ip_range_names": [
+ "secondary_ip_range_names_value_1",
+ "secondary_ip_range_names_value_2",
+ ],
+ "source_ip_ranges_to_nat": [
+ "source_ip_ranges_to_nat_value_1",
+ "source_ip_ranges_to_nat_value_2",
+ ],
+ }
+ ],
+ "tcp_established_idle_timeout_sec": 3371,
+ "tcp_time_wait_timeout_sec": 2665,
+ "tcp_transitory_idle_timeout_sec": 3330,
+ "udp_idle_timeout_sec": 2118,
+ }
+ ],
+ "network": "network_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertRouterRequest):
+ transport_class = transports.RoutersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.RoutersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "region",
+ "routerResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.RoutersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.RoutersRestInterceptor(),
+ )
+ client = RoutersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RoutersRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RoutersRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRouterRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRouterRequest
+):
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["router_resource"] = {
+ "bgp": {
+ "advertise_mode": "advertise_mode_value",
+ "advertised_groups": [
+ "advertised_groups_value_1",
+ "advertised_groups_value_2",
+ ],
+ "advertised_ip_ranges": [
+ {"description": "description_value", "range_": "range__value"}
+ ],
+ "asn": 322,
+ "keepalive_interval": 1914,
+ },
+ "bgp_peers": [
+ {
+ "advertise_mode": "advertise_mode_value",
+ "advertised_groups": [
+ "advertised_groups_value_1",
+ "advertised_groups_value_2",
+ ],
+ "advertised_ip_ranges": {},
+ "advertised_route_priority": 2714,
+ "bfd": {
+ "min_receive_interval": 2122,
+ "min_transmit_interval": 2265,
+ "multiplier": 1095,
+ "session_initialization_mode": "session_initialization_mode_value",
+ },
+ "enable": "enable_value",
+ "enable_ipv6": True,
+ "interface_name": "interface_name_value",
+ "ip_address": "ip_address_value",
+ "ipv6_nexthop_address": "ipv6_nexthop_address_value",
+ "management_type": "management_type_value",
+ "name": "name_value",
+ "peer_asn": 845,
+ "peer_ip_address": "peer_ip_address_value",
+ "peer_ipv6_nexthop_address": "peer_ipv6_nexthop_address_value",
+ "router_appliance_instance": "router_appliance_instance_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "encrypted_interconnect_router": True,
+ "id": 205,
+ "interfaces": [
+ {
+ "ip_range": "ip_range_value",
+ "linked_interconnect_attachment": "linked_interconnect_attachment_value",
+ "linked_vpn_tunnel": "linked_vpn_tunnel_value",
+ "management_type": "management_type_value",
+ "name": "name_value",
+ "private_ip_address": "private_ip_address_value",
+ "redundant_interface": "redundant_interface_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "kind": "kind_value",
+ "name": "name_value",
+ "nats": [
+ {
+ "drain_nat_ips": ["drain_nat_ips_value_1", "drain_nat_ips_value_2"],
+ "enable_dynamic_port_allocation": True,
+ "enable_endpoint_independent_mapping": True,
+ "icmp_idle_timeout_sec": 2214,
+ "log_config": {"enable": True, "filter": "filter_value"},
+ "max_ports_per_vm": 1733,
+ "min_ports_per_vm": 1731,
+ "name": "name_value",
+ "nat_ip_allocate_option": "nat_ip_allocate_option_value",
+ "nat_ips": ["nat_ips_value_1", "nat_ips_value_2"],
+ "rules": [
+ {
+ "action": {
+ "source_nat_active_ips": [
+ "source_nat_active_ips_value_1",
+ "source_nat_active_ips_value_2",
+ ],
+ "source_nat_drain_ips": [
+ "source_nat_drain_ips_value_1",
+ "source_nat_drain_ips_value_2",
+ ],
+ },
+ "description": "description_value",
+ "match": "match_value",
+ "rule_number": 1184,
+ }
+ ],
+ "source_subnetwork_ip_ranges_to_nat": "source_subnetwork_ip_ranges_to_nat_value",
+ "subnetworks": [
+ {
+ "name": "name_value",
+ "secondary_ip_range_names": [
+ "secondary_ip_range_names_value_1",
+ "secondary_ip_range_names_value_2",
+ ],
+ "source_ip_ranges_to_nat": [
+ "source_ip_ranges_to_nat_value_1",
+ "source_ip_ranges_to_nat_value_2",
+ ],
+ }
+ ],
+ "tcp_established_idle_timeout_sec": 3371,
+ "tcp_time_wait_timeout_sec": 2665,
+ "tcp_transitory_idle_timeout_sec": 3330,
+ "udp_idle_timeout_sec": 2118,
+ }
+ ],
+ "network": "network_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ router_resource=compute.Router(
+ bgp=compute.RouterBgp(advertise_mode="advertise_mode_value")
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/routers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertRouterRequest(),
+ project="project_value",
+ region="region_value",
+ router_resource=compute.Router(
+ bgp=compute.RouterBgp(advertise_mode="advertise_mode_value")
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertRouterRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["router_resource"] = {
+ "bgp": {
+ "advertise_mode": "advertise_mode_value",
+ "advertised_groups": [
+ "advertised_groups_value_1",
+ "advertised_groups_value_2",
+ ],
+ "advertised_ip_ranges": [
+ {"description": "description_value", "range_": "range__value"}
+ ],
+ "asn": 322,
+ "keepalive_interval": 1914,
+ },
+ "bgp_peers": [
+ {
+ "advertise_mode": "advertise_mode_value",
+ "advertised_groups": [
+ "advertised_groups_value_1",
+ "advertised_groups_value_2",
+ ],
+ "advertised_ip_ranges": {},
+ "advertised_route_priority": 2714,
+ "bfd": {
+ "min_receive_interval": 2122,
+ "min_transmit_interval": 2265,
+ "multiplier": 1095,
+ "session_initialization_mode": "session_initialization_mode_value",
+ },
+ "enable": "enable_value",
+ "enable_ipv6": True,
+ "interface_name": "interface_name_value",
+ "ip_address": "ip_address_value",
+ "ipv6_nexthop_address": "ipv6_nexthop_address_value",
+ "management_type": "management_type_value",
+ "name": "name_value",
+ "peer_asn": 845,
+ "peer_ip_address": "peer_ip_address_value",
+ "peer_ipv6_nexthop_address": "peer_ipv6_nexthop_address_value",
+ "router_appliance_instance": "router_appliance_instance_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "encrypted_interconnect_router": True,
+ "id": 205,
+ "interfaces": [
+ {
+ "ip_range": "ip_range_value",
+ "linked_interconnect_attachment": "linked_interconnect_attachment_value",
+ "linked_vpn_tunnel": "linked_vpn_tunnel_value",
+ "management_type": "management_type_value",
+ "name": "name_value",
+ "private_ip_address": "private_ip_address_value",
+ "redundant_interface": "redundant_interface_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "kind": "kind_value",
+ "name": "name_value",
+ "nats": [
+ {
+ "drain_nat_ips": ["drain_nat_ips_value_1", "drain_nat_ips_value_2"],
+ "enable_dynamic_port_allocation": True,
+ "enable_endpoint_independent_mapping": True,
+ "icmp_idle_timeout_sec": 2214,
+ "log_config": {"enable": True, "filter": "filter_value"},
+ "max_ports_per_vm": 1733,
+ "min_ports_per_vm": 1731,
+ "name": "name_value",
+ "nat_ip_allocate_option": "nat_ip_allocate_option_value",
+ "nat_ips": ["nat_ips_value_1", "nat_ips_value_2"],
+ "rules": [
+ {
+ "action": {
+ "source_nat_active_ips": [
+ "source_nat_active_ips_value_1",
+ "source_nat_active_ips_value_2",
+ ],
+ "source_nat_drain_ips": [
+ "source_nat_drain_ips_value_1",
+ "source_nat_drain_ips_value_2",
+ ],
+ },
+ "description": "description_value",
+ "match": "match_value",
+ "rule_number": 1184,
+ }
+ ],
+ "source_subnetwork_ip_ranges_to_nat": "source_subnetwork_ip_ranges_to_nat_value",
+ "subnetworks": [
+ {
+ "name": "name_value",
+ "secondary_ip_range_names": [
+ "secondary_ip_range_names_value_1",
+ "secondary_ip_range_names_value_2",
+ ],
+ "source_ip_ranges_to_nat": [
+ "source_ip_ranges_to_nat_value_1",
+ "source_ip_ranges_to_nat_value_2",
+ ],
+ }
+ ],
+ "tcp_established_idle_timeout_sec": 3371,
+ "tcp_time_wait_timeout_sec": 2665,
+ "tcp_transitory_idle_timeout_sec": 3330,
+ "udp_idle_timeout_sec": 2118,
+ }
+ ],
+ "network": "network_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(request_type=compute.InsertRouterRequest):
+ transport_class = transports.RoutersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.RoutersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "region",
+ "routerResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.RoutersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.RoutersRestInterceptor(),
+ )
+ client = RoutersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RoutersRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.RoutersRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertRouterRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRouterRequest
+):
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["router_resource"] = {
+ "bgp": {
+ "advertise_mode": "advertise_mode_value",
+ "advertised_groups": [
+ "advertised_groups_value_1",
+ "advertised_groups_value_2",
+ ],
+ "advertised_ip_ranges": [
+ {"description": "description_value", "range_": "range__value"}
+ ],
+ "asn": 322,
+ "keepalive_interval": 1914,
+ },
+ "bgp_peers": [
+ {
+ "advertise_mode": "advertise_mode_value",
+ "advertised_groups": [
+ "advertised_groups_value_1",
+ "advertised_groups_value_2",
+ ],
+ "advertised_ip_ranges": {},
+ "advertised_route_priority": 2714,
+ "bfd": {
+ "min_receive_interval": 2122,
+ "min_transmit_interval": 2265,
+ "multiplier": 1095,
+ "session_initialization_mode": "session_initialization_mode_value",
+ },
+ "enable": "enable_value",
+ "enable_ipv6": True,
+ "interface_name": "interface_name_value",
+ "ip_address": "ip_address_value",
+ "ipv6_nexthop_address": "ipv6_nexthop_address_value",
+ "management_type": "management_type_value",
+ "name": "name_value",
+ "peer_asn": 845,
+ "peer_ip_address": "peer_ip_address_value",
+ "peer_ipv6_nexthop_address": "peer_ipv6_nexthop_address_value",
+ "router_appliance_instance": "router_appliance_instance_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "encrypted_interconnect_router": True,
+ "id": 205,
+ "interfaces": [
+ {
+ "ip_range": "ip_range_value",
+ "linked_interconnect_attachment": "linked_interconnect_attachment_value",
+ "linked_vpn_tunnel": "linked_vpn_tunnel_value",
+ "management_type": "management_type_value",
+ "name": "name_value",
+ "private_ip_address": "private_ip_address_value",
+ "redundant_interface": "redundant_interface_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "kind": "kind_value",
+ "name": "name_value",
+ "nats": [
+ {
+ "drain_nat_ips": ["drain_nat_ips_value_1", "drain_nat_ips_value_2"],
+ "enable_dynamic_port_allocation": True,
+ "enable_endpoint_independent_mapping": True,
+ "icmp_idle_timeout_sec": 2214,
+ "log_config": {"enable": True, "filter": "filter_value"},
+ "max_ports_per_vm": 1733,
+ "min_ports_per_vm": 1731,
+ "name": "name_value",
+ "nat_ip_allocate_option": "nat_ip_allocate_option_value",
+ "nat_ips": ["nat_ips_value_1", "nat_ips_value_2"],
+ "rules": [
+ {
+ "action": {
+ "source_nat_active_ips": [
+ "source_nat_active_ips_value_1",
+ "source_nat_active_ips_value_2",
+ ],
+ "source_nat_drain_ips": [
+ "source_nat_drain_ips_value_1",
+ "source_nat_drain_ips_value_2",
+ ],
+ },
+ "description": "description_value",
+ "match": "match_value",
+ "rule_number": 1184,
+ }
+ ],
+ "source_subnetwork_ip_ranges_to_nat": "source_subnetwork_ip_ranges_to_nat_value",
+ "subnetworks": [
+ {
+ "name": "name_value",
+ "secondary_ip_range_names": [
+ "secondary_ip_range_names_value_1",
+ "secondary_ip_range_names_value_2",
+ ],
+ "source_ip_ranges_to_nat": [
+ "source_ip_ranges_to_nat_value_1",
+ "source_ip_ranges_to_nat_value_2",
+ ],
+ }
+ ],
+ "tcp_established_idle_timeout_sec": 3371,
+ "tcp_time_wait_timeout_sec": 2665,
+ "tcp_transitory_idle_timeout_sec": 3330,
+ "udp_idle_timeout_sec": 2118,
+ }
+ ],
+ "network": "network_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ router_resource=compute.Router(
+ bgp=compute.RouterBgp(advertise_mode="advertise_mode_value")
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/routers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertRouterRequest(),
+ project="project_value",
+ region="region_value",
+ router_resource=compute.Router(
+ bgp=compute.RouterBgp(advertise_mode="advertise_mode_value")
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListRoutersRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RouterList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.RouterList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListRoutersRequest):
+ transport_class = transports.RoutersRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RouterList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.RouterList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.RoutersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.RoutersRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.RoutersRestInterceptor(),
+ )
+ client = RoutersClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RoutersRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.RoutersRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.RouterList.to_json(compute.RouterList())
+
+ request = compute.ListRoutersRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.RouterList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListRoutersRequest
+):
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.RouterList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.RouterList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/routers"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListRoutersRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.RouterList(
+ items=[
+ compute.Router(),
+ compute.Router(),
+ compute.Router(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.RouterList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.RouterList(
+ items=[
+ compute.Router(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.RouterList(
+ items=[
+ compute.Router(),
+ compute.Router(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.RouterList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Router) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRouterRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = RoutersClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "router": "sample3"}
+ request_init["router_resource"] = {
+ "bgp": {
+ "advertise_mode": "advertise_mode_value",
+ "advertised_groups": [
+ "advertised_groups_value_1",
+ "advertised_groups_value_2",
+ ],
+ "advertised_ip_ranges": [
+ {"description": "description_value", "range_": "range__value"}
+ ],
+ "asn": 322,
+ "keepalive_interval": 1914,
+ },
+ "bgp_peers": [
+ {
+ "advertise_mode": "advertise_mode_value",
+ "advertised_groups": [
+ "advertised_groups_value_1",
+ "advertised_groups_value_2",
+ ],
+ "advertised_ip_ranges": {},
+ "advertised_route_priority": 2714,
+ "bfd": {
+ "min_receive_interval": 2122,
+ "min_transmit_interval": 2265,
+ "multiplier": 1095,
+ "session_initialization_mode": "session_initialization_mode_value",
+ },
+ "enable": "enable_value",
+ "enable_ipv6": True,
+ "interface_name": "interface_name_value",
+ "ip_address": "ip_address_value",
+ "ipv6_nexthop_address": "ipv6_nexthop_address_value",
+ "management_type": "management_type_value",
+ "name": "name_value",
+ "peer_asn": 845,
+ "peer_ip_address": "peer_ip_address_value",
+ "peer_ipv6_nexthop_address": "peer_ipv6_nexthop_address_value",
+ "router_appliance_instance": "router_appliance_instance_value",
+ }
],
"creation_timestamp": "creation_timestamp_value",
"description": "description_value",
@@ -2270,10 +3974,10 @@ def test_insert_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.patch(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2298,12 +4002,13 @@ def test_insert_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(request_type=compute.InsertRouterRequest):
+def test_patch_rest_required_fields(request_type=compute.PatchRouterRequest):
transport_class = transports.RoutersRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
+ request_init["router"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2315,17 +4020,18 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertRouterRequ
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
+ jsonified_request["router"] = "router_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -2335,6 +4041,8 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertRouterRequ
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
+ assert "router" in jsonified_request
+ assert jsonified_request["router"] == "router_value"
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2354,7 +4062,7 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertRouterRequ
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "patch",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -2366,25 +4074,26 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertRouterRequ
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.patch(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_patch_rest_unset_required_fields():
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"project",
"region",
+ "router",
"routerResource",
)
)
@@ -2392,7 +4101,7 @@ def test_insert_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.RoutersRestInterceptor(),
@@ -2403,9 +4112,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RoutersRestInterceptor, "post_insert"
+ transports.RoutersRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.RoutersRestInterceptor, "pre_insert"
+ transports.RoutersRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2422,7 +4131,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.InsertRouterRequest()
+ request = compute.PatchRouterRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2430,7 +4139,7 @@ def test_insert_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.insert_unary(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -2442,8 +4151,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertRouterRequest
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRouterRequest
):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2451,7 +4160,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {"project": "sample1", "region": "sample2", "router": "sample3"}
request_init["router_resource"] = {
"bgp": {
"advertise_mode": "advertise_mode_value",
@@ -2575,10 +4284,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.patch(request)
-def test_insert_unary_rest_flattened():
+def test_patch_rest_flattened():
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2590,12 +4299,17 @@ def test_insert_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "router": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ router="router_value",
router_resource=compute.Router(
bgp=compute.RouterBgp(advertise_mode="advertise_mode_value")
),
@@ -2610,20 +4324,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/routers"
+ "%s/compute/v1/projects/{project}/regions/{region}/routers/{router}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2632,17 +4346,18 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertRouterRequest(),
+ client.patch(
+ compute.PatchRouterRequest(),
project="project_value",
region="region_value",
+ router="router_value",
router_resource=compute.Router(
bgp=compute.RouterBgp(advertise_mode="advertise_mode_value")
),
)
-def test_insert_unary_rest_error():
+def test_patch_rest_error():
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2651,52 +4366,179 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListRoutersRequest,
+ compute.PatchRouterRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_patch_unary_rest(request_type):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {"project": "sample1", "region": "sample2", "router": "sample3"}
+ request_init["router_resource"] = {
+ "bgp": {
+ "advertise_mode": "advertise_mode_value",
+ "advertised_groups": [
+ "advertised_groups_value_1",
+ "advertised_groups_value_2",
+ ],
+ "advertised_ip_ranges": [
+ {"description": "description_value", "range_": "range__value"}
+ ],
+ "asn": 322,
+ "keepalive_interval": 1914,
+ },
+ "bgp_peers": [
+ {
+ "advertise_mode": "advertise_mode_value",
+ "advertised_groups": [
+ "advertised_groups_value_1",
+ "advertised_groups_value_2",
+ ],
+ "advertised_ip_ranges": {},
+ "advertised_route_priority": 2714,
+ "bfd": {
+ "min_receive_interval": 2122,
+ "min_transmit_interval": 2265,
+ "multiplier": 1095,
+ "session_initialization_mode": "session_initialization_mode_value",
+ },
+ "enable": "enable_value",
+ "enable_ipv6": True,
+ "interface_name": "interface_name_value",
+ "ip_address": "ip_address_value",
+ "ipv6_nexthop_address": "ipv6_nexthop_address_value",
+ "management_type": "management_type_value",
+ "name": "name_value",
+ "peer_asn": 845,
+ "peer_ip_address": "peer_ip_address_value",
+ "peer_ipv6_nexthop_address": "peer_ipv6_nexthop_address_value",
+ "router_appliance_instance": "router_appliance_instance_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "encrypted_interconnect_router": True,
+ "id": 205,
+ "interfaces": [
+ {
+ "ip_range": "ip_range_value",
+ "linked_interconnect_attachment": "linked_interconnect_attachment_value",
+ "linked_vpn_tunnel": "linked_vpn_tunnel_value",
+ "management_type": "management_type_value",
+ "name": "name_value",
+ "private_ip_address": "private_ip_address_value",
+ "redundant_interface": "redundant_interface_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "kind": "kind_value",
+ "name": "name_value",
+ "nats": [
+ {
+ "drain_nat_ips": ["drain_nat_ips_value_1", "drain_nat_ips_value_2"],
+ "enable_dynamic_port_allocation": True,
+ "enable_endpoint_independent_mapping": True,
+ "icmp_idle_timeout_sec": 2214,
+ "log_config": {"enable": True, "filter": "filter_value"},
+ "max_ports_per_vm": 1733,
+ "min_ports_per_vm": 1731,
+ "name": "name_value",
+ "nat_ip_allocate_option": "nat_ip_allocate_option_value",
+ "nat_ips": ["nat_ips_value_1", "nat_ips_value_2"],
+ "rules": [
+ {
+ "action": {
+ "source_nat_active_ips": [
+ "source_nat_active_ips_value_1",
+ "source_nat_active_ips_value_2",
+ ],
+ "source_nat_drain_ips": [
+ "source_nat_drain_ips_value_1",
+ "source_nat_drain_ips_value_2",
+ ],
+ },
+ "description": "description_value",
+ "match": "match_value",
+ "rule_number": 1184,
+ }
+ ],
+ "source_subnetwork_ip_ranges_to_nat": "source_subnetwork_ip_ranges_to_nat_value",
+ "subnetworks": [
+ {
+ "name": "name_value",
+ "secondary_ip_range_names": [
+ "secondary_ip_range_names_value_1",
+ "secondary_ip_range_names_value_2",
+ ],
+ "source_ip_ranges_to_nat": [
+ "source_ip_ranges_to_nat_value_1",
+ "source_ip_ranges_to_nat_value_2",
+ ],
+ }
+ ],
+ "tcp_established_idle_timeout_sec": 3371,
+ "tcp_time_wait_timeout_sec": 2665,
+ "tcp_transitory_idle_timeout_sec": 3330,
+ "udp_idle_timeout_sec": 2118,
+ }
+ ],
+ "network": "network_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RouterList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RouterList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_list_rest_required_fields(request_type=compute.ListRoutersRequest):
+def test_patch_unary_rest_required_fields(request_type=compute.PatchRouterRequest):
transport_class = transports.RoutersRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
+ request_init["router"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2708,27 +4550,20 @@ def test_list_rest_required_fields(request_type=compute.ListRoutersRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
+ jsonified_request["router"] = "router_value"
unset_fields = transport_class(
- credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2736,6 +4571,8 @@ def test_list_rest_required_fields(request_type=compute.ListRoutersRequest):
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
+ assert "router" in jsonified_request
+ assert jsonified_request["router"] == "router_value"
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2744,7 +4581,7 @@ def test_list_rest_required_fields(request_type=compute.ListRoutersRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.RouterList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2755,51 +4592,46 @@ def test_list_rest_required_fields(request_type=compute.ListRoutersRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RouterList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_unary_rest_unset_required_fields():
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
"project",
"region",
+ "router",
+ "routerResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_unary_rest_interceptors(null_interceptor):
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.RoutersRestInterceptor(),
@@ -2810,9 +4642,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RoutersRestInterceptor, "post_list"
+ transports.RoutersRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.RoutersRestInterceptor, "pre_list"
+ transports.RoutersRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2827,17 +4659,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.RouterList.to_json(compute.RouterList())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListRoutersRequest()
+ request = compute.PatchRouterRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.RouterList
+ post.return_value = compute.Operation
- client.list(
+ client.patch_unary(
request,
metadata=[
("key", "val"),
@@ -2849,8 +4681,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListRoutersRequest
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRouterRequest
):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2858,7 +4690,119 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {"project": "sample1", "region": "sample2", "router": "sample3"}
+ request_init["router_resource"] = {
+ "bgp": {
+ "advertise_mode": "advertise_mode_value",
+ "advertised_groups": [
+ "advertised_groups_value_1",
+ "advertised_groups_value_2",
+ ],
+ "advertised_ip_ranges": [
+ {"description": "description_value", "range_": "range__value"}
+ ],
+ "asn": 322,
+ "keepalive_interval": 1914,
+ },
+ "bgp_peers": [
+ {
+ "advertise_mode": "advertise_mode_value",
+ "advertised_groups": [
+ "advertised_groups_value_1",
+ "advertised_groups_value_2",
+ ],
+ "advertised_ip_ranges": {},
+ "advertised_route_priority": 2714,
+ "bfd": {
+ "min_receive_interval": 2122,
+ "min_transmit_interval": 2265,
+ "multiplier": 1095,
+ "session_initialization_mode": "session_initialization_mode_value",
+ },
+ "enable": "enable_value",
+ "enable_ipv6": True,
+ "interface_name": "interface_name_value",
+ "ip_address": "ip_address_value",
+ "ipv6_nexthop_address": "ipv6_nexthop_address_value",
+ "management_type": "management_type_value",
+ "name": "name_value",
+ "peer_asn": 845,
+ "peer_ip_address": "peer_ip_address_value",
+ "peer_ipv6_nexthop_address": "peer_ipv6_nexthop_address_value",
+ "router_appliance_instance": "router_appliance_instance_value",
+ }
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "encrypted_interconnect_router": True,
+ "id": 205,
+ "interfaces": [
+ {
+ "ip_range": "ip_range_value",
+ "linked_interconnect_attachment": "linked_interconnect_attachment_value",
+ "linked_vpn_tunnel": "linked_vpn_tunnel_value",
+ "management_type": "management_type_value",
+ "name": "name_value",
+ "private_ip_address": "private_ip_address_value",
+ "redundant_interface": "redundant_interface_value",
+ "subnetwork": "subnetwork_value",
+ }
+ ],
+ "kind": "kind_value",
+ "name": "name_value",
+ "nats": [
+ {
+ "drain_nat_ips": ["drain_nat_ips_value_1", "drain_nat_ips_value_2"],
+ "enable_dynamic_port_allocation": True,
+ "enable_endpoint_independent_mapping": True,
+ "icmp_idle_timeout_sec": 2214,
+ "log_config": {"enable": True, "filter": "filter_value"},
+ "max_ports_per_vm": 1733,
+ "min_ports_per_vm": 1731,
+ "name": "name_value",
+ "nat_ip_allocate_option": "nat_ip_allocate_option_value",
+ "nat_ips": ["nat_ips_value_1", "nat_ips_value_2"],
+ "rules": [
+ {
+ "action": {
+ "source_nat_active_ips": [
+ "source_nat_active_ips_value_1",
+ "source_nat_active_ips_value_2",
+ ],
+ "source_nat_drain_ips": [
+ "source_nat_drain_ips_value_1",
+ "source_nat_drain_ips_value_2",
+ ],
+ },
+ "description": "description_value",
+ "match": "match_value",
+ "rule_number": 1184,
+ }
+ ],
+ "source_subnetwork_ip_ranges_to_nat": "source_subnetwork_ip_ranges_to_nat_value",
+ "subnetworks": [
+ {
+ "name": "name_value",
+ "secondary_ip_range_names": [
+ "secondary_ip_range_names_value_1",
+ "secondary_ip_range_names_value_2",
+ ],
+ "source_ip_ranges_to_nat": [
+ "source_ip_ranges_to_nat_value_1",
+ "source_ip_ranges_to_nat_value_2",
+ ],
+ }
+ ],
+ "tcp_established_idle_timeout_sec": 3371,
+ "tcp_time_wait_timeout_sec": 2665,
+ "tcp_transitory_idle_timeout_sec": 3330,
+ "udp_idle_timeout_sec": 2118,
+ }
+ ],
+ "network": "network_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2870,10 +4814,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch_unary(request)
-def test_list_rest_flattened():
+def test_patch_unary_rest_flattened():
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2882,40 +4826,48 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RouterList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "router": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ router="router_value",
+ router_resource=compute.Router(
+ bgp=compute.RouterBgp(advertise_mode="advertise_mode_value")
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RouterList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/routers"
+ "%s/compute/v1/projects/{project}/regions/{region}/routers/{router}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2924,82 +4876,31 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListRoutersRequest(),
+ client.patch_unary(
+ compute.PatchRouterRequest(),
project="project_value",
region="region_value",
+ router="router_value",
+ router_resource=compute.Router(
+ bgp=compute.RouterBgp(advertise_mode="advertise_mode_value")
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_unary_rest_error():
client = RoutersClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.RouterList(
- items=[
- compute.Router(),
- compute.Router(),
- compute.Router(),
- ],
- next_page_token="abc",
- ),
- compute.RouterList(
- items=[],
- next_page_token="def",
- ),
- compute.RouterList(
- items=[
- compute.Router(),
- ],
- next_page_token="ghi",
- ),
- compute.RouterList(
- items=[
- compute.Router(),
- compute.Router(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.RouterList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Router) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchRouterRequest,
+ compute.PreviewRouterRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_preview_rest(request_type):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3124,66 +5025,21 @@ def test_patch_unary_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
- kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
- self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
- )
+ return_value = compute.RoutersPreviewResponse()
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.RoutersPreviewResponse.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.preview(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert isinstance(response, compute.RoutersPreviewResponse)
-def test_patch_unary_rest_required_fields(request_type=compute.PatchRouterRequest):
+def test_preview_rest_required_fields(request_type=compute.PreviewRouterRequest):
transport_class = transports.RoutersRestTransport
request_init = {}
@@ -3201,7 +5057,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchRouterReques
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).preview._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3212,9 +5068,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchRouterReques
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).preview._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -3232,7 +5086,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchRouterReques
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.RoutersPreviewResponse()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3243,7 +5097,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchRouterReques
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -3251,25 +5105,25 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchRouterReques
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.RoutersPreviewResponse.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.preview(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_preview_rest_unset_required_fields():
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.preview._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"project",
@@ -3282,7 +5136,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_preview_rest_interceptors(null_interceptor):
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.RoutersRestInterceptor(),
@@ -3293,9 +5147,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RoutersRestInterceptor, "post_patch"
+ transports.RoutersRestInterceptor, "post_preview"
) as post, mock.patch.object(
- transports.RoutersRestInterceptor, "pre_patch"
+ transports.RoutersRestInterceptor, "pre_preview"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3310,17 +5164,19 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.RoutersPreviewResponse.to_json(
+ compute.RoutersPreviewResponse()
+ )
- request = compute.PatchRouterRequest()
+ request = compute.PreviewRouterRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.RoutersPreviewResponse
- client.patch_unary(
+ client.preview(
request,
metadata=[
("key", "val"),
@@ -3332,8 +5188,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchRouterRequest
+def test_preview_rest_bad_request(
+ transport: str = "rest", request_type=compute.PreviewRouterRequest
):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3465,10 +5321,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.preview(request)
-def test_patch_unary_rest_flattened():
+def test_preview_rest_flattened():
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3477,7 +5333,7 @@ def test_patch_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.RoutersPreviewResponse()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -3500,25 +5356,25 @@ def test_patch_unary_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.RoutersPreviewResponse.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.preview(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/routers/{router}"
+ "%s/compute/v1/projects/{project}/regions/{region}/routers/{router}/preview"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_preview_rest_flattened_error(transport: str = "rest"):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3527,8 +5383,8 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchRouterRequest(),
+ client.preview(
+ compute.PreviewRouterRequest(),
project="project_value",
region="region_value",
router="router_value",
@@ -3538,7 +5394,7 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_patch_unary_rest_error():
+def test_preview_rest_error():
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3547,11 +5403,11 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.PreviewRouterRequest,
+ compute.UpdateRouterRequest,
dict,
],
)
-def test_preview_rest(request_type):
+def test_update_rest(request_type):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3676,21 +5532,66 @@ def test_preview_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RoutersPreviewResponse()
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RoutersPreviewResponse.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.preview(request)
+ response = client.update(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.RoutersPreviewResponse)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_preview_rest_required_fields(request_type=compute.PreviewRouterRequest):
+def test_update_rest_required_fields(request_type=compute.UpdateRouterRequest):
transport_class = transports.RoutersRestTransport
request_init = {}
@@ -3708,7 +5609,7 @@ def test_preview_rest_required_fields(request_type=compute.PreviewRouterRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).preview._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3719,7 +5620,9 @@ def test_preview_rest_required_fields(request_type=compute.PreviewRouterRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).preview._get_unset_required_fields(jsonified_request)
+ ).update._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -3737,7 +5640,7 @@ def test_preview_rest_required_fields(request_type=compute.PreviewRouterRequest)
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.RoutersPreviewResponse()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3748,7 +5651,7 @@ def test_preview_rest_required_fields(request_type=compute.PreviewRouterRequest)
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "put",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -3756,25 +5659,25 @@ def test_preview_rest_required_fields(request_type=compute.PreviewRouterRequest)
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RoutersPreviewResponse.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.preview(request)
+ response = client.update(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_preview_rest_unset_required_fields():
+def test_update_rest_unset_required_fields():
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.preview._get_unset_required_fields({})
+ unset_fields = transport.update._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -3787,7 +5690,7 @@ def test_preview_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_preview_rest_interceptors(null_interceptor):
+def test_update_rest_interceptors(null_interceptor):
transport = transports.RoutersRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.RoutersRestInterceptor(),
@@ -3798,9 +5701,9 @@ def test_preview_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RoutersRestInterceptor, "post_preview"
+ transports.RoutersRestInterceptor, "post_update"
) as post, mock.patch.object(
- transports.RoutersRestInterceptor, "pre_preview"
+ transports.RoutersRestInterceptor, "pre_update"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3815,19 +5718,17 @@ def test_preview_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.RoutersPreviewResponse.to_json(
- compute.RoutersPreviewResponse()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PreviewRouterRequest()
+ request = compute.UpdateRouterRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.RoutersPreviewResponse
+ post.return_value = compute.Operation
- client.preview(
+ client.update(
request,
metadata=[
("key", "val"),
@@ -3839,8 +5740,8 @@ def test_preview_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_preview_rest_bad_request(
- transport: str = "rest", request_type=compute.PreviewRouterRequest
+def test_update_rest_bad_request(
+ transport: str = "rest", request_type=compute.UpdateRouterRequest
):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3972,10 +5873,10 @@ def test_preview_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.preview(request)
+ client.update(request)
-def test_preview_rest_flattened():
+def test_update_rest_flattened():
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3984,7 +5885,7 @@ def test_preview_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.RoutersPreviewResponse()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -4007,25 +5908,25 @@ def test_preview_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.RoutersPreviewResponse.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.preview(**mock_args)
+ client.update(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/routers/{router}/preview"
+ "%s/compute/v1/projects/{project}/regions/{region}/routers/{router}"
% client.transport._host,
args[1],
)
-def test_preview_rest_flattened_error(transport: str = "rest"):
+def test_update_rest_flattened_error(transport: str = "rest"):
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4034,8 +5935,8 @@ def test_preview_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.preview(
- compute.PreviewRouterRequest(),
+ client.update(
+ compute.UpdateRouterRequest(),
project="project_value",
region="region_value",
router="router_value",
@@ -4045,7 +5946,7 @@ def test_preview_rest_flattened_error(transport: str = "rest"):
)
-def test_preview_rest_error():
+def test_update_rest_error():
client = RoutersClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4218,28 +6119,6 @@ def test_update_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_update_unary_rest_required_fields(request_type=compute.UpdateRouterRequest):
@@ -4678,6 +6557,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RoutersClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_routers_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -4718,6 +6610,14 @@ def test_routers_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_routers_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_routes.py b/tests/unit/gapic/compute_v1/test_routes.py
index 09dae6700..824a05f14 100644
--- a/tests/unit/gapic/compute_v1/test_routes.py
+++ b/tests/unit/gapic/compute_v1/test_routes.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -509,7 +511,7 @@ def test_routes_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = RoutesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -553,10 +555,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -581,7 +583,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(request_type=compute.DeleteRouteRequest):
+def test_delete_rest_required_fields(request_type=compute.DeleteRouteRequest):
transport_class = transports.RoutesRestTransport
request_init = {}
@@ -648,14 +650,14 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteRouteReque
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.RoutesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -673,7 +675,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.RoutesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.RoutesRestInterceptor(),
@@ -711,7 +713,595 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteRouteRequest
+):
+ client = RoutesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "route": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete(request)
+
+
+def test_delete_rest_flattened():
+ client = RoutesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "route": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ route="route_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/routes/{route}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_rest_flattened_error(transport: str = "rest"):
+ client = RoutesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete(
+ compute.DeleteRouteRequest(),
+ project="project_value",
+ route="route_value",
+ )
+
+
+def test_delete_rest_error():
+ client = RoutesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DeleteRouteRequest,
+ dict,
+ ],
+)
+def test_delete_unary_rest(request_type):
+ client = RoutesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "route": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.delete_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_delete_unary_rest_required_fields(request_type=compute.DeleteRouteRequest):
+ transport_class = transports.RoutesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["route"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["route"] = "route_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "route" in jsonified_request
+ assert jsonified_request["route"] == "route_value"
+
+ client = RoutesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "delete",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_unary_rest_unset_required_fields():
+ transport = transports.RoutesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "route",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_unary_rest_interceptors(null_interceptor):
+ transport = transports.RoutesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.RoutesRestInterceptor(),
+ )
+ client = RoutesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RoutesRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.RoutesRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteRouteRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteRouteRequest
+):
+ client = RoutesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "route": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete_unary(request)
+
+
+def test_delete_unary_rest_flattened():
+ client = RoutesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "route": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ route="route_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/routes/{route}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+ client = RoutesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete_unary(
+ compute.DeleteRouteRequest(),
+ project="project_value",
+ route="route_value",
+ )
+
+
+def test_delete_unary_rest_error():
+ client = RoutesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetRouteRequest,
+ dict,
+ ],
+)
+def test_get_rest(request_type):
+ client = RoutesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "route": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Route(
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ dest_range="dest_range_value",
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ network="network_value",
+ next_hop_gateway="next_hop_gateway_value",
+ next_hop_ilb="next_hop_ilb_value",
+ next_hop_instance="next_hop_instance_value",
+ next_hop_ip="next_hop_ip_value",
+ next_hop_network="next_hop_network_value",
+ next_hop_peering="next_hop_peering_value",
+ next_hop_vpn_tunnel="next_hop_vpn_tunnel_value",
+ priority=898,
+ route_status="route_status_value",
+ route_type="route_type_value",
+ self_link="self_link_value",
+ tags=["tags_value"],
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Route.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Route)
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.dest_range == "dest_range_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.network == "network_value"
+ assert response.next_hop_gateway == "next_hop_gateway_value"
+ assert response.next_hop_ilb == "next_hop_ilb_value"
+ assert response.next_hop_instance == "next_hop_instance_value"
+ assert response.next_hop_ip == "next_hop_ip_value"
+ assert response.next_hop_network == "next_hop_network_value"
+ assert response.next_hop_peering == "next_hop_peering_value"
+ assert response.next_hop_vpn_tunnel == "next_hop_vpn_tunnel_value"
+ assert response.priority == 898
+ assert response.route_status == "route_status_value"
+ assert response.route_type == "route_type_value"
+ assert response.self_link == "self_link_value"
+ assert response.tags == ["tags_value"]
+
+
+def test_get_rest_required_fields(request_type=compute.GetRouteRequest):
+ transport_class = transports.RoutesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["route"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["route"] = "route_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "route" in jsonified_request
+ assert jsonified_request["route"] == "route_value"
+
+ client = RoutesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Route()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Route.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.get(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_get_rest_unset_required_fields():
+ transport = transports.RoutesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.get._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "project",
+ "route",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_get_rest_interceptors(null_interceptor):
+ transport = transports.RoutesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.RoutesRestInterceptor(),
+ )
+ client = RoutesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.RoutesRestInterceptor, "post_get"
+ ) as post, mock.patch.object(
+ transports.RoutesRestInterceptor, "pre_get"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Route.to_json(compute.Route())
+
+ request = compute.GetRouteRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Route
+
+ client.get(
request,
metadata=[
("key", "val"),
@@ -723,8 +1313,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteRouteRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRouteRequest
):
client = RoutesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -744,10 +1334,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.get(request)
-def test_delete_unary_rest_flattened():
+def test_get_rest_flattened():
client = RoutesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -756,7 +1346,7 @@ def test_delete_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Route()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "route": "sample2"}
@@ -771,12 +1361,12 @@ def test_delete_unary_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Route.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -789,7 +1379,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = RoutesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -798,14 +1388,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteRouteRequest(),
+ client.get(
+ compute.GetRouteRequest(),
project="project_value",
route="route_value",
)
-def test_delete_unary_rest_error():
+def test_get_rest_error():
client = RoutesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -814,82 +1404,118 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRouteRequest,
+ compute.InsertRouteRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_insert_rest(request_type):
client = RoutesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "route": "sample2"}
+ request_init = {"project": "sample1"}
+ request_init["route_resource"] = {
+ "as_paths": [
+ {"as_lists": [867, 868], "path_segment_type": "path_segment_type_value"}
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "dest_range": "dest_range_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "next_hop_gateway": "next_hop_gateway_value",
+ "next_hop_ilb": "next_hop_ilb_value",
+ "next_hop_instance": "next_hop_instance_value",
+ "next_hop_ip": "next_hop_ip_value",
+ "next_hop_network": "next_hop_network_value",
+ "next_hop_peering": "next_hop_peering_value",
+ "next_hop_vpn_tunnel": "next_hop_vpn_tunnel_value",
+ "priority": 898,
+ "route_status": "route_status_value",
+ "route_type": "route_type_value",
+ "self_link": "self_link_value",
+ "tags": ["tags_value_1", "tags_value_2"],
+ "warnings": [
+ {
+ "code": "code_value",
+ "data": [{"key": "key_value", "value": "value_value"}],
+ "message": "message_value",
+ }
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Route(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- dest_range="dest_range_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- network="network_value",
- next_hop_gateway="next_hop_gateway_value",
- next_hop_ilb="next_hop_ilb_value",
- next_hop_instance="next_hop_instance_value",
- next_hop_ip="next_hop_ip_value",
- next_hop_network="next_hop_network_value",
- next_hop_peering="next_hop_peering_value",
- next_hop_vpn_tunnel="next_hop_vpn_tunnel_value",
- priority=898,
- route_status="route_status_value",
- route_type="route_type_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- tags=["tags_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Route.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Route)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.dest_range == "dest_range_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.network == "network_value"
- assert response.next_hop_gateway == "next_hop_gateway_value"
- assert response.next_hop_ilb == "next_hop_ilb_value"
- assert response.next_hop_instance == "next_hop_instance_value"
- assert response.next_hop_ip == "next_hop_ip_value"
- assert response.next_hop_network == "next_hop_network_value"
- assert response.next_hop_peering == "next_hop_peering_value"
- assert response.next_hop_vpn_tunnel == "next_hop_vpn_tunnel_value"
- assert response.priority == 898
- assert response.route_status == "route_status_value"
- assert response.route_type == "route_type_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.tags == ["tags_value"]
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_rest_required_fields(request_type=compute.GetRouteRequest):
+def test_insert_rest_required_fields(request_type=compute.InsertRouteRequest):
transport_class = transports.RoutesRestTransport
request_init = {}
request_init["project"] = ""
- request_init["route"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -901,24 +1527,23 @@ def test_get_rest_required_fields(request_type=compute.GetRouteRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
- jsonified_request["route"] = "route_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "route" in jsonified_request
- assert jsonified_request["route"] == "route_value"
client = RoutesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -927,7 +1552,7 @@ def test_get_rest_required_fields(request_type=compute.GetRouteRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Route()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -938,43 +1563,44 @@ def test_get_rest_required_fields(request_type=compute.GetRouteRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Route.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.RoutesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
- "route",
+ "routeResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.RoutesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.RoutesRestInterceptor(),
@@ -985,9 +1611,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.RoutesRestInterceptor, "post_get"
+ transports.RoutesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.RoutesRestInterceptor, "pre_get"
+ transports.RoutesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1002,17 +1628,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Route.to_json(compute.Route())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRouteRequest()
+ request = compute.InsertRouteRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Route
+ post.return_value = compute.Operation
- client.get(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1024,8 +1650,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRouteRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertRouteRequest
):
client = RoutesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1033,7 +1659,38 @@ def test_get_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "route": "sample2"}
+ request_init = {"project": "sample1"}
+ request_init["route_resource"] = {
+ "as_paths": [
+ {"as_lists": [867, 868], "path_segment_type": "path_segment_type_value"}
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "dest_range": "dest_range_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "network": "network_value",
+ "next_hop_gateway": "next_hop_gateway_value",
+ "next_hop_ilb": "next_hop_ilb_value",
+ "next_hop_instance": "next_hop_instance_value",
+ "next_hop_ip": "next_hop_ip_value",
+ "next_hop_network": "next_hop_network_value",
+ "next_hop_peering": "next_hop_peering_value",
+ "next_hop_vpn_tunnel": "next_hop_vpn_tunnel_value",
+ "priority": 898,
+ "route_status": "route_status_value",
+ "route_type": "route_type_value",
+ "self_link": "self_link_value",
+ "tags": ["tags_value_1", "tags_value_2"],
+ "warnings": [
+ {
+ "code": "code_value",
+ "data": [{"key": "key_value", "value": "value_value"}],
+ "message": "message_value",
+ }
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1045,10 +1702,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.insert(request)
-def test_get_rest_flattened():
+def test_insert_rest_flattened():
client = RoutesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1057,40 +1714,41 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Route()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "route": "sample2"}
+ sample_request = {"project": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- route="route_value",
+ route_resource=compute.Route(
+ as_paths=[compute.RouteAsPath(as_lists=[866])]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Route.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/routes/{route}"
- % client.transport._host,
+ "%s/compute/v1/projects/{project}/global/routes" % client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = RoutesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1099,14 +1757,16 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetRouteRequest(),
+ client.insert(
+ compute.InsertRouteRequest(),
project="project_value",
- route="route_value",
+ route_resource=compute.Route(
+ as_paths=[compute.RouteAsPath(as_lists=[866])]
+ ),
)
-def test_get_rest_error():
+def test_insert_rest_error():
client = RoutesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1198,28 +1858,6 @@ def test_insert_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_insert_unary_rest_required_fields(request_type=compute.InsertRouteRequest):
@@ -1890,6 +2528,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = RoutesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_routes_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -1924,6 +2575,14 @@ def test_routes_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_routes_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_security_policies.py b/tests/unit/gapic/compute_v1/test_security_policies.py
index bc6eca17c..eab61b00b 100644
--- a/tests/unit/gapic/compute_v1/test_security_policies.py
+++ b/tests/unit/gapic/compute_v1/test_security_policies.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -545,7 +547,7 @@ def test_security_policies_client_client_options_credentials_file(
dict,
],
)
-def test_add_rule_unary_rest(request_type):
+def test_add_rule_rest(request_type):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -630,10 +632,10 @@ def test_add_rule_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_rule_unary(request)
+ response = client.add_rule(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -658,7 +660,7 @@ def test_add_rule_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_add_rule_unary_rest_required_fields(
+def test_add_rule_rest_required_fields(
request_type=compute.AddRuleSecurityPolicyRequest,
):
transport_class = transports.SecurityPoliciesRestTransport
@@ -726,14 +728,14 @@ def test_add_rule_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.add_rule_unary(request)
+ response = client.add_rule(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_add_rule_unary_rest_unset_required_fields():
+def test_add_rule_rest_unset_required_fields():
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -752,7 +754,7 @@ def test_add_rule_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_add_rule_unary_rest_interceptors(null_interceptor):
+def test_add_rule_rest_interceptors(null_interceptor):
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -792,7 +794,7 @@ def test_add_rule_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.add_rule_unary(
+ client.add_rule(
request,
metadata=[
("key", "val"),
@@ -804,7 +806,7 @@ def test_add_rule_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_add_rule_unary_rest_bad_request(
+def test_add_rule_rest_bad_request(
transport: str = "rest", request_type=compute.AddRuleSecurityPolicyRequest
):
client = SecurityPoliciesClient(
@@ -866,10 +868,10 @@ def test_add_rule_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.add_rule_unary(request)
+ client.add_rule(request)
-def test_add_rule_unary_rest_flattened():
+def test_add_rule_rest_flattened():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -901,7 +903,7 @@ def test_add_rule_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.add_rule_unary(**mock_args)
+ client.add_rule(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -914,7 +916,7 @@ def test_add_rule_unary_rest_flattened():
)
-def test_add_rule_unary_rest_flattened_error(transport: str = "rest"):
+def test_add_rule_rest_flattened_error(transport: str = "rest"):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -923,7 +925,7 @@ def test_add_rule_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.add_rule_unary(
+ client.add_rule(
compute.AddRuleSecurityPolicyRequest(),
project="project_value",
security_policy="security_policy_value",
@@ -933,7 +935,7 @@ def test_add_rule_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_add_rule_unary_rest_error():
+def test_add_rule_rest_error():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -942,57 +944,109 @@ def test_add_rule_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.AggregatedListSecurityPoliciesRequest,
+ compute.AddRuleSecurityPolicyRequest,
dict,
],
)
-def test_aggregated_list_rest(request_type):
+def test_add_rule_unary_rest(request_type):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "security_policy": "sample2"}
+ request_init["security_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPoliciesAggregatedList(
- etag="etag_value",
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- unreachables=["unreachables_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPoliciesAggregatedList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.aggregated_list(request)
+ response = client.add_rule_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.AggregatedListPager)
- assert response.etag == "etag_value"
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
- assert response.unreachables == ["unreachables_value"]
+ assert isinstance(response, compute.Operation)
-def test_aggregated_list_rest_required_fields(
- request_type=compute.AggregatedListSecurityPoliciesRequest,
+def test_add_rule_unary_rest_required_fields(
+ request_type=compute.AddRuleSecurityPolicyRequest,
):
transport_class = transports.SecurityPoliciesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["security_policy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1004,32 +1058,24 @@ def test_aggregated_list_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).aggregated_list._get_unset_required_fields(jsonified_request)
+ ).add_rule._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["securityPolicy"] = "security_policy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).aggregated_list._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "include_all_scopes",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ ).add_rule._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "securityPolicy" in jsonified_request
+ assert jsonified_request["securityPolicy"] == "security_policy_value"
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1038,7 +1084,7 @@ def test_aggregated_list_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPoliciesAggregatedList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1049,49 +1095,45 @@ def test_aggregated_list_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPoliciesAggregatedList.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.aggregated_list(request)
+ response = client.add_rule_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_aggregated_list_rest_unset_required_fields():
+def test_add_rule_unary_rest_unset_required_fields():
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.aggregated_list._get_unset_required_fields({})
+ unset_fields = transport.add_rule._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(())
+ & set(
(
- "filter",
- "includeAllScopes",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "project",
+ "securityPolicy",
+ "securityPolicyRuleResource",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_aggregated_list_rest_interceptors(null_interceptor):
+def test_add_rule_unary_rest_interceptors(null_interceptor):
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1104,9 +1146,9 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "post_aggregated_list"
+ transports.SecurityPoliciesRestInterceptor, "post_add_rule"
) as post, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "pre_aggregated_list"
+ transports.SecurityPoliciesRestInterceptor, "pre_add_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1121,19 +1163,17 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.SecurityPoliciesAggregatedList.to_json(
- compute.SecurityPoliciesAggregatedList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.AggregatedListSecurityPoliciesRequest()
+ request = compute.AddRuleSecurityPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.SecurityPoliciesAggregatedList
+ post.return_value = compute.Operation
- client.aggregated_list(
+ client.add_rule_unary(
request,
metadata=[
("key", "val"),
@@ -1145,8 +1185,8 @@ def test_aggregated_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_aggregated_list_rest_bad_request(
- transport: str = "rest", request_type=compute.AggregatedListSecurityPoliciesRequest
+def test_add_rule_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.AddRuleSecurityPolicyRequest
):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1154,7 +1194,48 @@ def test_aggregated_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "security_policy": "sample2"}
+ request_init["security_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1166,10 +1247,10 @@ def test_aggregated_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.aggregated_list(request)
+ client.add_rule_unary(request)
-def test_aggregated_list_rest_flattened():
+def test_add_rule_unary_rest_flattened():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1178,39 +1259,43 @@ def test_aggregated_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPoliciesAggregatedList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "security_policy": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ security_policy="security_policy_value",
+ security_policy_rule_resource=compute.SecurityPolicyRule(
+ action="action_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPoliciesAggregatedList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.aggregated_list(**mock_args)
+ client.add_rule_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/aggregated/securityPolicies"
+ "%s/compute/v1/projects/{project}/global/securityPolicies/{security_policy}/addRule"
% client.transport._host,
args[1],
)
-def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
+def test_add_rule_unary_rest_flattened_error(transport: str = "rest"):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1219,174 +1304,76 @@ def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.aggregated_list(
- compute.AggregatedListSecurityPoliciesRequest(),
+ client.add_rule_unary(
+ compute.AddRuleSecurityPolicyRequest(),
project="project_value",
+ security_policy="security_policy_value",
+ security_policy_rule_resource=compute.SecurityPolicyRule(
+ action="action_value"
+ ),
)
-def test_aggregated_list_rest_pager(transport: str = "rest"):
+def test_add_rule_unary_rest_error():
client = SecurityPoliciesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.SecurityPoliciesAggregatedList(
- items={
- "a": compute.SecurityPoliciesScopedList(),
- "b": compute.SecurityPoliciesScopedList(),
- "c": compute.SecurityPoliciesScopedList(),
- },
- next_page_token="abc",
- ),
- compute.SecurityPoliciesAggregatedList(
- items={},
- next_page_token="def",
- ),
- compute.SecurityPoliciesAggregatedList(
- items={
- "g": compute.SecurityPoliciesScopedList(),
- },
- next_page_token="ghi",
- ),
- compute.SecurityPoliciesAggregatedList(
- items={
- "h": compute.SecurityPoliciesScopedList(),
- "i": compute.SecurityPoliciesScopedList(),
- },
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(
- compute.SecurityPoliciesAggregatedList.to_json(x) for x in response
- )
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.aggregated_list(request=sample_request)
-
- assert isinstance(pager.get("a"), compute.SecurityPoliciesScopedList)
- assert pager.get("h") is None
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, tuple) for i in results)
- for result in results:
- assert isinstance(result, tuple)
- assert tuple(type(t) for t in result) == (
- str,
- compute.SecurityPoliciesScopedList,
- )
-
- assert pager.get("a") is None
- assert isinstance(pager.get("h"), compute.SecurityPoliciesScopedList)
-
- pages = list(client.aggregated_list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.DeleteSecurityPolicyRequest,
+ compute.AggregatedListSecurityPoliciesRequest,
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_aggregated_list_rest(request_type):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "security_policy": "sample2"}
+ request_init = {"project": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
+ return_value = compute.SecurityPoliciesAggregatedList(
+ etag="etag_value",
+ id="id_value",
kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
+ next_page_token="next_page_token_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ unreachables=["unreachables_value"],
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.SecurityPoliciesAggregatedList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.aggregated_list(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert isinstance(response, pagers.AggregatedListPager)
+ assert response.etag == "etag_value"
+ assert response.id == "id_value"
assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
+ assert response.next_page_token == "next_page_token_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.unreachables == ["unreachables_value"]
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteSecurityPolicyRequest,
+def test_aggregated_list_rest_required_fields(
+ request_type=compute.AggregatedListSecurityPoliciesRequest,
):
transport_class = transports.SecurityPoliciesRestTransport
request_init = {}
request_init["project"] = ""
- request_init["security_policy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1398,26 +1385,32 @@ def test_delete_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).aggregated_list._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
- jsonified_request["securityPolicy"] = "security_policy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).delete._get_unset_required_fields(jsonified_request)
+ ).aggregated_list._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "include_all_scopes",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "securityPolicy" in jsonified_request
- assert jsonified_request["securityPolicy"] == "security_policy_value"
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1426,7 +1419,7 @@ def test_delete_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.SecurityPoliciesAggregatedList()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1437,43 +1430,49 @@ def test_delete_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "delete",
+ "method": "get",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.SecurityPoliciesAggregatedList.to_json(
+ return_value
+ )
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.aggregated_list(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_aggregated_list_rest_unset_required_fields():
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.aggregated_list._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
- & set(
+ set(
(
- "project",
- "securityPolicy",
+ "filter",
+ "includeAllScopes",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
)
)
+ & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_aggregated_list_rest_interceptors(null_interceptor):
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1486,9 +1485,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "post_delete"
+ transports.SecurityPoliciesRestInterceptor, "post_aggregated_list"
) as post, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "pre_delete"
+ transports.SecurityPoliciesRestInterceptor, "pre_aggregated_list"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1503,17 +1502,19 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.SecurityPoliciesAggregatedList.to_json(
+ compute.SecurityPoliciesAggregatedList()
+ )
- request = compute.DeleteSecurityPolicyRequest()
+ request = compute.AggregatedListSecurityPoliciesRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.SecurityPoliciesAggregatedList
- client.delete_unary(
+ client.aggregated_list(
request,
metadata=[
("key", "val"),
@@ -1525,8 +1526,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteSecurityPolicyRequest
+def test_aggregated_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.AggregatedListSecurityPoliciesRequest
):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1534,7 +1535,7 @@ def test_delete_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "security_policy": "sample2"}
+ request_init = {"project": "sample1"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1546,10 +1547,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.aggregated_list(request)
-def test_delete_unary_rest_flattened():
+def test_aggregated_list_rest_flattened():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1558,40 +1559,39 @@ def test_delete_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.SecurityPoliciesAggregatedList()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "security_policy": "sample2"}
+ sample_request = {"project": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- security_policy="security_policy_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.SecurityPoliciesAggregatedList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.aggregated_list(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/securityPolicies/{security_policy}"
+ "%s/compute/v1/projects/{project}/aggregated/securityPolicies"
% client.transport._host,
args[1],
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_aggregated_list_rest_flattened_error(transport: str = "rest"):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1600,73 +1600,167 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteSecurityPolicyRequest(),
+ client.aggregated_list(
+ compute.AggregatedListSecurityPoliciesRequest(),
project="project_value",
- security_policy="security_policy_value",
)
-def test_delete_unary_rest_error():
- client = SecurityPoliciesClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
- )
-
-
-@pytest.mark.parametrize(
- "request_type",
- [
- compute.GetSecurityPolicyRequest,
- dict,
- ],
-)
-def test_get_rest(request_type):
+def test_aggregated_list_rest_pager(transport: str = "rest"):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
- transport="rest",
+ transport=transport,
)
- # send a request that will satisfy transcoding
- request_init = {"project": "sample1", "security_policy": "sample2"}
- request = request_type(request_init)
-
# Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.SecurityPolicy(
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- fingerprint="fingerprint_value",
- id=205,
- kind="kind_value",
- name="name_value",
- region="region_value",
- self_link="self_link_value",
- type_="type__value",
- )
-
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 200
- json_return_value = compute.SecurityPolicy.to_json(return_value)
- response_value._content = json_return_value.encode("UTF-8")
- req.return_value = response_value
- response = client.get(request)
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.SecurityPoliciesAggregatedList(
+ items={
+ "a": compute.SecurityPoliciesScopedList(),
+ "b": compute.SecurityPoliciesScopedList(),
+ "c": compute.SecurityPoliciesScopedList(),
+ },
+ next_page_token="abc",
+ ),
+ compute.SecurityPoliciesAggregatedList(
+ items={},
+ next_page_token="def",
+ ),
+ compute.SecurityPoliciesAggregatedList(
+ items={
+ "g": compute.SecurityPoliciesScopedList(),
+ },
+ next_page_token="ghi",
+ ),
+ compute.SecurityPoliciesAggregatedList(
+ items={
+ "h": compute.SecurityPoliciesScopedList(),
+ "i": compute.SecurityPoliciesScopedList(),
+ },
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.SecurityPoliciesAggregatedList.to_json(x) for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.aggregated_list(request=sample_request)
+
+ assert isinstance(pager.get("a"), compute.SecurityPoliciesScopedList)
+ assert pager.get("h") is None
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, tuple) for i in results)
+ for result in results:
+ assert isinstance(result, tuple)
+ assert tuple(type(t) for t in result) == (
+ str,
+ compute.SecurityPoliciesScopedList,
+ )
+
+ assert pager.get("a") is None
+ assert isinstance(pager.get("h"), compute.SecurityPoliciesScopedList)
+
+ pages = list(client.aggregated_list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DeleteSecurityPolicyRequest,
+ dict,
+ ],
+)
+def test_delete_rest(request_type):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "security_policy": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.SecurityPolicy)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.type_ == "type__value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_rest_required_fields(request_type=compute.GetSecurityPolicyRequest):
+def test_delete_rest_required_fields(request_type=compute.DeleteSecurityPolicyRequest):
transport_class = transports.SecurityPoliciesRestTransport
request_init = {}
@@ -1683,7 +1777,7 @@ def test_get_rest_required_fields(request_type=compute.GetSecurityPolicyRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1693,7 +1787,9 @@ def test_get_rest_required_fields(request_type=compute.GetSecurityPolicyRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1709,7 +1805,7 @@ def test_get_rest_required_fields(request_type=compute.GetSecurityPolicyRequest)
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPolicy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1720,32 +1816,32 @@ def test_get_rest_required_fields(request_type=compute.GetSecurityPolicyRequest)
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -1756,7 +1852,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1769,9 +1865,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "post_get"
+ transports.SecurityPoliciesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "pre_get"
+ transports.SecurityPoliciesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1786,19 +1882,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.SecurityPolicy.to_json(
- compute.SecurityPolicy()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetSecurityPolicyRequest()
+ request = compute.DeleteSecurityPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.SecurityPolicy
+ post.return_value = compute.Operation
- client.get(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1810,8 +1904,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetSecurityPolicyRequest
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteSecurityPolicyRequest
):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1831,10 +1925,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete(request)
-def test_get_rest_flattened():
+def test_delete_rest_flattened():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1843,7 +1937,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPolicy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "security_policy": "sample2"}
@@ -1858,12 +1952,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1876,7 +1970,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1885,14 +1979,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetSecurityPolicyRequest(),
+ client.delete(
+ compute.DeleteSecurityPolicyRequest(),
project="project_value",
security_policy="security_policy_value",
)
-def test_get_rest_error():
+def test_delete_rest_error():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1901,11 +1995,11 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetRuleSecurityPolicyRequest,
+ compute.DeleteSecurityPolicyRequest,
dict,
],
)
-def test_get_rule_rest(request_type):
+def test_delete_unary_rest(request_type):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1918,33 +2012,45 @@ def test_get_rule_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPolicyRule(
- action="action_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- preview=True,
- priority=898,
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPolicyRule.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_rule(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.SecurityPolicyRule)
- assert response.action == "action_value"
- assert response.description == "description_value"
- assert response.kind == "kind_value"
- assert response.preview is True
- assert response.priority == 898
+ assert isinstance(response, compute.Operation)
-def test_get_rule_rest_required_fields(
- request_type=compute.GetRuleSecurityPolicyRequest,
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteSecurityPolicyRequest,
):
transport_class = transports.SecurityPoliciesRestTransport
@@ -1962,7 +2068,7 @@ def test_get_rule_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_rule._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1972,9 +2078,9 @@ def test_get_rule_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_rule._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("priority",))
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1990,7 +2096,7 @@ def test_get_rule_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPolicyRule()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2001,32 +2107,32 @@ def test_get_rule_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPolicyRule.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_rule(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rule_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_rule._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("priority",))
+ set(("requestId",))
& set(
(
"project",
@@ -2037,7 +2143,7 @@ def test_get_rule_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rule_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2050,9 +2156,9 @@ def test_get_rule_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "post_get_rule"
+ transports.SecurityPoliciesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "pre_get_rule"
+ transports.SecurityPoliciesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2067,19 +2173,17 @@ def test_get_rule_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.SecurityPolicyRule.to_json(
- compute.SecurityPolicyRule()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetRuleSecurityPolicyRequest()
+ request = compute.DeleteSecurityPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.SecurityPolicyRule
+ post.return_value = compute.Operation
- client.get_rule(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -2091,8 +2195,8 @@ def test_get_rule_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rule_rest_bad_request(
- transport: str = "rest", request_type=compute.GetRuleSecurityPolicyRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteSecurityPolicyRequest
):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2112,10 +2216,10 @@ def test_get_rule_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_rule(request)
+ client.delete_unary(request)
-def test_get_rule_rest_flattened():
+def test_delete_unary_rest_flattened():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2124,7 +2228,7 @@ def test_get_rule_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPolicyRule()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "security_policy": "sample2"}
@@ -2139,25 +2243,25 @@ def test_get_rule_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPolicyRule.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_rule(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/securityPolicies/{security_policy}/getRule"
+ "%s/compute/v1/projects/{project}/global/securityPolicies/{security_policy}"
% client.transport._host,
args[1],
)
-def test_get_rule_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2166,14 +2270,14 @@ def test_get_rule_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_rule(
- compute.GetRuleSecurityPolicyRequest(),
+ client.delete_unary(
+ compute.DeleteSecurityPolicyRequest(),
project="project_value",
security_policy="security_policy_value",
)
-def test_get_rule_rest_error():
+def test_delete_unary_rest_error():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2182,158 +2286,62 @@ def test_get_rule_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertSecurityPolicyRequest,
+ compute.GetSecurityPolicyRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["security_policy_resource"] = {
- "adaptive_protection_config": {
- "layer7_ddos_defense_config": {
- "enable": True,
- "rule_visibility": "rule_visibility_value",
- }
- },
- "advanced_options_config": {
- "json_parsing": "json_parsing_value",
- "log_level": "log_level_value",
- },
- "creation_timestamp": "creation_timestamp_value",
- "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
- "region": "region_value",
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "header_action": {
- "request_headers_to_adds": [
- {
- "header_name": "header_name_value",
- "header_value": "header_value_value",
- }
- ]
- },
- "kind": "kind_value",
- "match": {
- "config": {
- "src_ip_ranges": [
- "src_ip_ranges_value_1",
- "src_ip_ranges_value_2",
- ]
- },
- "expr": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "versioned_expr": "versioned_expr_value",
- },
- "preview": True,
- "priority": 898,
- "rate_limit_options": {
- "ban_duration_sec": 1680,
- "ban_threshold": {"count": 553, "interval_sec": 1279},
- "conform_action": "conform_action_value",
- "enforce_on_key": "enforce_on_key_value",
- "enforce_on_key_name": "enforce_on_key_name_value",
- "exceed_action": "exceed_action_value",
- "exceed_redirect_options": {
- "target": "target_value",
- "type_": "type__value",
- },
- "rate_limit_threshold": {},
- },
- "redirect_options": {},
- }
- ],
- "self_link": "self_link_value",
- "type_": "type__value",
- }
+ request_init = {"project": "sample1", "security_policy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.SecurityPolicy(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ type_="type__value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.SecurityPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.SecurityPolicy)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.type_ == "type__value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertSecurityPolicyRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetSecurityPolicyRequest):
transport_class = transports.SecurityPoliciesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["security_policy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2345,23 +2353,24 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["securityPolicy"] = "security_policy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "securityPolicy" in jsonified_request
+ assert jsonified_request["securityPolicy"] == "security_policy_value"
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2370,7 +2379,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.SecurityPolicy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2381,44 +2390,43 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.SecurityPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"project",
- "securityPolicyResource",
+ "securityPolicy",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2431,9 +2439,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "post_insert"
+ transports.SecurityPoliciesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "pre_insert"
+ transports.SecurityPoliciesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2448,17 +2456,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.SecurityPolicy.to_json(
+ compute.SecurityPolicy()
+ )
- request = compute.InsertSecurityPolicyRequest()
+ request = compute.GetSecurityPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.SecurityPolicy
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -2470,8 +2480,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertSecurityPolicyRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetSecurityPolicyRequest
):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2479,76 +2489,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["security_policy_resource"] = {
- "adaptive_protection_config": {
- "layer7_ddos_defense_config": {
- "enable": True,
- "rule_visibility": "rule_visibility_value",
- }
- },
- "advanced_options_config": {
- "json_parsing": "json_parsing_value",
- "log_level": "log_level_value",
- },
- "creation_timestamp": "creation_timestamp_value",
- "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
- "region": "region_value",
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "header_action": {
- "request_headers_to_adds": [
- {
- "header_name": "header_name_value",
- "header_value": "header_value_value",
- }
- ]
- },
- "kind": "kind_value",
- "match": {
- "config": {
- "src_ip_ranges": [
- "src_ip_ranges_value_1",
- "src_ip_ranges_value_2",
- ]
- },
- "expr": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "versioned_expr": "versioned_expr_value",
- },
- "preview": True,
- "priority": 898,
- "rate_limit_options": {
- "ban_duration_sec": 1680,
- "ban_threshold": {"count": 553, "interval_sec": 1279},
- "conform_action": "conform_action_value",
- "enforce_on_key": "enforce_on_key_value",
- "enforce_on_key_name": "enforce_on_key_name_value",
- "exceed_action": "exceed_action_value",
- "exceed_redirect_options": {
- "target": "target_value",
- "type_": "type__value",
- },
- "rate_limit_threshold": {},
- },
- "redirect_options": {},
- }
- ],
- "self_link": "self_link_value",
- "type_": "type__value",
- }
+ request_init = {"project": "sample1", "security_policy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2560,10 +2501,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get(request)
-def test_insert_unary_rest_flattened():
+def test_get_rest_flattened():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2572,46 +2513,40 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.SecurityPolicy()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "security_policy": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- security_policy_resource=compute.SecurityPolicy(
- adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
- layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
- enable=True
- )
- )
- ),
+ security_policy="security_policy_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.SecurityPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/securityPolicies"
+ "%s/compute/v1/projects/{project}/global/securityPolicies/{security_policy}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2620,20 +2555,14 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertSecurityPolicyRequest(),
+ client.get(
+ compute.GetSecurityPolicyRequest(),
project="project_value",
- security_policy_resource=compute.SecurityPolicy(
- adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
- layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
- enable=True
- )
- )
- ),
+ security_policy="security_policy_value",
)
-def test_insert_unary_rest_error():
+def test_get_rest_error():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2642,49 +2571,56 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListSecurityPoliciesRequest,
+ compute.GetRuleSecurityPolicyRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_get_rule_rest(request_type):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "security_policy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPolicyList(
- id="id_value",
+ return_value = compute.SecurityPolicyRule(
+ action="action_value",
+ description="description_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ preview=True,
+ priority=898,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPolicyList.to_json(return_value)
+ json_return_value = compute.SecurityPolicyRule.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get_rule(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, compute.SecurityPolicyRule)
+ assert response.action == "action_value"
+ assert response.description == "description_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.preview is True
+ assert response.priority == 898
-def test_list_rest_required_fields(request_type=compute.ListSecurityPoliciesRequest):
+def test_get_rule_rest_required_fields(
+ request_type=compute.GetRuleSecurityPolicyRequest,
+):
transport_class = transports.SecurityPoliciesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["security_policy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2696,31 +2632,26 @@ def test_list_rest_required_fields(request_type=compute.ListSecurityPoliciesRequ
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).get_rule._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["securityPolicy"] = "security_policy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).get_rule._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("priority",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "securityPolicy" in jsonified_request
+ assert jsonified_request["securityPolicy"] == "security_policy_value"
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2729,7 +2660,7 @@ def test_list_rest_required_fields(request_type=compute.ListSecurityPoliciesRequ
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPolicyList()
+ return_value = compute.SecurityPolicyRule()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2747,39 +2678,36 @@ def test_list_rest_required_fields(request_type=compute.ListSecurityPoliciesRequ
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPolicyList.to_json(return_value)
+ json_return_value = compute.SecurityPolicyRule.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get_rule(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_get_rule_rest_unset_required_fields():
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.get_rule._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("priority",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "project",
+ "securityPolicy",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_get_rule_rest_interceptors(null_interceptor):
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2792,9 +2720,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "post_list"
+ transports.SecurityPoliciesRestInterceptor, "post_get_rule"
) as post, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "pre_list"
+ transports.SecurityPoliciesRestInterceptor, "pre_get_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2809,19 +2737,19 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.SecurityPolicyList.to_json(
- compute.SecurityPolicyList()
+ req.return_value._content = compute.SecurityPolicyRule.to_json(
+ compute.SecurityPolicyRule()
)
- request = compute.ListSecurityPoliciesRequest()
+ request = compute.GetRuleSecurityPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.SecurityPolicyList
+ post.return_value = compute.SecurityPolicyRule
- client.list(
+ client.get_rule(
request,
metadata=[
("key", "val"),
@@ -2833,8 +2761,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListSecurityPoliciesRequest
+def test_get_rule_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetRuleSecurityPolicyRequest
):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2842,7 +2770,7 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "security_policy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2854,10 +2782,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.get_rule(request)
-def test_list_rest_flattened():
+def test_get_rule_rest_flattened():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2866,39 +2794,40 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPolicyList()
+ return_value = compute.SecurityPolicyRule()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "security_policy": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ security_policy="security_policy_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SecurityPolicyList.to_json(return_value)
+ json_return_value = compute.SecurityPolicyRule.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.get_rule(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/securityPolicies"
+ "%s/compute/v1/projects/{project}/global/securityPolicies/{security_policy}/getRule"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_get_rule_rest_flattened_error(transport: str = "rest"):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2907,81 +2836,27 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListSecurityPoliciesRequest(),
+ client.get_rule(
+ compute.GetRuleSecurityPolicyRequest(),
project="project_value",
+ security_policy="security_policy_value",
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_get_rule_rest_error():
client = SecurityPoliciesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.SecurityPolicyList(
- items=[
- compute.SecurityPolicy(),
- compute.SecurityPolicy(),
- compute.SecurityPolicy(),
- ],
- next_page_token="abc",
- ),
- compute.SecurityPolicyList(
- items=[],
- next_page_token="def",
- ),
- compute.SecurityPolicyList(
- items=[
- compute.SecurityPolicy(),
- ],
- next_page_token="ghi",
- ),
- compute.SecurityPolicyList(
- items=[
- compute.SecurityPolicy(),
- compute.SecurityPolicy(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.SecurityPolicyList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.SecurityPolicy) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.ListPreconfiguredExpressionSetsSecurityPoliciesRequest,
+ compute.InsertSecurityPolicyRequest,
dict,
],
)
-def test_list_preconfigured_expression_sets_rest(request_type):
+def test_insert_rest(request_type):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2989,34 +2864,140 @@ def test_list_preconfigured_expression_sets_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse()
-
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 200
- json_return_value = (
- compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse.to_json(
- return_value
- )
- )
- response_value._content = json_return_value.encode("UTF-8")
- req.return_value = response_value
- response = client.list_preconfigured_expression_sets(request)
-
- # Establish that the response is the type that we expect.
- assert isinstance(
- response, compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse
- )
-
-
-def test_list_preconfigured_expression_sets_rest_required_fields(
- request_type=compute.ListPreconfiguredExpressionSetsSecurityPoliciesRequest,
-):
+ request_init["security_policy_resource"] = {
+ "adaptive_protection_config": {
+ "layer7_ddos_defense_config": {
+ "enable": True,
+ "rule_visibility": "rule_visibility_value",
+ }
+ },
+ "advanced_options_config": {
+ "json_parsing": "json_parsing_value",
+ "log_level": "log_level_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
+ "region": "region_value",
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": [
+ "src_ip_ranges_value_1",
+ "src_ip_ranges_value_2",
+ ]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
+ ],
+ "self_link": "self_link_value",
+ "type_": "type__value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertSecurityPolicyRequest):
transport_class = transports.SecurityPoliciesRestTransport
request_init = {}
@@ -3032,7 +3013,7 @@ def test_list_preconfigured_expression_sets_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_preconfigured_expression_sets._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3041,17 +3022,9 @@ def test_list_preconfigured_expression_sets_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_preconfigured_expression_sets._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -3065,7 +3038,7 @@ def test_list_preconfigured_expression_sets_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3076,52 +3049,44 @@ def test_list_preconfigured_expression_sets_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_preconfigured_expression_sets(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_preconfigured_expression_sets_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = (
- transport.list_preconfigured_expression_sets._get_unset_required_fields({})
- )
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "project",
+ "securityPolicyResource",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_preconfigured_expression_sets_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3134,11 +3099,9 @@ def test_list_preconfigured_expression_sets_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor,
- "post_list_preconfigured_expression_sets",
+ transports.SecurityPoliciesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor,
- "pre_list_preconfigured_expression_sets",
+ transports.SecurityPoliciesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3153,23 +3116,17 @@ def test_list_preconfigured_expression_sets_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = (
- compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse.to_json(
- compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse()
- )
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListPreconfiguredExpressionSetsSecurityPoliciesRequest()
+ request = compute.InsertSecurityPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = (
- compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse
- )
+ post.return_value = compute.Operation
- client.list_preconfigured_expression_sets(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -3181,9 +3138,8 @@ def test_list_preconfigured_expression_sets_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_preconfigured_expression_sets_rest_bad_request(
- transport: str = "rest",
- request_type=compute.ListPreconfiguredExpressionSetsSecurityPoliciesRequest,
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertSecurityPolicyRequest
):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3192,6 +3148,2467 @@ def test_list_preconfigured_expression_sets_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
+ request_init["security_policy_resource"] = {
+ "adaptive_protection_config": {
+ "layer7_ddos_defense_config": {
+ "enable": True,
+ "rule_visibility": "rule_visibility_value",
+ }
+ },
+ "advanced_options_config": {
+ "json_parsing": "json_parsing_value",
+ "log_level": "log_level_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
+ "region": "region_value",
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": [
+ "src_ip_ranges_value_1",
+ "src_ip_ranges_value_2",
+ ]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
+ ],
+ "self_link": "self_link_value",
+ "type_": "type__value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ security_policy_resource=compute.SecurityPolicy(
+ adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
+ layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
+ enable=True
+ )
+ )
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/securityPolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertSecurityPolicyRequest(),
+ project="project_value",
+ security_policy_resource=compute.SecurityPolicy(
+ adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
+ layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
+ enable=True
+ )
+ )
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertSecurityPolicyRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["security_policy_resource"] = {
+ "adaptive_protection_config": {
+ "layer7_ddos_defense_config": {
+ "enable": True,
+ "rule_visibility": "rule_visibility_value",
+ }
+ },
+ "advanced_options_config": {
+ "json_parsing": "json_parsing_value",
+ "log_level": "log_level_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
+ "region": "region_value",
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": [
+ "src_ip_ranges_value_1",
+ "src_ip_ranges_value_2",
+ ]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
+ ],
+ "self_link": "self_link_value",
+ "type_": "type__value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertSecurityPolicyRequest,
+):
+ transport_class = transports.SecurityPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.SecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "securityPolicyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.SecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SecurityPoliciesRestInterceptor(),
+ )
+ client = SecurityPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SecurityPoliciesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.SecurityPoliciesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertSecurityPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertSecurityPolicyRequest
+):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["security_policy_resource"] = {
+ "adaptive_protection_config": {
+ "layer7_ddos_defense_config": {
+ "enable": True,
+ "rule_visibility": "rule_visibility_value",
+ }
+ },
+ "advanced_options_config": {
+ "json_parsing": "json_parsing_value",
+ "log_level": "log_level_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
+ "region": "region_value",
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": [
+ "src_ip_ranges_value_1",
+ "src_ip_ranges_value_2",
+ ]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
+ ],
+ "self_link": "self_link_value",
+ "type_": "type__value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ security_policy_resource=compute.SecurityPolicy(
+ adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
+ layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
+ enable=True
+ )
+ )
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/securityPolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertSecurityPolicyRequest(),
+ project="project_value",
+ security_policy_resource=compute.SecurityPolicy(
+ adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
+ layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
+ enable=True
+ )
+ )
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListSecurityPoliciesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SecurityPolicyList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SecurityPolicyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListSecurityPoliciesRequest):
+ transport_class = transports.SecurityPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SecurityPolicyList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SecurityPolicyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.SecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.SecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SecurityPoliciesRestInterceptor(),
+ )
+ client = SecurityPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SecurityPoliciesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.SecurityPoliciesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.SecurityPolicyList.to_json(
+ compute.SecurityPolicyList()
+ )
+
+ request = compute.ListSecurityPoliciesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.SecurityPolicyList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListSecurityPoliciesRequest
+):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SecurityPolicyList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SecurityPolicyList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/securityPolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListSecurityPoliciesRequest(),
+ project="project_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.SecurityPolicyList(
+ items=[
+ compute.SecurityPolicy(),
+ compute.SecurityPolicy(),
+ compute.SecurityPolicy(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.SecurityPolicyList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.SecurityPolicyList(
+ items=[
+ compute.SecurityPolicy(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.SecurityPolicyList(
+ items=[
+ compute.SecurityPolicy(),
+ compute.SecurityPolicy(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.SecurityPolicyList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.SecurityPolicy) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListPreconfiguredExpressionSetsSecurityPoliciesRequest,
+ dict,
+ ],
+)
+def test_list_preconfigured_expression_sets_rest(request_type):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse()
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse.to_json(
+ return_value
+ )
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list_preconfigured_expression_sets(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(
+ response, compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse
+ )
+
+
+def test_list_preconfigured_expression_sets_rest_required_fields(
+ request_type=compute.ListPreconfiguredExpressionSetsSecurityPoliciesRequest,
+):
+ transport_class = transports.SecurityPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_preconfigured_expression_sets._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_preconfigured_expression_sets._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse.to_json(
+ return_value
+ )
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list_preconfigured_expression_sets(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_preconfigured_expression_sets_rest_unset_required_fields():
+ transport = transports.SecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = (
+ transport.list_preconfigured_expression_sets._get_unset_required_fields({})
+ )
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_preconfigured_expression_sets_rest_interceptors(null_interceptor):
+ transport = transports.SecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SecurityPoliciesRestInterceptor(),
+ )
+ client = SecurityPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SecurityPoliciesRestInterceptor,
+ "post_list_preconfigured_expression_sets",
+ ) as post, mock.patch.object(
+ transports.SecurityPoliciesRestInterceptor,
+ "pre_list_preconfigured_expression_sets",
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = (
+ compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse.to_json(
+ compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse()
+ )
+ )
+
+ request = compute.ListPreconfiguredExpressionSetsSecurityPoliciesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = (
+ compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse
+ )
+
+ client.list_preconfigured_expression_sets(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_preconfigured_expression_sets_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.ListPreconfiguredExpressionSetsSecurityPoliciesRequest,
+):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list_preconfigured_expression_sets(request)
+
+
+def test_list_preconfigured_expression_sets_rest_flattened():
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse.to_json(
+ return_value
+ )
+ )
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list_preconfigured_expression_sets(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/securityPolicies/listPreconfiguredExpressionSets"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_preconfigured_expression_sets_rest_flattened_error(
+ transport: str = "rest",
+):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list_preconfigured_expression_sets(
+ compute.ListPreconfiguredExpressionSetsSecurityPoliciesRequest(),
+ project="project_value",
+ )
+
+
+def test_list_preconfigured_expression_sets_rest_error():
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchSecurityPolicyRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "security_policy": "sample2"}
+ request_init["security_policy_resource"] = {
+ "adaptive_protection_config": {
+ "layer7_ddos_defense_config": {
+ "enable": True,
+ "rule_visibility": "rule_visibility_value",
+ }
+ },
+ "advanced_options_config": {
+ "json_parsing": "json_parsing_value",
+ "log_level": "log_level_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
+ "region": "region_value",
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": [
+ "src_ip_ranges_value_1",
+ "src_ip_ranges_value_2",
+ ]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
+ ],
+ "self_link": "self_link_value",
+ "type_": "type__value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchSecurityPolicyRequest):
+ transport_class = transports.SecurityPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["security_policy"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["securityPolicy"] = "security_policy_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "securityPolicy" in jsonified_request
+ assert jsonified_request["securityPolicy"] == "security_policy_value"
+
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.SecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "securityPolicy",
+ "securityPolicyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.SecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SecurityPoliciesRestInterceptor(),
+ )
+ client = SecurityPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SecurityPoliciesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.SecurityPoliciesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchSecurityPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchSecurityPolicyRequest
+):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "security_policy": "sample2"}
+ request_init["security_policy_resource"] = {
+ "adaptive_protection_config": {
+ "layer7_ddos_defense_config": {
+ "enable": True,
+ "rule_visibility": "rule_visibility_value",
+ }
+ },
+ "advanced_options_config": {
+ "json_parsing": "json_parsing_value",
+ "log_level": "log_level_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
+ "region": "region_value",
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": [
+ "src_ip_ranges_value_1",
+ "src_ip_ranges_value_2",
+ ]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
+ ],
+ "self_link": "self_link_value",
+ "type_": "type__value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "security_policy": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ security_policy="security_policy_value",
+ security_policy_resource=compute.SecurityPolicy(
+ adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
+ layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
+ enable=True
+ )
+ )
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/securityPolicies/{security_policy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchSecurityPolicyRequest(),
+ project="project_value",
+ security_policy="security_policy_value",
+ security_policy_resource=compute.SecurityPolicy(
+ adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
+ layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
+ enable=True
+ )
+ )
+ ),
+ )
+
+
+def test_patch_rest_error():
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchSecurityPolicyRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "security_policy": "sample2"}
+ request_init["security_policy_resource"] = {
+ "adaptive_protection_config": {
+ "layer7_ddos_defense_config": {
+ "enable": True,
+ "rule_visibility": "rule_visibility_value",
+ }
+ },
+ "advanced_options_config": {
+ "json_parsing": "json_parsing_value",
+ "log_level": "log_level_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
+ "region": "region_value",
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": [
+ "src_ip_ranges_value_1",
+ "src_ip_ranges_value_2",
+ ]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
+ ],
+ "self_link": "self_link_value",
+ "type_": "type__value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchSecurityPolicyRequest,
+):
+ transport_class = transports.SecurityPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["security_policy"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["securityPolicy"] = "security_policy_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "securityPolicy" in jsonified_request
+ assert jsonified_request["securityPolicy"] == "security_policy_value"
+
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_unary_rest_unset_required_fields():
+ transport = transports.SecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "securityPolicy",
+ "securityPolicyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_unary_rest_interceptors(null_interceptor):
+ transport = transports.SecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SecurityPoliciesRestInterceptor(),
+ )
+ client = SecurityPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SecurityPoliciesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.SecurityPoliciesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchSecurityPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchSecurityPolicyRequest
+):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "security_policy": "sample2"}
+ request_init["security_policy_resource"] = {
+ "adaptive_protection_config": {
+ "layer7_ddos_defense_config": {
+ "enable": True,
+ "rule_visibility": "rule_visibility_value",
+ }
+ },
+ "advanced_options_config": {
+ "json_parsing": "json_parsing_value",
+ "log_level": "log_level_value",
+ },
+ "creation_timestamp": "creation_timestamp_value",
+ "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
+ "region": "region_value",
+ "rules": [
+ {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": [
+ "src_ip_ranges_value_1",
+ "src_ip_ranges_value_2",
+ ]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
+ ],
+ "self_link": "self_link_value",
+ "type_": "type__value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_unary(request)
+
+
+def test_patch_unary_rest_flattened():
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "security_policy": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ security_policy="security_policy_value",
+ security_policy_resource=compute.SecurityPolicy(
+ adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
+ layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
+ enable=True
+ )
+ )
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/securityPolicies/{security_policy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_unary(
+ compute.PatchSecurityPolicyRequest(),
+ project="project_value",
+ security_policy="security_policy_value",
+ security_policy_resource=compute.SecurityPolicy(
+ adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
+ layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
+ enable=True
+ )
+ )
+ ),
+ )
+
+
+def test_patch_unary_rest_error():
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchRuleSecurityPolicyRequest,
+ dict,
+ ],
+)
+def test_patch_rule_rest(request_type):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "security_policy": "sample2"}
+ request_init["security_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_rule(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rule_rest_required_fields(
+ request_type=compute.PatchRuleSecurityPolicyRequest,
+):
+ transport_class = transports.SecurityPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["security_policy"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_rule._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["securityPolicy"] = "security_policy_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch_rule._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("priority",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "securityPolicy" in jsonified_request
+ assert jsonified_request["securityPolicy"] == "security_policy_value"
+
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_rule(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rule_rest_unset_required_fields():
+ transport = transports.SecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch_rule._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("priority",))
+ & set(
+ (
+ "project",
+ "securityPolicy",
+ "securityPolicyRuleResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rule_rest_interceptors(null_interceptor):
+ transport = transports.SecurityPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SecurityPoliciesRestInterceptor(),
+ )
+ client = SecurityPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SecurityPoliciesRestInterceptor, "post_patch_rule"
+ ) as post, mock.patch.object(
+ transports.SecurityPoliciesRestInterceptor, "pre_patch_rule"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchRuleSecurityPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_rule(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rule_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRuleSecurityPolicyRequest
+):
+ client = SecurityPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "security_policy": "sample2"}
+ request_init["security_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3203,10 +5620,10 @@ def test_list_preconfigured_expression_sets_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list_preconfigured_expression_sets(request)
+ client.patch_rule(request)
-def test_list_preconfigured_expression_sets_rest_flattened():
+def test_patch_rule_rest_flattened():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3215,45 +5632,43 @@ def test_list_preconfigured_expression_sets_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "security_policy": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ security_policy="security_policy_value",
+ security_policy_rule_resource=compute.SecurityPolicyRule(
+ action="action_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse.to_json(
- return_value
- )
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list_preconfigured_expression_sets(**mock_args)
+ client.patch_rule(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/securityPolicies/listPreconfiguredExpressionSets"
+ "%s/compute/v1/projects/{project}/global/securityPolicies/{security_policy}/patchRule"
% client.transport._host,
args[1],
)
-def test_list_preconfigured_expression_sets_rest_flattened_error(
- transport: str = "rest",
-):
+def test_patch_rule_rest_flattened_error(transport: str = "rest"):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3262,13 +5677,17 @@ def test_list_preconfigured_expression_sets_rest_flattened_error(
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list_preconfigured_expression_sets(
- compute.ListPreconfiguredExpressionSetsSecurityPoliciesRequest(),
+ client.patch_rule(
+ compute.PatchRuleSecurityPolicyRequest(),
project="project_value",
+ security_policy="security_policy_value",
+ security_policy_rule_resource=compute.SecurityPolicyRule(
+ action="action_value"
+ ),
)
-def test_list_preconfigured_expression_sets_rest_error():
+def test_patch_rule_rest_error():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3277,11 +5696,11 @@ def test_list_preconfigured_expression_sets_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchSecurityPolicyRequest,
+ compute.PatchRuleSecurityPolicyRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_patch_rule_unary_rest(request_type):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3289,74 +5708,46 @@ def test_patch_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "security_policy": "sample2"}
- request_init["security_policy_resource"] = {
- "adaptive_protection_config": {
- "layer7_ddos_defense_config": {
- "enable": True,
- "rule_visibility": "rule_visibility_value",
- }
- },
- "advanced_options_config": {
- "json_parsing": "json_parsing_value",
- "log_level": "log_level_value",
- },
- "creation_timestamp": "creation_timestamp_value",
- "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
+ request_init["security_policy_rule_resource"] = {
+ "action": "action_value",
"description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
+ },
"kind": "kind_value",
- "name": "name_value",
- "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
- "region": "region_value",
- "rules": [
- {
- "action": "action_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"]
+ },
+ "expr": {
"description": "description_value",
- "header_action": {
- "request_headers_to_adds": [
- {
- "header_name": "header_name_value",
- "header_value": "header_value_value",
- }
- ]
- },
- "kind": "kind_value",
- "match": {
- "config": {
- "src_ip_ranges": [
- "src_ip_ranges_value_1",
- "src_ip_ranges_value_2",
- ]
- },
- "expr": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "versioned_expr": "versioned_expr_value",
- },
- "preview": True,
- "priority": 898,
- "rate_limit_options": {
- "ban_duration_sec": 1680,
- "ban_threshold": {"count": 553, "interval_sec": 1279},
- "conform_action": "conform_action_value",
- "enforce_on_key": "enforce_on_key_value",
- "enforce_on_key_name": "enforce_on_key_name_value",
- "exceed_action": "exceed_action_value",
- "exceed_redirect_options": {
- "target": "target_value",
- "type_": "type__value",
- },
- "rate_limit_threshold": {},
- },
- "redirect_options": {},
- }
- ],
- "self_link": "self_link_value",
- "type_": "type__value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
+ },
+ "redirect_options": {},
}
request = request_type(request_init)
@@ -3394,36 +5785,14 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.patch_rule_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchSecurityPolicyRequest,
+def test_patch_rule_unary_rest_required_fields(
+ request_type=compute.PatchRuleSecurityPolicyRequest,
):
transport_class = transports.SecurityPoliciesRestTransport
@@ -3441,7 +5810,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).patch_rule._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3451,9 +5820,9 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).patch_rule._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(("priority",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -3480,7 +5849,7 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -3492,33 +5861,33 @@ def test_patch_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.patch_rule_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_patch_rule_unary_rest_unset_required_fields():
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.patch_rule._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(("priority",))
& set(
(
"project",
"securityPolicy",
- "securityPolicyResource",
+ "securityPolicyRuleResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_patch_rule_unary_rest_interceptors(null_interceptor):
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3531,9 +5900,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "post_patch"
+ transports.SecurityPoliciesRestInterceptor, "post_patch_rule"
) as post, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "pre_patch"
+ transports.SecurityPoliciesRestInterceptor, "pre_patch_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3550,7 +5919,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchSecurityPolicyRequest()
+ request = compute.PatchRuleSecurityPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3558,7 +5927,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.patch_rule_unary(
request,
metadata=[
("key", "val"),
@@ -3570,8 +5939,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchSecurityPolicyRequest
+def test_patch_rule_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchRuleSecurityPolicyRequest
):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3580,74 +5949,46 @@ def test_patch_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "security_policy": "sample2"}
- request_init["security_policy_resource"] = {
- "adaptive_protection_config": {
- "layer7_ddos_defense_config": {
- "enable": True,
- "rule_visibility": "rule_visibility_value",
- }
+ request_init["security_policy_rule_resource"] = {
+ "action": "action_value",
+ "description": "description_value",
+ "header_action": {
+ "request_headers_to_adds": [
+ {
+ "header_name": "header_name_value",
+ "header_value": "header_value_value",
+ }
+ ]
},
- "advanced_options_config": {
- "json_parsing": "json_parsing_value",
- "log_level": "log_level_value",
+ "kind": "kind_value",
+ "match": {
+ "config": {
+ "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"]
+ },
+ "expr": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "versioned_expr": "versioned_expr_value",
+ },
+ "preview": True,
+ "priority": 898,
+ "rate_limit_options": {
+ "ban_duration_sec": 1680,
+ "ban_threshold": {"count": 553, "interval_sec": 1279},
+ "conform_action": "conform_action_value",
+ "enforce_on_key": "enforce_on_key_value",
+ "enforce_on_key_name": "enforce_on_key_name_value",
+ "exceed_action": "exceed_action_value",
+ "exceed_redirect_options": {
+ "target": "target_value",
+ "type_": "type__value",
+ },
+ "rate_limit_threshold": {},
},
- "creation_timestamp": "creation_timestamp_value",
- "ddos_protection_config": {"ddos_protection": "ddos_protection_value"},
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"},
- "region": "region_value",
- "rules": [
- {
- "action": "action_value",
- "description": "description_value",
- "header_action": {
- "request_headers_to_adds": [
- {
- "header_name": "header_name_value",
- "header_value": "header_value_value",
- }
- ]
- },
- "kind": "kind_value",
- "match": {
- "config": {
- "src_ip_ranges": [
- "src_ip_ranges_value_1",
- "src_ip_ranges_value_2",
- ]
- },
- "expr": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "versioned_expr": "versioned_expr_value",
- },
- "preview": True,
- "priority": 898,
- "rate_limit_options": {
- "ban_duration_sec": 1680,
- "ban_threshold": {"count": 553, "interval_sec": 1279},
- "conform_action": "conform_action_value",
- "enforce_on_key": "enforce_on_key_value",
- "enforce_on_key_name": "enforce_on_key_name_value",
- "exceed_action": "exceed_action_value",
- "exceed_redirect_options": {
- "target": "target_value",
- "type_": "type__value",
- },
- "rate_limit_threshold": {},
- },
- "redirect_options": {},
- }
- ],
- "self_link": "self_link_value",
- "type_": "type__value",
+ "redirect_options": {},
}
request = request_type(request_init)
@@ -3660,10 +6001,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.patch_rule_unary(request)
-def test_patch_unary_rest_flattened():
+def test_patch_rule_unary_rest_flattened():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3681,12 +6022,8 @@ def test_patch_unary_rest_flattened():
mock_args = dict(
project="project_value",
security_policy="security_policy_value",
- security_policy_resource=compute.SecurityPolicy(
- adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
- layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
- enable=True
- )
- )
+ security_policy_rule_resource=compute.SecurityPolicyRule(
+ action="action_value"
),
)
mock_args.update(sample_request)
@@ -3699,20 +6036,20 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.patch_rule_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/securityPolicies/{security_policy}"
+ "%s/compute/v1/projects/{project}/global/securityPolicies/{security_policy}/patchRule"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3721,21 +6058,17 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchSecurityPolicyRequest(),
+ client.patch_rule_unary(
+ compute.PatchRuleSecurityPolicyRequest(),
project="project_value",
security_policy="security_policy_value",
- security_policy_resource=compute.SecurityPolicy(
- adaptive_protection_config=compute.SecurityPolicyAdaptiveProtectionConfig(
- layer7_ddos_defense_config=compute.SecurityPolicyAdaptiveProtectionConfigLayer7DdosDefenseConfig(
- enable=True
- )
- )
+ security_policy_rule_resource=compute.SecurityPolicyRule(
+ action="action_value"
),
)
-def test_patch_unary_rest_error():
+def test_patch_rule_unary_rest_error():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3744,11 +6077,11 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchRuleSecurityPolicyRequest,
+ compute.RemoveRuleSecurityPolicyRequest,
dict,
],
)
-def test_patch_rule_unary_rest(request_type):
+def test_remove_rule_rest(request_type):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3756,47 +6089,6 @@ def test_patch_rule_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "security_policy": "sample2"}
- request_init["security_policy_rule_resource"] = {
- "action": "action_value",
- "description": "description_value",
- "header_action": {
- "request_headers_to_adds": [
- {
- "header_name": "header_name_value",
- "header_value": "header_value_value",
- }
- ]
- },
- "kind": "kind_value",
- "match": {
- "config": {
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"]
- },
- "expr": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "versioned_expr": "versioned_expr_value",
- },
- "preview": True,
- "priority": 898,
- "rate_limit_options": {
- "ban_duration_sec": 1680,
- "ban_threshold": {"count": 553, "interval_sec": 1279},
- "conform_action": "conform_action_value",
- "enforce_on_key": "enforce_on_key_value",
- "enforce_on_key_name": "enforce_on_key_name_value",
- "exceed_action": "exceed_action_value",
- "exceed_redirect_options": {
- "target": "target_value",
- "type_": "type__value",
- },
- "rate_limit_threshold": {},
- },
- "redirect_options": {},
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -3833,10 +6125,10 @@ def test_patch_rule_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_rule_unary(request)
+ response = client.remove_rule(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -3861,8 +6153,8 @@ def test_patch_rule_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_rule_unary_rest_required_fields(
- request_type=compute.PatchRuleSecurityPolicyRequest,
+def test_remove_rule_rest_required_fields(
+ request_type=compute.RemoveRuleSecurityPolicyRequest,
):
transport_class = transports.SecurityPoliciesRestTransport
@@ -3880,7 +6172,7 @@ def test_patch_rule_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch_rule._get_unset_required_fields(jsonified_request)
+ ).remove_rule._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -3890,7 +6182,7 @@ def test_patch_rule_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch_rule._get_unset_required_fields(jsonified_request)
+ ).remove_rule._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("priority",))
jsonified_request.update(unset_fields)
@@ -3922,7 +6214,6 @@ def test_patch_rule_unary_rest_required_fields(
"method": "post",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -3931,33 +6222,32 @@ def test_patch_rule_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_rule_unary(request)
+ response = client.remove_rule(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_rule_unary_rest_unset_required_fields():
+def test_remove_rule_rest_unset_required_fields():
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch_rule._get_unset_required_fields({})
+ unset_fields = transport.remove_rule._get_unset_required_fields({})
assert set(unset_fields) == (
set(("priority",))
& set(
(
"project",
"securityPolicy",
- "securityPolicyRuleResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_rule_unary_rest_interceptors(null_interceptor):
+def test_remove_rule_rest_interceptors(null_interceptor):
transport = transports.SecurityPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3970,9 +6260,9 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "post_patch_rule"
+ transports.SecurityPoliciesRestInterceptor, "post_remove_rule"
) as post, mock.patch.object(
- transports.SecurityPoliciesRestInterceptor, "pre_patch_rule"
+ transports.SecurityPoliciesRestInterceptor, "pre_remove_rule"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3989,7 +6279,7 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchRuleSecurityPolicyRequest()
+ request = compute.RemoveRuleSecurityPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3997,7 +6287,7 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_rule_unary(
+ client.remove_rule(
request,
metadata=[
("key", "val"),
@@ -4009,8 +6299,8 @@ def test_patch_rule_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_rule_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchRuleSecurityPolicyRequest
+def test_remove_rule_rest_bad_request(
+ transport: str = "rest", request_type=compute.RemoveRuleSecurityPolicyRequest
):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -4019,47 +6309,6 @@ def test_patch_rule_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "security_policy": "sample2"}
- request_init["security_policy_rule_resource"] = {
- "action": "action_value",
- "description": "description_value",
- "header_action": {
- "request_headers_to_adds": [
- {
- "header_name": "header_name_value",
- "header_value": "header_value_value",
- }
- ]
- },
- "kind": "kind_value",
- "match": {
- "config": {
- "src_ip_ranges": ["src_ip_ranges_value_1", "src_ip_ranges_value_2"]
- },
- "expr": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "versioned_expr": "versioned_expr_value",
- },
- "preview": True,
- "priority": 898,
- "rate_limit_options": {
- "ban_duration_sec": 1680,
- "ban_threshold": {"count": 553, "interval_sec": 1279},
- "conform_action": "conform_action_value",
- "enforce_on_key": "enforce_on_key_value",
- "enforce_on_key_name": "enforce_on_key_name_value",
- "exceed_action": "exceed_action_value",
- "exceed_redirect_options": {
- "target": "target_value",
- "type_": "type__value",
- },
- "rate_limit_threshold": {},
- },
- "redirect_options": {},
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -4071,10 +6320,10 @@ def test_patch_rule_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_rule_unary(request)
+ client.remove_rule(request)
-def test_patch_rule_unary_rest_flattened():
+def test_remove_rule_rest_flattened():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4092,9 +6341,6 @@ def test_patch_rule_unary_rest_flattened():
mock_args = dict(
project="project_value",
security_policy="security_policy_value",
- security_policy_rule_resource=compute.SecurityPolicyRule(
- action="action_value"
- ),
)
mock_args.update(sample_request)
@@ -4106,20 +6352,20 @@ def test_patch_rule_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_rule_unary(**mock_args)
+ client.remove_rule(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/securityPolicies/{security_policy}/patchRule"
+ "%s/compute/v1/projects/{project}/global/securityPolicies/{security_policy}/removeRule"
% client.transport._host,
args[1],
)
-def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"):
+def test_remove_rule_rest_flattened_error(transport: str = "rest"):
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4128,17 +6374,14 @@ def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_rule_unary(
- compute.PatchRuleSecurityPolicyRequest(),
+ client.remove_rule(
+ compute.RemoveRuleSecurityPolicyRequest(),
project="project_value",
security_policy="security_policy_value",
- security_policy_rule_resource=compute.SecurityPolicyRule(
- action="action_value"
- ),
)
-def test_patch_rule_unary_rest_error():
+def test_remove_rule_rest_error():
client = SecurityPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4199,28 +6442,6 @@ def test_remove_rule_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_remove_rule_unary_rest_required_fields(
@@ -4532,6 +6753,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = SecurityPoliciesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_security_policies_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -4573,6 +6807,14 @@ def test_security_policies_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_security_policies_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_service_attachments.py b/tests/unit/gapic/compute_v1/test_service_attachments.py
index b41fd860b..6a605b46f 100644
--- a/tests/unit/gapic/compute_v1/test_service_attachments.py
+++ b/tests/unit/gapic/compute_v1/test_service_attachments.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -911,7 +913,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -959,10 +961,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -987,7 +989,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteServiceAttachmentRequest,
):
transport_class = transports.ServiceAttachmentsRestTransport
@@ -1060,14 +1062,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.ServiceAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1086,7 +1088,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.ServiceAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1126,7 +1128,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1138,7 +1140,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteServiceAttachmentRequest
):
client = ServiceAttachmentsClient(
@@ -1163,10 +1165,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1200,7 +1202,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1213,7 +1215,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1222,7 +1224,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteServiceAttachmentRequest(),
project="project_value",
region="region_value",
@@ -1230,7 +1232,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1239,11 +1241,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetServiceAttachmentRequest,
+ compute.DeleteServiceAttachmentRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1260,52 +1262,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ServiceAttachment(
- connection_preference="connection_preference_value",
- consumer_reject_lists=["consumer_reject_lists_value"],
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- domain_names=["domain_names_value"],
- enable_proxy_protocol=True,
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- nat_subnets=["nat_subnets_value"],
- producer_forwarding_rule="producer_forwarding_rule_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- target_service="target_service_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ServiceAttachment.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.ServiceAttachment)
- assert response.connection_preference == "connection_preference_value"
- assert response.consumer_reject_lists == ["consumer_reject_lists_value"]
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.domain_names == ["domain_names_value"]
- assert response.enable_proxy_protocol is True
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.nat_subnets == ["nat_subnets_value"]
- assert response.producer_forwarding_rule == "producer_forwarding_rule_value"
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.target_service == "target_service_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetServiceAttachmentRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteServiceAttachmentRequest,
+):
transport_class = transports.ServiceAttachmentsRestTransport
request_init = {}
@@ -1323,7 +1319,7 @@ def test_get_rest_required_fields(request_type=compute.GetServiceAttachmentReque
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1334,7 +1330,9 @@ def test_get_rest_required_fields(request_type=compute.GetServiceAttachmentReque
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1352,7 +1350,7 @@ def test_get_rest_required_fields(request_type=compute.GetServiceAttachmentReque
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.ServiceAttachment()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1363,32 +1361,32 @@ def test_get_rest_required_fields(request_type=compute.GetServiceAttachmentReque
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ServiceAttachment.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.ServiceAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -1400,7 +1398,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.ServiceAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1413,9 +1411,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ServiceAttachmentsRestInterceptor, "post_get"
+ transports.ServiceAttachmentsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.ServiceAttachmentsRestInterceptor, "pre_get"
+ transports.ServiceAttachmentsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1430,19 +1428,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.ServiceAttachment.to_json(
- compute.ServiceAttachment()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetServiceAttachmentRequest()
+ request = compute.DeleteServiceAttachmentRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.ServiceAttachment
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1454,8 +1450,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetServiceAttachmentRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteServiceAttachmentRequest
):
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1479,10 +1475,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1491,7 +1487,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ServiceAttachment()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1511,12 +1507,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ServiceAttachment.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1529,7 +1525,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1538,15 +1534,15 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetServiceAttachmentRequest(),
+ client.delete_unary(
+ compute.DeleteServiceAttachmentRequest(),
project="project_value",
region="region_value",
service_attachment="service_attachment_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1555,53 +1551,79 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicyServiceAttachmentRequest,
+ compute.GetServiceAttachmentRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_get_rest(request_type):
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "service_attachment": "sample3",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.ServiceAttachment(
+ connection_preference="connection_preference_value",
+ consumer_reject_lists=["consumer_reject_lists_value"],
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ domain_names=["domain_names_value"],
+ enable_proxy_protocol=True,
+ fingerprint="fingerprint_value",
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ nat_subnets=["nat_subnets_value"],
+ producer_forwarding_rule="producer_forwarding_rule_value",
+ region="region_value",
+ self_link="self_link_value",
+ target_service="target_service_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.ServiceAttachment.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, compute.ServiceAttachment)
+ assert response.connection_preference == "connection_preference_value"
+ assert response.consumer_reject_lists == ["consumer_reject_lists_value"]
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.domain_names == ["domain_names_value"]
+ assert response.enable_proxy_protocol is True
+ assert response.fingerprint == "fingerprint_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.nat_subnets == ["nat_subnets_value"]
+ assert response.producer_forwarding_rule == "producer_forwarding_rule_value"
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.target_service == "target_service_value"
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicyServiceAttachmentRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetServiceAttachmentRequest):
transport_class = transports.ServiceAttachmentsRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
- request_init["resource"] = ""
+ request_init["service_attachment"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1613,20 +1635,18 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
- jsonified_request["resource"] = "resource_value"
+ jsonified_request["serviceAttachment"] = "service_attachment_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1634,8 +1654,8 @@ def test_get_iam_policy_rest_required_fields(
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
+ assert "serviceAttachment" in jsonified_request
+ assert jsonified_request["serviceAttachment"] == "service_attachment_value"
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1644,7 +1664,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.ServiceAttachment()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1662,37 +1682,37 @@ def test_get_iam_policy_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.ServiceAttachment.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.ServiceAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
+ set(())
& set(
(
"project",
"region",
- "resource",
+ "serviceAttachment",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.ServiceAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1705,9 +1725,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ServiceAttachmentsRestInterceptor, "post_get_iam_policy"
+ transports.ServiceAttachmentsRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.ServiceAttachmentsRestInterceptor, "pre_get_iam_policy"
+ transports.ServiceAttachmentsRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1722,17 +1742,19 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.ServiceAttachment.to_json(
+ compute.ServiceAttachment()
+ )
- request = compute.GetIamPolicyServiceAttachmentRequest()
+ request = compute.GetServiceAttachmentRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.ServiceAttachment
- client.get_iam_policy(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1744,8 +1766,8 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.GetIamPolicyServiceAttachmentRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetServiceAttachmentRequest
):
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1753,7 +1775,11 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "service_attachment": "sample3",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1765,10 +1791,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.get(request)
-def test_get_iam_policy_rest_flattened():
+def test_get_rest_flattened():
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1777,45 +1803,45 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.ServiceAttachment()
# get arguments that satisfy an http rule for this method
sample_request = {
"project": "sample1",
"region": "sample2",
- "resource": "sample3",
+ "service_attachment": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- resource="resource_value",
+ service_attachment="service_attachment_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.ServiceAttachment.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/serviceAttachments/{resource}/getIamPolicy"
+ "%s/compute/v1/projects/{project}/regions/{region}/serviceAttachments/{service_attachment}"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1824,15 +1850,15 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicyServiceAttachmentRequest(),
+ client.get(
+ compute.GetServiceAttachmentRequest(),
project="project_value",
region="region_value",
- resource="resource_value",
+ service_attachment="service_attachment_value",
)
-def test_get_iam_policy_rest_error():
+def test_get_rest_error():
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1841,121 +1867,53 @@ def test_get_iam_policy_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertServiceAttachmentRequest,
+ compute.GetIamPolicyServiceAttachmentRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_iam_policy_rest(request_type):
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["service_attachment_resource"] = {
- "connected_endpoints": [
- {
- "endpoint": "endpoint_value",
- "psc_connection_id": 1793,
- "status": "status_value",
- }
- ],
- "connection_preference": "connection_preference_value",
- "consumer_accept_lists": [
- {"connection_limit": 1710, "project_id_or_num": "project_id_or_num_value"}
- ],
- "consumer_reject_lists": [
- "consumer_reject_lists_value_1",
- "consumer_reject_lists_value_2",
- ],
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "domain_names": ["domain_names_value_1", "domain_names_value_2"],
- "enable_proxy_protocol": True,
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "nat_subnets": ["nat_subnets_value_1", "nat_subnets_value_2"],
- "producer_forwarding_rule": "producer_forwarding_rule_value",
- "psc_service_attachment_id": {"high": 416, "low": 338},
- "region": "region_value",
- "self_link": "self_link_value",
- "target_service": "target_service_value",
- }
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
- kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
- self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get_iam_policy(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertServiceAttachmentRequest,
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicyServiceAttachmentRequest,
):
transport_class = transports.ServiceAttachmentsRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
+ request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1967,19 +1925,20 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
+ jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1987,6 +1946,8 @@ def test_insert_unary_rest_required_fields(
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1995,7 +1956,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Policy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2006,45 +1967,44 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get_iam_policy(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_iam_policy_rest_unset_required_fields():
transport = transports.ServiceAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(("optionsRequestedPolicyVersion",))
& set(
(
"project",
"region",
- "serviceAttachmentResource",
+ "resource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_iam_policy_rest_interceptors(null_interceptor):
transport = transports.ServiceAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2057,9 +2017,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ServiceAttachmentsRestInterceptor, "post_insert"
+ transports.ServiceAttachmentsRestInterceptor, "post_get_iam_policy"
) as post, mock.patch.object(
- transports.ServiceAttachmentsRestInterceptor, "pre_insert"
+ transports.ServiceAttachmentsRestInterceptor, "pre_get_iam_policy"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2074,17 +2034,17 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
- request = compute.InsertServiceAttachmentRequest()
+ request = compute.GetIamPolicyServiceAttachmentRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.Policy
- client.insert_unary(
+ client.get_iam_policy(
request,
metadata=[
("key", "val"),
@@ -2096,8 +2056,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertServiceAttachmentRequest
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetIamPolicyServiceAttachmentRequest
):
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2105,38 +2065,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["service_attachment_resource"] = {
- "connected_endpoints": [
- {
- "endpoint": "endpoint_value",
- "psc_connection_id": 1793,
- "status": "status_value",
- }
- ],
- "connection_preference": "connection_preference_value",
- "consumer_accept_lists": [
- {"connection_limit": 1710, "project_id_or_num": "project_id_or_num_value"}
- ],
- "consumer_reject_lists": [
- "consumer_reject_lists_value_1",
- "consumer_reject_lists_value_2",
- ],
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "domain_names": ["domain_names_value_1", "domain_names_value_2"],
- "enable_proxy_protocol": True,
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "nat_subnets": ["nat_subnets_value_1", "nat_subnets_value_2"],
- "producer_forwarding_rule": "producer_forwarding_rule_value",
- "psc_service_attachment_id": {"high": 416, "low": 338},
- "region": "region_value",
- "self_link": "self_link_value",
- "target_service": "target_service_value",
- }
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2148,10 +2077,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get_iam_policy(request)
-def test_insert_unary_rest_flattened():
+def test_get_iam_policy_rest_flattened():
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2160,47 +2089,45 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Policy()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "resource": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- service_attachment_resource=compute.ServiceAttachment(
- connected_endpoints=[
- compute.ServiceAttachmentConnectedEndpoint(
- endpoint="endpoint_value"
- )
- ]
- ),
+ resource="resource_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get_iam_policy(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/serviceAttachments"
+ "%s/compute/v1/projects/{project}/regions/{region}/serviceAttachments/{resource}/getIamPolicy"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2209,21 +2136,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertServiceAttachmentRequest(),
+ client.get_iam_policy(
+ compute.GetIamPolicyServiceAttachmentRequest(),
project="project_value",
region="region_value",
- service_attachment_resource=compute.ServiceAttachment(
- connected_endpoints=[
- compute.ServiceAttachmentConnectedEndpoint(
- endpoint="endpoint_value"
- )
- ]
- ),
+ resource="resource_value",
)
-def test_insert_unary_rest_error():
+def test_get_iam_policy_rest_error():
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2232,11 +2153,11 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListServiceAttachmentsRequest,
+ compute.InsertServiceAttachmentRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_insert_rest(request_type):
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2244,40 +2165,1220 @@ def test_list_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2"}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.ServiceAttachmentList(
- id="id_value",
- kind="kind_value",
- next_page_token="next_page_token_value",
- self_link="self_link_value",
+ request_init["service_attachment_resource"] = {
+ "connected_endpoints": [
+ {
+ "endpoint": "endpoint_value",
+ "psc_connection_id": 1793,
+ "status": "status_value",
+ }
+ ],
+ "connection_preference": "connection_preference_value",
+ "consumer_accept_lists": [
+ {"connection_limit": 1710, "project_id_or_num": "project_id_or_num_value"}
+ ],
+ "consumer_reject_lists": [
+ "consumer_reject_lists_value_1",
+ "consumer_reject_lists_value_2",
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "domain_names": ["domain_names_value_1", "domain_names_value_2"],
+ "enable_proxy_protocol": True,
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_subnets": ["nat_subnets_value_1", "nat_subnets_value_2"],
+ "producer_forwarding_rule": "producer_forwarding_rule_value",
+ "psc_service_attachment_id": {"high": 416, "low": 338},
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "target_service": "target_service_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertServiceAttachmentRequest,
+):
+ transport_class = transports.ServiceAttachmentsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.ServiceAttachmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "region",
+ "serviceAttachmentResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.ServiceAttachmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ServiceAttachmentsRestInterceptor(),
+ )
+ client = ServiceAttachmentsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ServiceAttachmentsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.ServiceAttachmentsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertServiceAttachmentRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertServiceAttachmentRequest
+):
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["service_attachment_resource"] = {
+ "connected_endpoints": [
+ {
+ "endpoint": "endpoint_value",
+ "psc_connection_id": 1793,
+ "status": "status_value",
+ }
+ ],
+ "connection_preference": "connection_preference_value",
+ "consumer_accept_lists": [
+ {"connection_limit": 1710, "project_id_or_num": "project_id_or_num_value"}
+ ],
+ "consumer_reject_lists": [
+ "consumer_reject_lists_value_1",
+ "consumer_reject_lists_value_2",
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "domain_names": ["domain_names_value_1", "domain_names_value_2"],
+ "enable_proxy_protocol": True,
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_subnets": ["nat_subnets_value_1", "nat_subnets_value_2"],
+ "producer_forwarding_rule": "producer_forwarding_rule_value",
+ "psc_service_attachment_id": {"high": 416, "low": 338},
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "target_service": "target_service_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ service_attachment_resource=compute.ServiceAttachment(
+ connected_endpoints=[
+ compute.ServiceAttachmentConnectedEndpoint(
+ endpoint="endpoint_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/serviceAttachments"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertServiceAttachmentRequest(),
+ project="project_value",
+ region="region_value",
+ service_attachment_resource=compute.ServiceAttachment(
+ connected_endpoints=[
+ compute.ServiceAttachmentConnectedEndpoint(
+ endpoint="endpoint_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertServiceAttachmentRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["service_attachment_resource"] = {
+ "connected_endpoints": [
+ {
+ "endpoint": "endpoint_value",
+ "psc_connection_id": 1793,
+ "status": "status_value",
+ }
+ ],
+ "connection_preference": "connection_preference_value",
+ "consumer_accept_lists": [
+ {"connection_limit": 1710, "project_id_or_num": "project_id_or_num_value"}
+ ],
+ "consumer_reject_lists": [
+ "consumer_reject_lists_value_1",
+ "consumer_reject_lists_value_2",
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "domain_names": ["domain_names_value_1", "domain_names_value_2"],
+ "enable_proxy_protocol": True,
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_subnets": ["nat_subnets_value_1", "nat_subnets_value_2"],
+ "producer_forwarding_rule": "producer_forwarding_rule_value",
+ "psc_service_attachment_id": {"high": 416, "low": 338},
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "target_service": "target_service_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertServiceAttachmentRequest,
+):
+ transport_class = transports.ServiceAttachmentsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.ServiceAttachmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "region",
+ "serviceAttachmentResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.ServiceAttachmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ServiceAttachmentsRestInterceptor(),
+ )
+ client = ServiceAttachmentsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ServiceAttachmentsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.ServiceAttachmentsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertServiceAttachmentRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertServiceAttachmentRequest
+):
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["service_attachment_resource"] = {
+ "connected_endpoints": [
+ {
+ "endpoint": "endpoint_value",
+ "psc_connection_id": 1793,
+ "status": "status_value",
+ }
+ ],
+ "connection_preference": "connection_preference_value",
+ "consumer_accept_lists": [
+ {"connection_limit": 1710, "project_id_or_num": "project_id_or_num_value"}
+ ],
+ "consumer_reject_lists": [
+ "consumer_reject_lists_value_1",
+ "consumer_reject_lists_value_2",
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "domain_names": ["domain_names_value_1", "domain_names_value_2"],
+ "enable_proxy_protocol": True,
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_subnets": ["nat_subnets_value_1", "nat_subnets_value_2"],
+ "producer_forwarding_rule": "producer_forwarding_rule_value",
+ "psc_service_attachment_id": {"high": 416, "low": 338},
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "target_service": "target_service_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ service_attachment_resource=compute.ServiceAttachment(
+ connected_endpoints=[
+ compute.ServiceAttachmentConnectedEndpoint(
+ endpoint="endpoint_value"
+ )
+ ]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/serviceAttachments"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertServiceAttachmentRequest(),
+ project="project_value",
+ region="region_value",
+ service_attachment_resource=compute.ServiceAttachment(
+ connected_endpoints=[
+ compute.ServiceAttachmentConnectedEndpoint(
+ endpoint="endpoint_value"
+ )
+ ]
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListServiceAttachmentsRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ServiceAttachmentList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ServiceAttachmentList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListServiceAttachmentsRequest):
+ transport_class = transports.ServiceAttachmentsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ServiceAttachmentList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ServiceAttachmentList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.ServiceAttachmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.ServiceAttachmentsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.ServiceAttachmentsRestInterceptor(),
+ )
+ client = ServiceAttachmentsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.ServiceAttachmentsRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.ServiceAttachmentsRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.ServiceAttachmentList.to_json(
+ compute.ServiceAttachmentList()
+ )
+
+ request = compute.ListServiceAttachmentsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.ServiceAttachmentList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListServiceAttachmentsRequest
+):
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.ServiceAttachmentList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.ServiceAttachmentList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/serviceAttachments"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListServiceAttachmentsRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.ServiceAttachmentList(
+ items=[
+ compute.ServiceAttachment(),
+ compute.ServiceAttachment(),
+ compute.ServiceAttachment(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.ServiceAttachmentList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.ServiceAttachmentList(
+ items=[
+ compute.ServiceAttachment(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.ServiceAttachmentList(
+ items=[
+ compute.ServiceAttachment(),
+ compute.ServiceAttachment(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.ServiceAttachmentList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.ServiceAttachment) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchServiceAttachmentRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = ServiceAttachmentsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "service_attachment": "sample3",
+ }
+ request_init["service_attachment_resource"] = {
+ "connected_endpoints": [
+ {
+ "endpoint": "endpoint_value",
+ "psc_connection_id": 1793,
+ "status": "status_value",
+ }
+ ],
+ "connection_preference": "connection_preference_value",
+ "consumer_accept_lists": [
+ {"connection_limit": 1710, "project_id_or_num": "project_id_or_num_value"}
+ ],
+ "consumer_reject_lists": [
+ "consumer_reject_lists_value_1",
+ "consumer_reject_lists_value_2",
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "domain_names": ["domain_names_value_1", "domain_names_value_2"],
+ "enable_proxy_protocol": True,
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_subnets": ["nat_subnets_value_1", "nat_subnets_value_2"],
+ "producer_forwarding_rule": "producer_forwarding_rule_value",
+ "psc_service_attachment_id": {"high": 416, "low": 338},
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "target_service": "target_service_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ServiceAttachmentList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(request_type=compute.ListServiceAttachmentsRequest):
+def test_patch_rest_required_fields(request_type=compute.PatchServiceAttachmentRequest):
transport_class = transports.ServiceAttachmentsRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
+ request_init["service_attachment"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2289,27 +3390,20 @@ def test_list_rest_required_fields(request_type=compute.ListServiceAttachmentsRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
+ jsonified_request["serviceAttachment"] = "service_attachment_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2317,6 +3411,8 @@ def test_list_rest_required_fields(request_type=compute.ListServiceAttachmentsRe
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
+ assert "serviceAttachment" in jsonified_request
+ assert jsonified_request["serviceAttachment"] == "service_attachment_value"
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2325,7 +3421,7 @@ def test_list_rest_required_fields(request_type=compute.ListServiceAttachmentsRe
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.ServiceAttachmentList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2336,51 +3432,46 @@ def test_list_rest_required_fields(request_type=compute.ListServiceAttachmentsRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ServiceAttachmentList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_rest_unset_required_fields():
transport = transports.ServiceAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("requestId",))
& set(
(
"project",
"region",
+ "serviceAttachment",
+ "serviceAttachmentResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.ServiceAttachmentsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2393,9 +3484,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.ServiceAttachmentsRestInterceptor, "post_list"
+ transports.ServiceAttachmentsRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.ServiceAttachmentsRestInterceptor, "pre_list"
+ transports.ServiceAttachmentsRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2410,19 +3501,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.ServiceAttachmentList.to_json(
- compute.ServiceAttachmentList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListServiceAttachmentsRequest()
+ request = compute.PatchServiceAttachmentRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.ServiceAttachmentList
+ post.return_value = compute.Operation
- client.list(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -2434,8 +3523,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListServiceAttachmentsRequest
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchServiceAttachmentRequest
):
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2443,7 +3532,42 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {
+ "project": "sample1",
+ "region": "sample2",
+ "service_attachment": "sample3",
+ }
+ request_init["service_attachment_resource"] = {
+ "connected_endpoints": [
+ {
+ "endpoint": "endpoint_value",
+ "psc_connection_id": 1793,
+ "status": "status_value",
+ }
+ ],
+ "connection_preference": "connection_preference_value",
+ "consumer_accept_lists": [
+ {"connection_limit": 1710, "project_id_or_num": "project_id_or_num_value"}
+ ],
+ "consumer_reject_lists": [
+ "consumer_reject_lists_value_1",
+ "consumer_reject_lists_value_2",
+ ],
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "domain_names": ["domain_names_value_1", "domain_names_value_2"],
+ "enable_proxy_protocol": True,
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "nat_subnets": ["nat_subnets_value_1", "nat_subnets_value_2"],
+ "producer_forwarding_rule": "producer_forwarding_rule_value",
+ "psc_service_attachment_id": {"high": 416, "low": 338},
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "target_service": "target_service_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2455,10 +3579,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch(request)
-def test_list_rest_flattened():
+def test_patch_rest_flattened():
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2467,40 +3591,52 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.ServiceAttachmentList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "service_attachment": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ service_attachment="service_attachment_value",
+ service_attachment_resource=compute.ServiceAttachment(
+ connected_endpoints=[
+ compute.ServiceAttachmentConnectedEndpoint(
+ endpoint="endpoint_value"
+ )
+ ]
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.ServiceAttachmentList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/serviceAttachments"
+ "%s/compute/v1/projects/{project}/regions/{region}/serviceAttachments/{service_attachment}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = ServiceAttachmentsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2509,73 +3645,26 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListServiceAttachmentsRequest(),
+ client.patch(
+ compute.PatchServiceAttachmentRequest(),
project="project_value",
region="region_value",
+ service_attachment="service_attachment_value",
+ service_attachment_resource=compute.ServiceAttachment(
+ connected_endpoints=[
+ compute.ServiceAttachmentConnectedEndpoint(
+ endpoint="endpoint_value"
+ )
+ ]
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_rest_error():
client = ServiceAttachmentsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.ServiceAttachmentList(
- items=[
- compute.ServiceAttachment(),
- compute.ServiceAttachment(),
- compute.ServiceAttachment(),
- ],
- next_page_token="abc",
- ),
- compute.ServiceAttachmentList(
- items=[],
- next_page_token="def",
- ),
- compute.ServiceAttachmentList(
- items=[
- compute.ServiceAttachment(),
- ],
- next_page_token="ghi",
- ),
- compute.ServiceAttachmentList(
- items=[
- compute.ServiceAttachment(),
- compute.ServiceAttachment(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.ServiceAttachmentList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.ServiceAttachment) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
@@ -2667,28 +3756,6 @@ def test_patch_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_patch_unary_rest_required_fields(
@@ -3805,6 +4872,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = ServiceAttachmentsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_service_attachments_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3844,6 +4924,14 @@ def test_service_attachments_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_service_attachments_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_snapshots.py b/tests/unit/gapic/compute_v1/test_snapshots.py
index 4a3ee719d..023e15734 100644
--- a/tests/unit/gapic/compute_v1/test_snapshots.py
+++ b/tests/unit/gapic/compute_v1/test_snapshots.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -512,7 +514,7 @@ def test_snapshots_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -556,10 +558,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -584,7 +586,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(request_type=compute.DeleteSnapshotRequest):
+def test_delete_rest_required_fields(request_type=compute.DeleteSnapshotRequest):
transport_class = transports.SnapshotsRestTransport
request_init = {}
@@ -651,14 +653,14 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteSnapshotRe
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.SnapshotsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -676,7 +678,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.SnapshotsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.SnapshotsRestInterceptor(),
@@ -714,7 +716,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -726,7 +728,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteSnapshotRequest
):
client = SnapshotsClient(
@@ -747,10 +749,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -779,7 +781,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -792,7 +794,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -801,14 +803,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteSnapshotRequest(),
project="project_value",
snapshot="snapshot_value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -817,11 +819,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetSnapshotRequest,
+ compute.DeleteSnapshotRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -834,64 +836,44 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Snapshot(
- auto_created=True,
- chain_name="chain_name_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- disk_size_gb=1261,
- download_bytes=1502,
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- label_fingerprint="label_fingerprint_value",
- license_codes=[1360],
- licenses=["licenses_value"],
- location_hint="location_hint_value",
name="name_value",
- satisfies_pzs=True,
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- source_disk="source_disk_value",
- source_disk_id="source_disk_id_value",
- status="status_value",
- storage_bytes=1403,
- storage_bytes_status="storage_bytes_status_value",
- storage_locations=["storage_locations_value"],
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Snapshot.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Snapshot)
- assert response.auto_created is True
- assert response.chain_name == "chain_name_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.disk_size_gb == 1261
- assert response.download_bytes == 1502
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.label_fingerprint == "label_fingerprint_value"
- assert response.license_codes == [1360]
- assert response.licenses == ["licenses_value"]
- assert response.location_hint == "location_hint_value"
- assert response.name == "name_value"
- assert response.satisfies_pzs is True
- assert response.self_link == "self_link_value"
- assert response.source_disk == "source_disk_value"
- assert response.source_disk_id == "source_disk_id_value"
- assert response.status == "status_value"
- assert response.storage_bytes == 1403
- assert response.storage_bytes_status == "storage_bytes_status_value"
- assert response.storage_locations == ["storage_locations_value"]
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetSnapshotRequest):
+def test_delete_unary_rest_required_fields(request_type=compute.DeleteSnapshotRequest):
transport_class = transports.SnapshotsRestTransport
request_init = {}
@@ -908,7 +890,7 @@ def test_get_rest_required_fields(request_type=compute.GetSnapshotRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -918,7 +900,9 @@ def test_get_rest_required_fields(request_type=compute.GetSnapshotRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -934,7 +918,7 @@ def test_get_rest_required_fields(request_type=compute.GetSnapshotRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Snapshot()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -945,32 +929,32 @@ def test_get_rest_required_fields(request_type=compute.GetSnapshotRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Snapshot.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.SnapshotsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -981,7 +965,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.SnapshotsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.SnapshotsRestInterceptor(),
@@ -992,9 +976,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SnapshotsRestInterceptor, "post_get"
+ transports.SnapshotsRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.SnapshotsRestInterceptor, "pre_get"
+ transports.SnapshotsRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1009,17 +993,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Snapshot.to_json(compute.Snapshot())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetSnapshotRequest()
+ request = compute.DeleteSnapshotRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Snapshot
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1031,8 +1015,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetSnapshotRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteSnapshotRequest
):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1052,10 +1036,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1064,7 +1048,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Snapshot()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "snapshot": "sample2"}
@@ -1079,12 +1063,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Snapshot.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1097,7 +1081,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1106,14 +1090,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetSnapshotRequest(),
+ client.delete_unary(
+ compute.DeleteSnapshotRequest(),
project="project_value",
snapshot="snapshot_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1122,52 +1106,86 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicySnapshotRequest,
+ compute.GetSnapshotRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_get_rest(request_type):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
+ request_init = {"project": "sample1", "snapshot": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Snapshot(
+ auto_created=True,
+ chain_name="chain_name_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ disk_size_gb=1261,
+ download_bytes=1502,
+ id=205,
+ kind="kind_value",
+ label_fingerprint="label_fingerprint_value",
+ license_codes=[1360],
+ licenses=["licenses_value"],
+ location_hint="location_hint_value",
+ name="name_value",
+ satisfies_pzs=True,
+ self_link="self_link_value",
+ source_disk="source_disk_value",
+ source_disk_id="source_disk_id_value",
+ status="status_value",
+ storage_bytes=1403,
+ storage_bytes_status="storage_bytes_status_value",
+ storage_locations=["storage_locations_value"],
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Snapshot.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, compute.Snapshot)
+ assert response.auto_created is True
+ assert response.chain_name == "chain_name_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.disk_size_gb == 1261
+ assert response.download_bytes == 1502
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.label_fingerprint == "label_fingerprint_value"
+ assert response.license_codes == [1360]
+ assert response.licenses == ["licenses_value"]
+ assert response.location_hint == "location_hint_value"
+ assert response.name == "name_value"
+ assert response.satisfies_pzs is True
+ assert response.self_link == "self_link_value"
+ assert response.source_disk == "source_disk_value"
+ assert response.source_disk_id == "source_disk_id_value"
+ assert response.status == "status_value"
+ assert response.storage_bytes == 1403
+ assert response.storage_bytes_status == "storage_bytes_status_value"
+ assert response.storage_locations == ["storage_locations_value"]
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicySnapshotRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetSnapshotRequest):
transport_class = transports.SnapshotsRestTransport
request_init = {}
request_init["project"] = ""
- request_init["resource"] = ""
+ request_init["snapshot"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1179,26 +1197,24 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
- jsonified_request["resource"] = "resource_value"
+ jsonified_request["snapshot"] = "snapshot_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
+ assert "snapshot" in jsonified_request
+ assert jsonified_request["snapshot"] == "snapshot_value"
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1207,7 +1223,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Snapshot()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1225,36 +1241,36 @@ def test_get_iam_policy_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Snapshot.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.SnapshotsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
+ set(())
& set(
(
"project",
- "resource",
+ "snapshot",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.SnapshotsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.SnapshotsRestInterceptor(),
@@ -1265,9 +1281,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SnapshotsRestInterceptor, "post_get_iam_policy"
+ transports.SnapshotsRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.SnapshotsRestInterceptor, "pre_get_iam_policy"
+ transports.SnapshotsRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1282,17 +1298,17 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Snapshot.to_json(compute.Snapshot())
- request = compute.GetIamPolicySnapshotRequest()
+ request = compute.GetSnapshotRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Snapshot
- client.get_iam_policy(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1304,8 +1320,8 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.GetIamPolicySnapshotRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetSnapshotRequest
):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1313,7 +1329,7 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
+ request_init = {"project": "sample1", "snapshot": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1325,10 +1341,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.get(request)
-def test_get_iam_policy_rest_flattened():
+def test_get_rest_flattened():
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1337,40 +1353,40 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Snapshot()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "resource": "sample2"}
+ sample_request = {"project": "sample1", "snapshot": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- resource="resource_value",
+ snapshot="snapshot_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Snapshot.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/snapshots/{resource}/getIamPolicy"
+ "%s/compute/v1/projects/{project}/global/snapshots/{snapshot}"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1379,14 +1395,14 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicySnapshotRequest(),
+ client.get(
+ compute.GetSnapshotRequest(),
project="project_value",
- resource="resource_value",
+ snapshot="snapshot_value",
)
-def test_get_iam_policy_rest_error():
+def test_get_rest_error():
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1395,119 +1411,52 @@ def test_get_iam_policy_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertSnapshotRequest,
+ compute.GetIamPolicySnapshotRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_iam_policy_rest(request_type):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["snapshot_resource"] = {
- "auto_created": True,
- "chain_name": "chain_name_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "disk_size_gb": 1261,
- "download_bytes": 1502,
- "id": 205,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "license_codes": [1361, 1362],
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "location_hint": "location_hint_value",
- "name": "name_value",
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "snapshot_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "source_disk": "source_disk_value",
- "source_disk_encryption_key": {},
- "source_disk_id": "source_disk_id_value",
- "status": "status_value",
- "storage_bytes": 1403,
- "storage_bytes_status": "storage_bytes_status_value",
- "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
- }
+ request_init = {"project": "sample1", "resource": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
- creation_timestamp="creation_timestamp_value",
- description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
- id=205,
- insert_time="insert_time_value",
- kind="kind_value",
- name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
- self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get_iam_policy(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
-def test_insert_unary_rest_required_fields(request_type=compute.InsertSnapshotRequest):
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicySnapshotRequest,
+):
transport_class = transports.SnapshotsRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1519,23 +1468,26 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertSnapshotRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1544,7 +1496,7 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertSnapshotRe
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Policy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1555,44 +1507,43 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertSnapshotRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get_iam_policy(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_iam_policy_rest_unset_required_fields():
transport = transports.SnapshotsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(("optionsRequestedPolicyVersion",))
& set(
(
"project",
- "snapshotResource",
+ "resource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_iam_policy_rest_interceptors(null_interceptor):
transport = transports.SnapshotsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.SnapshotsRestInterceptor(),
@@ -1603,9 +1554,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SnapshotsRestInterceptor, "post_insert"
+ transports.SnapshotsRestInterceptor, "post_get_iam_policy"
) as post, mock.patch.object(
- transports.SnapshotsRestInterceptor, "pre_insert"
+ transports.SnapshotsRestInterceptor, "pre_get_iam_policy"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1620,17 +1571,17 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
- request = compute.InsertSnapshotRequest()
+ request = compute.GetIamPolicySnapshotRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.Policy
- client.insert_unary(
+ client.get_iam_policy(
request,
metadata=[
("key", "val"),
@@ -1642,8 +1593,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertSnapshotRequest
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetIamPolicySnapshotRequest
):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1651,39 +1602,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["snapshot_resource"] = {
- "auto_created": True,
- "chain_name": "chain_name_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "disk_size_gb": 1261,
- "download_bytes": 1502,
- "id": 205,
- "kind": "kind_value",
- "label_fingerprint": "label_fingerprint_value",
- "labels": {},
- "license_codes": [1361, 1362],
- "licenses": ["licenses_value_1", "licenses_value_2"],
- "location_hint": "location_hint_value",
- "name": "name_value",
- "satisfies_pzs": True,
- "self_link": "self_link_value",
- "snapshot_encryption_key": {
- "kms_key_name": "kms_key_name_value",
- "kms_key_service_account": "kms_key_service_account_value",
- "raw_key": "raw_key_value",
- "rsa_encrypted_key": "rsa_encrypted_key_value",
- "sha256": "sha256_value",
- },
- "source_disk": "source_disk_value",
- "source_disk_encryption_key": {},
- "source_disk_id": "source_disk_id_value",
- "status": "status_value",
- "storage_bytes": 1403,
- "storage_bytes_status": "storage_bytes_status_value",
- "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
- }
+ request_init = {"project": "sample1", "resource": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1695,10 +1614,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get_iam_policy(request)
-def test_insert_unary_rest_flattened():
+def test_get_iam_policy_rest_flattened():
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1707,40 +1626,40 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Policy()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "resource": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- snapshot_resource=compute.Snapshot(auto_created=True),
+ resource="resource_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get_iam_policy(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/snapshots"
+ "%s/compute/v1/projects/{project}/global/snapshots/{resource}/getIamPolicy"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1749,14 +1668,14 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertSnapshotRequest(),
+ client.get_iam_policy(
+ compute.GetIamPolicySnapshotRequest(),
project="project_value",
- snapshot_resource=compute.Snapshot(auto_created=True),
+ resource="resource_value",
)
-def test_insert_unary_rest_error():
+def test_get_iam_policy_rest_error():
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1765,11 +1684,11 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListSnapshotsRequest,
+ compute.InsertSnapshotRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_insert_rest(request_type):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1777,35 +1696,103 @@ def test_list_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
- request = request_type(request_init)
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(type(client.transport._session), "request") as req:
- # Designate an appropriate value for the returned response.
- return_value = compute.SnapshotList(
- id="id_value",
- kind="kind_value",
- next_page_token="next_page_token_value",
- self_link="self_link_value",
- )
-
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 200
- json_return_value = compute.SnapshotList.to_json(return_value)
- response_value._content = json_return_value.encode("UTF-8")
- req.return_value = response_value
- response = client.list(request)
-
- # Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
-
+ request_init["snapshot_resource"] = {
+ "auto_created": True,
+ "chain_name": "chain_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "download_bytes": 1502,
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "snapshot_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "status": "status_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
+ request = request_type(request_init)
-def test_list_rest_required_fields(request_type=compute.ListSnapshotsRequest):
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertSnapshotRequest):
transport_class = transports.SnapshotsRestTransport
request_init = {}
@@ -1821,7 +1808,7 @@ def test_list_rest_required_fields(request_type=compute.ListSnapshotsRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1830,17 +1817,9 @@ def test_list_rest_required_fields(request_type=compute.ListSnapshotsRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1854,7 +1833,7 @@ def test_list_rest_required_fields(request_type=compute.ListSnapshotsRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SnapshotList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1865,46 +1844,44 @@ def test_list_rest_required_fields(request_type=compute.ListSnapshotsRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SnapshotList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.SnapshotsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "project",
+ "snapshotResource",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.SnapshotsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.SnapshotsRestInterceptor(),
@@ -1915,9 +1892,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SnapshotsRestInterceptor, "post_list"
+ transports.SnapshotsRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.SnapshotsRestInterceptor, "pre_list"
+ transports.SnapshotsRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1932,17 +1909,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.SnapshotList.to_json(compute.SnapshotList())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListSnapshotsRequest()
+ request = compute.InsertSnapshotRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.SnapshotList
+ post.return_value = compute.Operation
- client.list(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1954,8 +1931,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListSnapshotsRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertSnapshotRequest
):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1964,6 +1941,38 @@ def test_list_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
+ request_init["snapshot_resource"] = {
+ "auto_created": True,
+ "chain_name": "chain_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "download_bytes": 1502,
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "snapshot_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "status": "status_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1975,10 +1984,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.insert(request)
-def test_list_rest_flattened():
+def test_insert_rest_flattened():
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1987,7 +1996,7 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SnapshotList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1"}
@@ -1995,18 +2004,19 @@ def test_list_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ snapshot_resource=compute.Snapshot(auto_created=True),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SnapshotList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -2019,7 +2029,7 @@ def test_list_rest_flattened():
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2028,91 +2038,975 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListSnapshotsRequest(),
+ client.insert(
+ compute.InsertSnapshotRequest(),
project="project_value",
+ snapshot_resource=compute.Snapshot(auto_created=True),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_insert_rest_error():
client = SnapshotsClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.SnapshotList(
- items=[
- compute.Snapshot(),
- compute.Snapshot(),
- compute.Snapshot(),
- ],
- next_page_token="abc",
- ),
- compute.SnapshotList(
- items=[],
- next_page_token="def",
- ),
- compute.SnapshotList(
- items=[
- compute.Snapshot(),
- ],
- next_page_token="ghi",
- ),
- compute.SnapshotList(
- items=[
- compute.Snapshot(),
- compute.Snapshot(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.SnapshotList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Snapshot) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.SetIamPolicySnapshotRequest,
+ compute.InsertSnapshotRequest,
dict,
],
)
-def test_set_iam_policy_rest(request_type):
+def test_insert_unary_rest(request_type):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "resource": "sample2"}
- request_init["global_set_policy_request_resource"] = {
- "bindings": [
- {
+ request_init = {"project": "sample1"}
+ request_init["snapshot_resource"] = {
+ "auto_created": True,
+ "chain_name": "chain_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "download_bytes": 1502,
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "snapshot_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "status": "status_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(request_type=compute.InsertSnapshotRequest):
+ transport_class = transports.SnapshotsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.SnapshotsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "snapshotResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.SnapshotsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.SnapshotsRestInterceptor(),
+ )
+ client = SnapshotsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SnapshotsRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.SnapshotsRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertSnapshotRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertSnapshotRequest
+):
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["snapshot_resource"] = {
+ "auto_created": True,
+ "chain_name": "chain_name_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "disk_size_gb": 1261,
+ "download_bytes": 1502,
+ "id": 205,
+ "kind": "kind_value",
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ "license_codes": [1361, 1362],
+ "licenses": ["licenses_value_1", "licenses_value_2"],
+ "location_hint": "location_hint_value",
+ "name": "name_value",
+ "satisfies_pzs": True,
+ "self_link": "self_link_value",
+ "snapshot_encryption_key": {
+ "kms_key_name": "kms_key_name_value",
+ "kms_key_service_account": "kms_key_service_account_value",
+ "raw_key": "raw_key_value",
+ "rsa_encrypted_key": "rsa_encrypted_key_value",
+ "sha256": "sha256_value",
+ },
+ "source_disk": "source_disk_value",
+ "source_disk_encryption_key": {},
+ "source_disk_id": "source_disk_id_value",
+ "status": "status_value",
+ "storage_bytes": 1403,
+ "storage_bytes_status": "storage_bytes_status_value",
+ "storage_locations": ["storage_locations_value_1", "storage_locations_value_2"],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ snapshot_resource=compute.Snapshot(auto_created=True),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/snapshots"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertSnapshotRequest(),
+ project="project_value",
+ snapshot_resource=compute.Snapshot(auto_created=True),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListSnapshotsRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SnapshotList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SnapshotList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListSnapshotsRequest):
+ transport_class = transports.SnapshotsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SnapshotList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SnapshotList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.SnapshotsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.SnapshotsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.SnapshotsRestInterceptor(),
+ )
+ client = SnapshotsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SnapshotsRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.SnapshotsRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.SnapshotList.to_json(compute.SnapshotList())
+
+ request = compute.ListSnapshotsRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.SnapshotList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListSnapshotsRequest
+):
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SnapshotList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SnapshotList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/snapshots"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListSnapshotsRequest(),
+ project="project_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.SnapshotList(
+ items=[
+ compute.Snapshot(),
+ compute.Snapshot(),
+ compute.Snapshot(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.SnapshotList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.SnapshotList(
+ items=[
+ compute.Snapshot(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.SnapshotList(
+ items=[
+ compute.Snapshot(),
+ compute.Snapshot(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.SnapshotList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Snapshot) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetIamPolicySnapshotRequest,
+ dict,
+ ],
+)
+def test_set_iam_policy_rest(request_type):
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request_init["global_set_policy_request_resource"] = {
+ "bindings": [
+ {
+ "binding_id": "binding_id_value",
+ "condition": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "members": ["members_value_1", "members_value_2"],
+ "role": "role_value",
+ }
+ ],
+ "etag": "etag_value",
+ "policy": {
+ "audit_configs": [
+ {
+ "audit_log_configs": [
+ {
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "ignore_child_exemptions": True,
+ "log_type": "log_type_value",
+ }
+ ],
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "service": "service_value",
+ }
+ ],
+ "bindings": {},
+ "etag": "etag_value",
+ "iam_owned": True,
+ "rules": [
+ {
+ "action": "action_value",
+ "conditions": [
+ {
+ "iam": "iam_value",
+ "op": "op_value",
+ "svc": "svc_value",
+ "sys": "sys_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "ins": ["ins_value_1", "ins_value_2"],
+ "log_configs": [
+ {
+ "cloud_audit": {
+ "authorization_logging_options": {
+ "permission_type": "permission_type_value"
+ },
+ "log_name": "log_name_value",
+ },
+ "counter": {
+ "custom_fields": [
+ {"name": "name_value", "value": "value_value"}
+ ],
+ "field": "field_value",
+ "metric": "metric_value",
+ },
+ "data_access": {"log_mode": "log_mode_value"},
+ }
+ ],
+ "not_ins": ["not_ins_value_1", "not_ins_value_2"],
+ "permissions": ["permissions_value_1", "permissions_value_2"],
+ }
+ ],
+ "version": 774,
+ },
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_set_iam_policy_rest_required_fields(
+ request_type=compute.SetIamPolicySnapshotRequest,
+):
+ transport_class = transports.SnapshotsRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["resource"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["resource"] = "resource_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_iam_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_iam_policy_rest_unset_required_fields():
+ transport = transports.SnapshotsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "globalSetPolicyRequestResource",
+ "project",
+ "resource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_iam_policy_rest_interceptors(null_interceptor):
+ transport = transports.SnapshotsRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None if null_interceptor else transports.SnapshotsRestInterceptor(),
+ )
+ client = SnapshotsClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SnapshotsRestInterceptor, "post_set_iam_policy"
+ ) as post, mock.patch.object(
+ transports.SnapshotsRestInterceptor, "pre_set_iam_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
+
+ request = compute.SetIamPolicySnapshotRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Policy
+
+ client.set_iam_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetIamPolicySnapshotRequest
+):
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request_init["global_set_policy_request_resource"] = {
+ "bindings": [
+ {
"binding_id": "binding_id_value",
"condition": {
"description": "description_value",
@@ -2189,33 +3083,172 @@ def test_set_iam_policy_rest(request_type):
}
request = request_type(request_init)
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_iam_policy(request)
+
+
+def test_set_iam_policy_rest_flattened():
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "resource": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ resource="resource_value",
+ global_set_policy_request_resource=compute.GlobalSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_iam_policy(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/snapshots/{resource}/setIamPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_iam_policy(
+ compute.SetIamPolicySnapshotRequest(),
+ project="project_value",
+ resource="resource_value",
+ global_set_policy_request_resource=compute.GlobalSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
+ ),
+ )
+
+
+def test_set_iam_policy_rest_error():
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetLabelsSnapshotRequest,
+ dict,
+ ],
+)
+def test_set_labels_rest(request_type):
+ client = SnapshotsClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "resource": "sample2"}
+ request_init["global_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
+ }
+ request = request_type(request_init)
+
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.set_labels(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_set_iam_policy_rest_required_fields(
- request_type=compute.SetIamPolicySnapshotRequest,
-):
+def test_set_labels_rest_required_fields(request_type=compute.SetLabelsSnapshotRequest):
transport_class = transports.SnapshotsRestTransport
request_init = {}
@@ -2232,7 +3265,7 @@ def test_set_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).set_labels._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2242,7 +3275,7 @@ def test_set_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).set_labels._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2258,7 +3291,7 @@ def test_set_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2277,28 +3310,28 @@ def test_set_iam_policy_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.set_labels(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_iam_policy_rest_unset_required_fields():
+def test_set_labels_rest_unset_required_fields():
transport = transports.SnapshotsRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.set_labels._get_unset_required_fields({})
assert set(unset_fields) == (
set(())
& set(
(
- "globalSetPolicyRequestResource",
+ "globalSetLabelsRequestResource",
"project",
"resource",
)
@@ -2307,7 +3340,7 @@ def test_set_iam_policy_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_iam_policy_rest_interceptors(null_interceptor):
+def test_set_labels_rest_interceptors(null_interceptor):
transport = transports.SnapshotsRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None if null_interceptor else transports.SnapshotsRestInterceptor(),
@@ -2318,9 +3351,9 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SnapshotsRestInterceptor, "post_set_iam_policy"
+ transports.SnapshotsRestInterceptor, "post_set_labels"
) as post, mock.patch.object(
- transports.SnapshotsRestInterceptor, "pre_set_iam_policy"
+ transports.SnapshotsRestInterceptor, "pre_set_labels"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2335,17 +3368,17 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetIamPolicySnapshotRequest()
+ request = compute.SetLabelsSnapshotRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.set_iam_policy(
+ client.set_labels(
request,
metadata=[
("key", "val"),
@@ -2357,8 +3390,8 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.SetIamPolicySnapshotRequest
+def test_set_labels_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetLabelsSnapshotRequest
):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2367,82 +3400,9 @@ def test_set_iam_policy_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "resource": "sample2"}
- request_init["global_set_policy_request_resource"] = {
- "bindings": [
- {
- "binding_id": "binding_id_value",
- "condition": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "members": ["members_value_1", "members_value_2"],
- "role": "role_value",
- }
- ],
- "etag": "etag_value",
- "policy": {
- "audit_configs": [
- {
- "audit_log_configs": [
- {
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "ignore_child_exemptions": True,
- "log_type": "log_type_value",
- }
- ],
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "service": "service_value",
- }
- ],
- "bindings": {},
- "etag": "etag_value",
- "iam_owned": True,
- "rules": [
- {
- "action": "action_value",
- "conditions": [
- {
- "iam": "iam_value",
- "op": "op_value",
- "svc": "svc_value",
- "sys": "sys_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "description": "description_value",
- "ins": ["ins_value_1", "ins_value_2"],
- "log_configs": [
- {
- "cloud_audit": {
- "authorization_logging_options": {
- "permission_type": "permission_type_value"
- },
- "log_name": "log_name_value",
- },
- "counter": {
- "custom_fields": [
- {"name": "name_value", "value": "value_value"}
- ],
- "field": "field_value",
- "metric": "metric_value",
- },
- "data_access": {"log_mode": "log_mode_value"},
- }
- ],
- "not_ins": ["not_ins_value_1", "not_ins_value_2"],
- "permissions": ["permissions_value_1", "permissions_value_2"],
- }
- ],
- "version": 774,
- },
+ request_init["global_set_labels_request_resource"] = {
+ "label_fingerprint": "label_fingerprint_value",
+ "labels": {},
}
request = request_type(request_init)
@@ -2455,10 +3415,10 @@ def test_set_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_iam_policy(request)
+ client.set_labels(request)
-def test_set_iam_policy_rest_flattened():
+def test_set_labels_rest_flattened():
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2467,7 +3427,7 @@ def test_set_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "resource": "sample2"}
@@ -2476,8 +3436,8 @@ def test_set_iam_policy_rest_flattened():
mock_args = dict(
project="project_value",
resource="resource_value",
- global_set_policy_request_resource=compute.GlobalSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
+ global_set_labels_request_resource=compute.GlobalSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
),
)
mock_args.update(sample_request)
@@ -2485,25 +3445,25 @@ def test_set_iam_policy_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_iam_policy(**mock_args)
+ client.set_labels(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/snapshots/{resource}/setIamPolicy"
+ "%s/compute/v1/projects/{project}/global/snapshots/{resource}/setLabels"
% client.transport._host,
args[1],
)
-def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_set_labels_rest_flattened_error(transport: str = "rest"):
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2512,17 +3472,17 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_iam_policy(
- compute.SetIamPolicySnapshotRequest(),
+ client.set_labels(
+ compute.SetLabelsSnapshotRequest(),
project="project_value",
resource="resource_value",
- global_set_policy_request_resource=compute.GlobalSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
+ global_set_labels_request_resource=compute.GlobalSetLabelsRequest(
+ label_fingerprint="label_fingerprint_value"
),
)
-def test_set_iam_policy_rest_error():
+def test_set_labels_rest_error():
client = SnapshotsClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2587,28 +3547,6 @@ def test_set_labels_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_set_labels_unary_rest_required_fields(
@@ -3211,6 +4149,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = SnapshotsClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_snapshots_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -3249,6 +4200,14 @@ def test_snapshots_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_snapshots_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_ssl_certificates.py b/tests/unit/gapic/compute_v1/test_ssl_certificates.py
index f4687f997..c95018426 100644
--- a/tests/unit/gapic/compute_v1/test_ssl_certificates.py
+++ b/tests/unit/gapic/compute_v1/test_ssl_certificates.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -898,7 +900,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = SslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -942,10 +944,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -970,9 +972,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteSslCertificateRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteSslCertificateRequest):
transport_class = transports.SslCertificatesRestTransport
request_init = {}
@@ -1035,25 +1035,605 @@ def test_delete_unary_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_rest_unset_required_fields():
+ transport = transports.SslCertificatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "sslCertificate",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_rest_interceptors(null_interceptor):
+ transport = transports.SslCertificatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SslCertificatesRestInterceptor(),
+ )
+ client = SslCertificatesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SslCertificatesRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.SslCertificatesRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteSslCertificateRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteSslCertificateRequest
+):
+ client = SslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "ssl_certificate": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete(request)
+
+
+def test_delete_rest_flattened():
+ client = SslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "ssl_certificate": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ ssl_certificate="ssl_certificate_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/sslCertificates/{ssl_certificate}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_rest_flattened_error(transport: str = "rest"):
+ client = SslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete(
+ compute.DeleteSslCertificateRequest(),
+ project="project_value",
+ ssl_certificate="ssl_certificate_value",
+ )
+
+
+def test_delete_rest_error():
+ client = SslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.DeleteSslCertificateRequest,
+ dict,
+ ],
+)
+def test_delete_unary_rest(request_type):
+ client = SslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "ssl_certificate": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.delete_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteSslCertificateRequest,
+):
+ transport_class = transports.SslCertificatesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["ssl_certificate"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["sslCertificate"] = "ssl_certificate_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "sslCertificate" in jsonified_request
+ assert jsonified_request["sslCertificate"] == "ssl_certificate_value"
+
+ client = SslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "delete",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.delete_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_delete_unary_rest_unset_required_fields():
+ transport = transports.SslCertificatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.delete._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "sslCertificate",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_delete_unary_rest_interceptors(null_interceptor):
+ transport = transports.SslCertificatesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SslCertificatesRestInterceptor(),
+ )
+ client = SslCertificatesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SslCertificatesRestInterceptor, "post_delete"
+ ) as post, mock.patch.object(
+ transports.SslCertificatesRestInterceptor, "pre_delete"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.DeleteSslCertificateRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.delete_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteSslCertificateRequest
+):
+ client = SslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "ssl_certificate": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.delete_unary(request)
+
+
+def test_delete_unary_rest_flattened():
+ client = SslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "ssl_certificate": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ ssl_certificate="ssl_certificate_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.delete_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/sslCertificates/{ssl_certificate}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+ client = SslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.delete_unary(
+ compute.DeleteSslCertificateRequest(),
+ project="project_value",
+ ssl_certificate="ssl_certificate_value",
+ )
+
+
+def test_delete_unary_rest_error():
+ client = SslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.GetSslCertificateRequest,
+ dict,
+ ],
+)
+def test_get_rest(request_type):
+ client = SslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "ssl_certificate": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SslCertificate(
+ certificate="certificate_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ expire_time="expire_time_value",
+ id=205,
+ kind="kind_value",
+ name="name_value",
+ private_key="private_key_value",
+ region="region_value",
+ self_link="self_link_value",
+ subject_alternative_names=["subject_alternative_names_value"],
+ type_="type__value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SslCertificate.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.get(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.SslCertificate)
+ assert response.certificate == "certificate_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.expire_time == "expire_time_value"
+ assert response.id == 205
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.private_key == "private_key_value"
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.subject_alternative_names == ["subject_alternative_names_value"]
+ assert response.type_ == "type__value"
+
+
+def test_get_rest_required_fields(request_type=compute.GetSslCertificateRequest):
+ transport_class = transports.SslCertificatesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["ssl_certificate"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["sslCertificate"] = "ssl_certificate_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).get._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "sslCertificate" in jsonified_request
+ assert jsonified_request["sslCertificate"] == "ssl_certificate_value"
+
+ client = SslCertificatesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SslCertificate()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SslCertificate.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.SslCertificatesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.delete._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"project",
@@ -1064,7 +1644,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.SslCertificatesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1077,9 +1657,9 @@ def test_delete_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SslCertificatesRestInterceptor, "post_delete"
+ transports.SslCertificatesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.SslCertificatesRestInterceptor, "pre_delete"
+ transports.SslCertificatesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1094,17 +1674,19 @@ def test_delete_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.SslCertificate.to_json(
+ compute.SslCertificate()
+ )
- request = compute.DeleteSslCertificateRequest()
+ request = compute.GetSslCertificateRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.SslCertificate
- client.delete_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1116,8 +1698,8 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.DeleteSslCertificateRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetSslCertificateRequest
):
client = SslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1137,10 +1719,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.get(request)
-def test_delete_unary_rest_flattened():
+def test_get_rest_flattened():
client = SslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1149,7 +1731,7 @@ def test_delete_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.SslCertificate()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "ssl_certificate": "sample2"}
@@ -1164,12 +1746,12 @@ def test_delete_unary_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.SslCertificate.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1182,7 +1764,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = SslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1191,14 +1773,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
- compute.DeleteSslCertificateRequest(),
+ client.get(
+ compute.GetSslCertificateRequest(),
project="project_value",
ssl_certificate="ssl_certificate_value",
)
-def test_delete_unary_rest_error():
+def test_get_rest_error():
client = SslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1207,68 +1789,113 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetSslCertificateRequest,
+ compute.InsertSslCertificateRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_insert_rest(request_type):
client = SslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "ssl_certificate": "sample2"}
+ request_init = {"project": "sample1"}
+ request_init["ssl_certificate_resource"] = {
+ "certificate": "certificate_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "expire_time": "expire_time_value",
+ "id": 205,
+ "kind": "kind_value",
+ "managed": {
+ "domain_status": {},
+ "domains": ["domains_value_1", "domains_value_2"],
+ "status": "status_value",
+ },
+ "name": "name_value",
+ "private_key": "private_key_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "self_managed": {
+ "certificate": "certificate_value",
+ "private_key": "private_key_value",
+ },
+ "subject_alternative_names": [
+ "subject_alternative_names_value_1",
+ "subject_alternative_names_value_2",
+ ],
+ "type_": "type__value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SslCertificate(
- certificate="certificate_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- expire_time="expire_time_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- private_key="private_key_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- subject_alternative_names=["subject_alternative_names_value"],
- type_="type__value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SslCertificate.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.SslCertificate)
- assert response.certificate == "certificate_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.expire_time == "expire_time_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.private_key == "private_key_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.subject_alternative_names == ["subject_alternative_names_value"]
- assert response.type_ == "type__value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_rest_required_fields(request_type=compute.GetSslCertificateRequest):
+def test_insert_rest_required_fields(request_type=compute.InsertSslCertificateRequest):
transport_class = transports.SslCertificatesRestTransport
request_init = {}
request_init["project"] = ""
- request_init["ssl_certificate"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1280,24 +1907,23 @@ def test_get_rest_required_fields(request_type=compute.GetSslCertificateRequest)
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
- jsonified_request["sslCertificate"] = "ssl_certificate_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
- assert "sslCertificate" in jsonified_request
- assert jsonified_request["sslCertificate"] == "ssl_certificate_value"
client = SslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1306,7 +1932,7 @@ def test_get_rest_required_fields(request_type=compute.GetSslCertificateRequest)
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SslCertificate()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1317,43 +1943,44 @@ def test_get_rest_required_fields(request_type=compute.GetSslCertificateRequest)
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SslCertificate.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.SslCertificatesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
- "sslCertificate",
+ "sslCertificateResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.SslCertificatesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1366,9 +1993,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SslCertificatesRestInterceptor, "post_get"
+ transports.SslCertificatesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.SslCertificatesRestInterceptor, "pre_get"
+ transports.SslCertificatesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1383,19 +2010,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.SslCertificate.to_json(
- compute.SslCertificate()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetSslCertificateRequest()
+ request = compute.InsertSslCertificateRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.SslCertificate
+ post.return_value = compute.Operation
- client.get(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1407,8 +2032,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetSslCertificateRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertSslCertificateRequest
):
client = SslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1416,7 +2041,33 @@ def test_get_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "ssl_certificate": "sample2"}
+ request_init = {"project": "sample1"}
+ request_init["ssl_certificate_resource"] = {
+ "certificate": "certificate_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "expire_time": "expire_time_value",
+ "id": 205,
+ "kind": "kind_value",
+ "managed": {
+ "domain_status": {},
+ "domains": ["domains_value_1", "domains_value_2"],
+ "status": "status_value",
+ },
+ "name": "name_value",
+ "private_key": "private_key_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "self_managed": {
+ "certificate": "certificate_value",
+ "private_key": "private_key_value",
+ },
+ "subject_alternative_names": [
+ "subject_alternative_names_value_1",
+ "subject_alternative_names_value_2",
+ ],
+ "type_": "type__value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1428,10 +2079,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.insert(request)
-def test_get_rest_flattened():
+def test_insert_rest_flattened():
client = SslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1440,40 +2091,42 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SslCertificate()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "ssl_certificate": "sample2"}
+ sample_request = {"project": "sample1"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- ssl_certificate="ssl_certificate_value",
+ ssl_certificate_resource=compute.SslCertificate(
+ certificate="certificate_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SslCertificate.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/sslCertificates/{ssl_certificate}"
+ "%s/compute/v1/projects/{project}/global/sslCertificates"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = SslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1482,14 +2135,16 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetSslCertificateRequest(),
+ client.insert(
+ compute.InsertSslCertificateRequest(),
project="project_value",
- ssl_certificate="ssl_certificate_value",
+ ssl_certificate_resource=compute.SslCertificate(
+ certificate="certificate_value"
+ ),
)
-def test_get_rest_error():
+def test_insert_rest_error():
client = SslCertificatesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1576,28 +2231,6 @@ def test_insert_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_insert_unary_rest_required_fields(
@@ -2273,6 +2906,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = SslCertificatesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_ssl_certificates_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2308,6 +2954,14 @@ def test_ssl_certificates_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_ssl_certificates_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_ssl_policies.py b/tests/unit/gapic/compute_v1/test_ssl_policies.py
index 0dcc7d7e9..f24f9d338 100644
--- a/tests/unit/gapic/compute_v1/test_ssl_policies.py
+++ b/tests/unit/gapic/compute_v1/test_ssl_policies.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -516,7 +518,7 @@ def test_ssl_policies_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -560,10 +562,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -588,7 +590,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(request_type=compute.DeleteSslPolicyRequest):
+def test_delete_rest_required_fields(request_type=compute.DeleteSslPolicyRequest):
transport_class = transports.SslPoliciesRestTransport
request_init = {}
@@ -655,14 +657,14 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteSslPolicyR
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.SslPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -680,7 +682,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.SslPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -720,7 +722,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -732,7 +734,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteSslPolicyRequest
):
client = SslPoliciesClient(
@@ -753,10 +755,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -785,7 +787,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -798,7 +800,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -807,14 +809,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteSslPolicyRequest(),
project="project_value",
ssl_policy="ssl_policy_value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -823,11 +825,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetSslPolicyRequest,
+ compute.DeleteSslPolicyRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -840,44 +842,44 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SslPolicy(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
- custom_features=["custom_features_value"],
description="description_value",
- enabled_features=["enabled_features_value"],
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- min_tls_version="min_tls_version_value",
name="name_value",
- profile="profile_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SslPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.SslPolicy)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.custom_features == ["custom_features_value"]
- assert response.description == "description_value"
- assert response.enabled_features == ["enabled_features_value"]
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.min_tls_version == "min_tls_version_value"
- assert response.name == "name_value"
- assert response.profile == "profile_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetSslPolicyRequest):
+def test_delete_unary_rest_required_fields(request_type=compute.DeleteSslPolicyRequest):
transport_class = transports.SslPoliciesRestTransport
request_init = {}
@@ -894,7 +896,7 @@ def test_get_rest_required_fields(request_type=compute.GetSslPolicyRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -904,7 +906,9 @@ def test_get_rest_required_fields(request_type=compute.GetSslPolicyRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -920,7 +924,7 @@ def test_get_rest_required_fields(request_type=compute.GetSslPolicyRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SslPolicy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -931,32 +935,32 @@ def test_get_rest_required_fields(request_type=compute.GetSslPolicyRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SslPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.SslPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -967,7 +971,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.SslPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -980,9 +984,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SslPoliciesRestInterceptor, "post_get"
+ transports.SslPoliciesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.SslPoliciesRestInterceptor, "pre_get"
+ transports.SslPoliciesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -997,17 +1001,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.SslPolicy.to_json(compute.SslPolicy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetSslPolicyRequest()
+ request = compute.DeleteSslPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.SslPolicy
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1019,8 +1023,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetSslPolicyRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteSslPolicyRequest
):
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1040,10 +1044,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1052,7 +1056,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SslPolicy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "ssl_policy": "sample2"}
@@ -1067,12 +1071,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SslPolicy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1085,7 +1089,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1094,14 +1098,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetSslPolicyRequest(),
+ client.delete_unary(
+ compute.DeleteSslPolicyRequest(),
project="project_value",
ssl_policy="ssl_policy_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1110,107 +1114,66 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertSslPolicyRequest,
+ compute.GetSslPolicyRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["ssl_policy_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "custom_features": ["custom_features_value_1", "custom_features_value_2"],
- "description": "description_value",
- "enabled_features": ["enabled_features_value_1", "enabled_features_value_2"],
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "min_tls_version": "min_tls_version_value",
- "name": "name_value",
- "profile": "profile_value",
- "self_link": "self_link_value",
- "warnings": [
- {
- "code": "code_value",
- "data": [{"key": "key_value", "value": "value_value"}],
- "message": "message_value",
- }
- ],
- }
+ request_init = {"project": "sample1", "ssl_policy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.SslPolicy(
creation_timestamp="creation_timestamp_value",
+ custom_features=["custom_features_value"],
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ enabled_features=["enabled_features_value"],
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
kind="kind_value",
+ min_tls_version="min_tls_version_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
+ profile="profile_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.SslPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.SslPolicy)
assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.custom_features == ["custom_features_value"]
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.enabled_features == ["enabled_features_value"]
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
+ assert response.min_tls_version == "min_tls_version_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
+ assert response.profile == "profile_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_insert_unary_rest_required_fields(request_type=compute.InsertSslPolicyRequest):
+def test_get_rest_required_fields(request_type=compute.GetSslPolicyRequest):
transport_class = transports.SslPoliciesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["ssl_policy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1222,23 +1185,24 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertSslPolicyR
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["sslPolicy"] = "ssl_policy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "sslPolicy" in jsonified_request
+ assert jsonified_request["sslPolicy"] == "ssl_policy_value"
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1247,7 +1211,7 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertSslPolicyR
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.SslPolicy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1258,44 +1222,43 @@ def test_insert_unary_rest_required_fields(request_type=compute.InsertSslPolicyR
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.SslPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.SslPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"project",
- "sslPolicyResource",
+ "sslPolicy",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.SslPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1308,9 +1271,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SslPoliciesRestInterceptor, "post_insert"
+ transports.SslPoliciesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.SslPoliciesRestInterceptor, "pre_insert"
+ transports.SslPoliciesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1325,17 +1288,17 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.SslPolicy.to_json(compute.SslPolicy())
- request = compute.InsertSslPolicyRequest()
+ request = compute.GetSslPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.SslPolicy
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1347,8 +1310,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertSslPolicyRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetSslPolicyRequest
):
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1356,27 +1319,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["ssl_policy_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "custom_features": ["custom_features_value_1", "custom_features_value_2"],
- "description": "description_value",
- "enabled_features": ["enabled_features_value_1", "enabled_features_value_2"],
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "min_tls_version": "min_tls_version_value",
- "name": "name_value",
- "profile": "profile_value",
- "self_link": "self_link_value",
- "warnings": [
- {
- "code": "code_value",
- "data": [{"key": "key_value", "value": "value_value"}],
- "message": "message_value",
- }
- ],
- }
+ request_init = {"project": "sample1", "ssl_policy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1388,10 +1331,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get(request)
-def test_insert_unary_rest_flattened():
+def test_get_rest_flattened():
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1400,42 +1343,40 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.SslPolicy()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "ssl_policy": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- ssl_policy_resource=compute.SslPolicy(
- creation_timestamp="creation_timestamp_value"
- ),
+ ssl_policy="ssl_policy_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.SslPolicy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/sslPolicies"
+ "%s/compute/v1/projects/{project}/global/sslPolicies/{ssl_policy}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1444,16 +1385,14 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertSslPolicyRequest(),
+ client.get(
+ compute.GetSslPolicyRequest(),
project="project_value",
- ssl_policy_resource=compute.SslPolicy(
- creation_timestamp="creation_timestamp_value"
- ),
+ ssl_policy="ssl_policy_value",
)
-def test_insert_unary_rest_error():
+def test_get_rest_error():
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1462,11 +1401,11 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListSslPoliciesRequest,
+ compute.InsertSslPolicyRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_insert_rest(request_type):
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1474,35 +1413,91 @@ def test_list_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
+ request_init["ssl_policy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_features": ["custom_features_value_1", "custom_features_value_2"],
+ "description": "description_value",
+ "enabled_features": ["enabled_features_value_1", "enabled_features_value_2"],
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "min_tls_version": "min_tls_version_value",
+ "name": "name_value",
+ "profile": "profile_value",
+ "self_link": "self_link_value",
+ "warnings": [
+ {
+ "code": "code_value",
+ "data": [{"key": "key_value", "value": "value_value"}],
+ "message": "message_value",
+ }
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SslPoliciesList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SslPoliciesList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(request_type=compute.ListSslPoliciesRequest):
+def test_insert_rest_required_fields(request_type=compute.InsertSslPolicyRequest):
transport_class = transports.SslPoliciesRestTransport
request_init = {}
@@ -1518,7 +1513,7 @@ def test_list_rest_required_fields(request_type=compute.ListSslPoliciesRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1527,17 +1522,9 @@ def test_list_rest_required_fields(request_type=compute.ListSslPoliciesRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1551,7 +1538,7 @@ def test_list_rest_required_fields(request_type=compute.ListSslPoliciesRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SslPoliciesList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1562,46 +1549,44 @@ def test_list_rest_required_fields(request_type=compute.ListSslPoliciesRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SslPoliciesList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.SslPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "project",
+ "sslPolicyResource",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.SslPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1614,9 +1599,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SslPoliciesRestInterceptor, "post_list"
+ transports.SslPoliciesRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.SslPoliciesRestInterceptor, "pre_list"
+ transports.SslPoliciesRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1631,19 +1616,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.SslPoliciesList.to_json(
- compute.SslPoliciesList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListSslPoliciesRequest()
+ request = compute.InsertSslPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.SslPoliciesList
+ post.return_value = compute.Operation
- client.list(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -1655,8 +1638,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListSslPoliciesRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertSslPolicyRequest
):
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1665,6 +1648,26 @@ def test_list_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1"}
+ request_init["ssl_policy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_features": ["custom_features_value_1", "custom_features_value_2"],
+ "description": "description_value",
+ "enabled_features": ["enabled_features_value_1", "enabled_features_value_2"],
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "min_tls_version": "min_tls_version_value",
+ "name": "name_value",
+ "profile": "profile_value",
+ "self_link": "self_link_value",
+ "warnings": [
+ {
+ "code": "code_value",
+ "data": [{"key": "key_value", "value": "value_value"}],
+ "message": "message_value",
+ }
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1676,10 +1679,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.insert(request)
-def test_list_rest_flattened():
+def test_insert_rest_flattened():
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1688,7 +1691,7 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SslPoliciesList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1"}
@@ -1696,18 +1699,21 @@ def test_list_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ ssl_policy_resource=compute.SslPolicy(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SslPoliciesList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1720,7 +1726,7 @@ def test_list_rest_flattened():
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1729,35 +1735,650 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListSslPoliciesRequest(),
+ client.insert(
+ compute.InsertSslPolicyRequest(),
project="project_value",
+ ssl_policy_resource=compute.SslPolicy(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_insert_rest_error():
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertSslPolicyRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ transport="rest",
)
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["ssl_policy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_features": ["custom_features_value_1", "custom_features_value_2"],
+ "description": "description_value",
+ "enabled_features": ["enabled_features_value_1", "enabled_features_value_2"],
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "min_tls_version": "min_tls_version_value",
+ "name": "name_value",
+ "profile": "profile_value",
+ "self_link": "self_link_value",
+ "warnings": [
+ {
+ "code": "code_value",
+ "data": [{"key": "key_value", "value": "value_value"}],
+ "message": "message_value",
+ }
+ ],
+ }
+ request = request_type(request_init)
+
# Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.SslPoliciesList(
- items=[
- compute.SslPolicy(),
- compute.SslPolicy(),
- compute.SslPolicy(),
- ],
- next_page_token="abc",
- ),
- compute.SslPoliciesList(
- items=[],
- next_page_token="def",
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(request_type=compute.InsertSslPolicyRequest):
+ transport_class = transports.SslPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.SslPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "sslPolicyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.SslPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SslPoliciesRestInterceptor(),
+ )
+ client = SslPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SslPoliciesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.SslPoliciesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertSslPolicyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertSslPolicyRequest
+):
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["ssl_policy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_features": ["custom_features_value_1", "custom_features_value_2"],
+ "description": "description_value",
+ "enabled_features": ["enabled_features_value_1", "enabled_features_value_2"],
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "min_tls_version": "min_tls_version_value",
+ "name": "name_value",
+ "profile": "profile_value",
+ "self_link": "self_link_value",
+ "warnings": [
+ {
+ "code": "code_value",
+ "data": [{"key": "key_value", "value": "value_value"}],
+ "message": "message_value",
+ }
+ ],
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ ssl_policy_resource=compute.SslPolicy(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/sslPolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertSslPolicyRequest(),
+ project="project_value",
+ ssl_policy_resource=compute.SslPolicy(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListSslPoliciesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SslPoliciesList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SslPoliciesList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListSslPoliciesRequest):
+ transport_class = transports.SslPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SslPoliciesList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SslPoliciesList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.SslPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.SslPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SslPoliciesRestInterceptor(),
+ )
+ client = SslPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SslPoliciesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.SslPoliciesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.SslPoliciesList.to_json(
+ compute.SslPoliciesList()
+ )
+
+ request = compute.ListSslPoliciesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.SslPoliciesList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListSslPoliciesRequest
+):
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SslPoliciesList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SslPoliciesList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/sslPolicies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListSslPoliciesRequest(),
+ project="project_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.SslPoliciesList(
+ items=[
+ compute.SslPolicy(),
+ compute.SslPolicy(),
+ compute.SslPolicy(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.SslPoliciesList(
+ items=[],
+ next_page_token="def",
),
compute.SslPoliciesList(
items=[
@@ -1772,76 +2393,422 @@ def test_list_rest_pager(transport: str = "rest"):
],
),
)
- # Two responses for two calls
- response = response + response
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.SslPoliciesList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.SslPolicy) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListAvailableFeaturesSslPoliciesRequest,
+ dict,
+ ],
+)
+def test_list_available_features_rest(request_type):
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SslPoliciesListAvailableFeaturesResponse(
+ features=["features_value"],
+ )
- # Wrap the values into proper Response objs
- response = tuple(compute.SslPoliciesList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SslPoliciesListAvailableFeaturesResponse.to_json(
+ return_value
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list_available_features(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.SslPoliciesListAvailableFeaturesResponse)
+ assert response.features == ["features_value"]
+
+
+def test_list_available_features_rest_required_fields(
+ request_type=compute.ListAvailableFeaturesSslPoliciesRequest,
+):
+ transport_class = transports.SslPoliciesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_available_features._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_available_features._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SslPoliciesListAvailableFeaturesResponse()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = (
+ compute.SslPoliciesListAvailableFeaturesResponse.to_json(return_value)
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list_available_features(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_available_features_rest_unset_required_fields():
+ transport = transports.SslPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list_available_features._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_available_features_rest_interceptors(null_interceptor):
+ transport = transports.SslPoliciesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SslPoliciesRestInterceptor(),
+ )
+ client = SslPoliciesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SslPoliciesRestInterceptor, "post_list_available_features"
+ ) as post, mock.patch.object(
+ transports.SslPoliciesRestInterceptor, "pre_list_available_features"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = (
+ compute.SslPoliciesListAvailableFeaturesResponse.to_json(
+ compute.SslPoliciesListAvailableFeaturesResponse()
+ )
+ )
+
+ request = compute.ListAvailableFeaturesSslPoliciesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.SslPoliciesListAvailableFeaturesResponse
+
+ client.list_available_features(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_available_features_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.ListAvailableFeaturesSslPoliciesRequest,
+):
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list_available_features(request)
+
+
+def test_list_available_features_rest_flattened():
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SslPoliciesListAvailableFeaturesResponse()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SslPoliciesListAvailableFeaturesResponse.to_json(
+ return_value
+ )
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list_available_features(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/sslPolicies/listAvailableFeatures"
+ % client.transport._host,
+ args[1],
+ )
- sample_request = {"project": "sample1"}
- pager = client.list(request=sample_request)
+def test_list_available_features_rest_flattened_error(transport: str = "rest"):
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.SslPolicy) for i in results)
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list_available_features(
+ compute.ListAvailableFeaturesSslPoliciesRequest(),
+ project="project_value",
+ )
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
+
+def test_list_available_features_rest_error():
+ client = SslPoliciesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
@pytest.mark.parametrize(
"request_type",
[
- compute.ListAvailableFeaturesSslPoliciesRequest,
+ compute.PatchSslPolicyRequest,
dict,
],
)
-def test_list_available_features_rest(request_type):
+def test_patch_rest(request_type):
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "ssl_policy": "sample2"}
+ request_init["ssl_policy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_features": ["custom_features_value_1", "custom_features_value_2"],
+ "description": "description_value",
+ "enabled_features": ["enabled_features_value_1", "enabled_features_value_2"],
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "min_tls_version": "min_tls_version_value",
+ "name": "name_value",
+ "profile": "profile_value",
+ "self_link": "self_link_value",
+ "warnings": [
+ {
+ "code": "code_value",
+ "data": [{"key": "key_value", "value": "value_value"}],
+ "message": "message_value",
+ }
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SslPoliciesListAvailableFeaturesResponse(
- features=["features_value"],
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SslPoliciesListAvailableFeaturesResponse.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_available_features(request)
+ response = client.patch(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.SslPoliciesListAvailableFeaturesResponse)
- assert response.features == ["features_value"]
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_available_features_rest_required_fields(
- request_type=compute.ListAvailableFeaturesSslPoliciesRequest,
-):
+def test_patch_rest_required_fields(request_type=compute.PatchSslPolicyRequest):
transport_class = transports.SslPoliciesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["ssl_policy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1853,31 +2820,26 @@ def test_list_available_features_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_available_features._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["sslPolicy"] = "ssl_policy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_available_features._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "sslPolicy" in jsonified_request
+ assert jsonified_request["sslPolicy"] == "ssl_policy_value"
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1886,7 +2848,7 @@ def test_list_available_features_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SslPoliciesListAvailableFeaturesResponse()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1897,48 +2859,45 @@ def test_list_available_features_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = (
- compute.SslPoliciesListAvailableFeaturesResponse.to_json(return_value)
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_available_features(request)
+ response = client.patch(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_available_features_rest_unset_required_fields():
+def test_patch_rest_unset_required_fields():
transport = transports.SslPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list_available_features._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "project",
+ "sslPolicy",
+ "sslPolicyResource",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_available_features_rest_interceptors(null_interceptor):
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.SslPoliciesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1951,9 +2910,9 @@ def test_list_available_features_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SslPoliciesRestInterceptor, "post_list_available_features"
+ transports.SslPoliciesRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.SslPoliciesRestInterceptor, "pre_list_available_features"
+ transports.SslPoliciesRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1968,21 +2927,17 @@ def test_list_available_features_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = (
- compute.SslPoliciesListAvailableFeaturesResponse.to_json(
- compute.SslPoliciesListAvailableFeaturesResponse()
- )
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListAvailableFeaturesSslPoliciesRequest()
+ request = compute.PatchSslPolicyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.SslPoliciesListAvailableFeaturesResponse
+ post.return_value = compute.Operation
- client.list_available_features(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -1994,9 +2949,8 @@ def test_list_available_features_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_available_features_rest_bad_request(
- transport: str = "rest",
- request_type=compute.ListAvailableFeaturesSslPoliciesRequest,
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchSslPolicyRequest
):
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2004,7 +2958,27 @@ def test_list_available_features_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "ssl_policy": "sample2"}
+ request_init["ssl_policy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "custom_features": ["custom_features_value_1", "custom_features_value_2"],
+ "description": "description_value",
+ "enabled_features": ["enabled_features_value_1", "enabled_features_value_2"],
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "min_tls_version": "min_tls_version_value",
+ "name": "name_value",
+ "profile": "profile_value",
+ "self_link": "self_link_value",
+ "warnings": [
+ {
+ "code": "code_value",
+ "data": [{"key": "key_value", "value": "value_value"}],
+ "message": "message_value",
+ }
+ ],
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2016,10 +2990,10 @@ def test_list_available_features_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list_available_features(request)
+ client.patch(request)
-def test_list_available_features_rest_flattened():
+def test_patch_rest_flattened():
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2028,41 +3002,43 @@ def test_list_available_features_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SslPoliciesListAvailableFeaturesResponse()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "ssl_policy": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ ssl_policy="ssl_policy_value",
+ ssl_policy_resource=compute.SslPolicy(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SslPoliciesListAvailableFeaturesResponse.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list_available_features(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/sslPolicies/listAvailableFeatures"
+ "%s/compute/v1/projects/{project}/global/sslPolicies/{ssl_policy}"
% client.transport._host,
args[1],
)
-def test_list_available_features_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2071,13 +3047,17 @@ def test_list_available_features_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list_available_features(
- compute.ListAvailableFeaturesSslPoliciesRequest(),
+ client.patch(
+ compute.PatchSslPolicyRequest(),
project="project_value",
+ ssl_policy="ssl_policy_value",
+ ssl_policy_resource=compute.SslPolicy(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
-def test_list_available_features_rest_error():
+def test_patch_rest_error():
client = SslPoliciesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2158,28 +3138,6 @@ def test_patch_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_patch_unary_rest_required_fields(request_type=compute.PatchSslPolicyRequest):
@@ -2517,6 +3475,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = SslPoliciesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_ssl_policies_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2553,6 +3524,14 @@ def test_ssl_policies_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_ssl_policies_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_subnetworks.py b/tests/unit/gapic/compute_v1/test_subnetworks.py
index 745b49f79..83763b561 100644
--- a/tests/unit/gapic/compute_v1/test_subnetworks.py
+++ b/tests/unit/gapic/compute_v1/test_subnetworks.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -871,7 +873,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -915,10 +917,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -943,9 +945,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteSubnetworkRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteSubnetworkRequest):
transport_class = transports.SubnetworksRestTransport
request_init = {}
@@ -1016,14 +1016,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1042,7 +1042,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1082,7 +1082,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1094,7 +1094,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteSubnetworkRequest
):
client = SubnetworksClient(
@@ -1115,10 +1115,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1152,7 +1152,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1165,7 +1165,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1174,7 +1174,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteSubnetworkRequest(),
project="project_value",
region="region_value",
@@ -1182,7 +1182,7 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1191,11 +1191,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ExpandIpCidrRangeSubnetworkRequest,
+ compute.DeleteSubnetworkRequest,
dict,
],
)
-def test_expand_ip_cidr_range_unary_rest(request_type):
+def test_delete_unary_rest(request_type):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1203,9 +1203,6 @@ def test_expand_ip_cidr_range_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
- request_init["subnetworks_expand_ip_cidr_range_request_resource"] = {
- "ip_cidr_range": "ip_cidr_range_value"
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -1242,36 +1239,14 @@ def test_expand_ip_cidr_range_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.expand_ip_cidr_range_unary(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_expand_ip_cidr_range_unary_rest_required_fields(
- request_type=compute.ExpandIpCidrRangeSubnetworkRequest,
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteSubnetworkRequest,
):
transport_class = transports.SubnetworksRestTransport
@@ -1290,7 +1265,7 @@ def test_expand_ip_cidr_range_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).expand_ip_cidr_range._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1301,7 +1276,7 @@ def test_expand_ip_cidr_range_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).expand_ip_cidr_range._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -1332,10 +1307,9 @@ def test_expand_ip_cidr_range_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "delete",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
@@ -1344,19 +1318,19 @@ def test_expand_ip_cidr_range_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.expand_ip_cidr_range_unary(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_expand_ip_cidr_range_unary_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.expand_ip_cidr_range._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
@@ -1364,14 +1338,13 @@ def test_expand_ip_cidr_range_unary_rest_unset_required_fields():
"project",
"region",
"subnetwork",
- "subnetworksExpandIpCidrRangeRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_expand_ip_cidr_range_unary_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1384,9 +1357,9 @@ def test_expand_ip_cidr_range_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SubnetworksRestInterceptor, "post_expand_ip_cidr_range"
+ transports.SubnetworksRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.SubnetworksRestInterceptor, "pre_expand_ip_cidr_range"
+ transports.SubnetworksRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1403,7 +1376,7 @@ def test_expand_ip_cidr_range_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ExpandIpCidrRangeSubnetworkRequest()
+ request = compute.DeleteSubnetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -1411,7 +1384,7 @@ def test_expand_ip_cidr_range_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.expand_ip_cidr_range_unary(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1423,8 +1396,8 @@ def test_expand_ip_cidr_range_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_expand_ip_cidr_range_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.ExpandIpCidrRangeSubnetworkRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteSubnetworkRequest
):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1433,9 +1406,6 @@ def test_expand_ip_cidr_range_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
- request_init["subnetworks_expand_ip_cidr_range_request_resource"] = {
- "ip_cidr_range": "ip_cidr_range_value"
- }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1447,10 +1417,10 @@ def test_expand_ip_cidr_range_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.expand_ip_cidr_range_unary(request)
+ client.delete_unary(request)
-def test_expand_ip_cidr_range_unary_rest_flattened():
+def test_delete_unary_rest_flattened():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1473,9 +1443,6 @@ def test_expand_ip_cidr_range_unary_rest_flattened():
project="project_value",
region="region_value",
subnetwork="subnetwork_value",
- subnetworks_expand_ip_cidr_range_request_resource=compute.SubnetworksExpandIpCidrRangeRequest(
- ip_cidr_range="ip_cidr_range_value"
- ),
)
mock_args.update(sample_request)
@@ -1487,20 +1454,20 @@ def test_expand_ip_cidr_range_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.expand_ip_cidr_range_unary(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}/expandIpCidrRange"
+ "%s/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}"
% client.transport._host,
args[1],
)
-def test_expand_ip_cidr_range_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1509,18 +1476,15 @@ def test_expand_ip_cidr_range_unary_rest_flattened_error(transport: str = "rest"
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.expand_ip_cidr_range_unary(
- compute.ExpandIpCidrRangeSubnetworkRequest(),
+ client.delete_unary(
+ compute.DeleteSubnetworkRequest(),
project="project_value",
region="region_value",
subnetwork="subnetwork_value",
- subnetworks_expand_ip_cidr_range_request_resource=compute.SubnetworksExpandIpCidrRangeRequest(
- ip_cidr_range="ip_cidr_range_value"
- ),
)
-def test_expand_ip_cidr_range_unary_rest_error():
+def test_delete_unary_rest_error():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1529,11 +1493,11 @@ def test_expand_ip_cidr_range_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetSubnetworkRequest,
+ compute.ExpandIpCidrRangeSubnetworkRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_expand_ip_cidr_range_rest(request_type):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1541,71 +1505,76 @@ def test_get_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
+ request_init["subnetworks_expand_ip_cidr_range_request_resource"] = {
+ "ip_cidr_range": "ip_cidr_range_value"
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Subnetwork(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- enable_flow_logs=True,
- external_ipv6_prefix="external_ipv6_prefix_value",
- fingerprint="fingerprint_value",
- gateway_address="gateway_address_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
- internal_ipv6_prefix="internal_ipv6_prefix_value",
- ip_cidr_range="ip_cidr_range_value",
- ipv6_access_type="ipv6_access_type_value",
- ipv6_cidr_range="ipv6_cidr_range_value",
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- network="network_value",
- private_ip_google_access=True,
- private_ipv6_google_access="private_ipv6_google_access_value",
- purpose="purpose_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
- role="role_value",
self_link="self_link_value",
- stack_type="stack_type_value",
- state="state_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Subnetwork.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.expand_ip_cidr_range(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Subnetwork)
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.enable_flow_logs is True
- assert response.external_ipv6_prefix == "external_ipv6_prefix_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.gateway_address == "gateway_address_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
assert response.id == 205
- assert response.internal_ipv6_prefix == "internal_ipv6_prefix_value"
- assert response.ip_cidr_range == "ip_cidr_range_value"
- assert response.ipv6_access_type == "ipv6_access_type_value"
- assert response.ipv6_cidr_range == "ipv6_cidr_range_value"
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.network == "network_value"
- assert response.private_ip_google_access is True
- assert response.private_ipv6_google_access == "private_ipv6_google_access_value"
- assert response.purpose == "purpose_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
assert response.region == "region_value"
- assert response.role == "role_value"
assert response.self_link == "self_link_value"
- assert response.stack_type == "stack_type_value"
- assert response.state == "state_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_get_rest_required_fields(request_type=compute.GetSubnetworkRequest):
+def test_expand_ip_cidr_range_rest_required_fields(
+ request_type=compute.ExpandIpCidrRangeSubnetworkRequest,
+):
transport_class = transports.SubnetworksRestTransport
request_init = {}
@@ -1623,7 +1592,7 @@ def test_get_rest_required_fields(request_type=compute.GetSubnetworkRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).expand_ip_cidr_range._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1634,7 +1603,9 @@ def test_get_rest_required_fields(request_type=compute.GetSubnetworkRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).expand_ip_cidr_range._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1652,7 +1623,7 @@ def test_get_rest_required_fields(request_type=compute.GetSubnetworkRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Subnetwork()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1663,44 +1634,46 @@ def test_get_rest_required_fields(request_type=compute.GetSubnetworkRequest):
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Subnetwork.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.expand_ip_cidr_range(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_expand_ip_cidr_range_rest_unset_required_fields():
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.expand_ip_cidr_range._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
"region",
"subnetwork",
+ "subnetworksExpandIpCidrRangeRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_expand_ip_cidr_range_rest_interceptors(null_interceptor):
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1713,9 +1686,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SubnetworksRestInterceptor, "post_get"
+ transports.SubnetworksRestInterceptor, "post_expand_ip_cidr_range"
) as post, mock.patch.object(
- transports.SubnetworksRestInterceptor, "pre_get"
+ transports.SubnetworksRestInterceptor, "pre_expand_ip_cidr_range"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1730,17 +1703,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Subnetwork.to_json(compute.Subnetwork())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetSubnetworkRequest()
+ request = compute.ExpandIpCidrRangeSubnetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Subnetwork
+ post.return_value = compute.Operation
- client.get(
+ client.expand_ip_cidr_range(
request,
metadata=[
("key", "val"),
@@ -1752,8 +1725,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetSubnetworkRequest
+def test_expand_ip_cidr_range_rest_bad_request(
+ transport: str = "rest", request_type=compute.ExpandIpCidrRangeSubnetworkRequest
):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1762,6 +1735,9 @@ def test_get_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
+ request_init["subnetworks_expand_ip_cidr_range_request_resource"] = {
+ "ip_cidr_range": "ip_cidr_range_value"
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1773,10 +1749,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.expand_ip_cidr_range(request)
-def test_get_rest_flattened():
+def test_expand_ip_cidr_range_rest_flattened():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1785,7 +1761,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Subnetwork()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
@@ -1799,31 +1775,34 @@ def test_get_rest_flattened():
project="project_value",
region="region_value",
subnetwork="subnetwork_value",
+ subnetworks_expand_ip_cidr_range_request_resource=compute.SubnetworksExpandIpCidrRangeRequest(
+ ip_cidr_range="ip_cidr_range_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Subnetwork.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.expand_ip_cidr_range(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}"
+ "%s/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}/expandIpCidrRange"
% client.transport._host,
args[1],
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_expand_ip_cidr_range_rest_flattened_error(transport: str = "rest"):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1832,15 +1811,18 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetSubnetworkRequest(),
+ client.expand_ip_cidr_range(
+ compute.ExpandIpCidrRangeSubnetworkRequest(),
project="project_value",
region="region_value",
subnetwork="subnetwork_value",
+ subnetworks_expand_ip_cidr_range_request_resource=compute.SubnetworksExpandIpCidrRangeRequest(
+ ip_cidr_range="ip_cidr_range_value"
+ ),
)
-def test_get_rest_error():
+def test_expand_ip_cidr_range_rest_error():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1849,53 +1831,72 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetIamPolicySubnetworkRequest,
+ compute.ExpandIpCidrRangeSubnetworkRequest,
dict,
],
)
-def test_get_iam_policy_rest(request_type):
+def test_expand_ip_cidr_range_unary_rest(request_type):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
+ request_init["subnetworks_expand_ip_cidr_range_request_resource"] = {
+ "ip_cidr_range": "ip_cidr_range_value"
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
- )
-
- # Wrap the value into a proper Response obj
- response_value = Response()
- response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.expand_ip_cidr_range_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, compute.Operation)
-def test_get_iam_policy_rest_required_fields(
- request_type=compute.GetIamPolicySubnetworkRequest,
+def test_expand_ip_cidr_range_unary_rest_required_fields(
+ request_type=compute.ExpandIpCidrRangeSubnetworkRequest,
):
transport_class = transports.SubnetworksRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
- request_init["resource"] = ""
+ request_init["subnetwork"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1907,20 +1908,20 @@ def test_get_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).expand_ip_cidr_range._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
- jsonified_request["resource"] = "resource_value"
+ jsonified_request["subnetwork"] = "subnetwork_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get_iam_policy._get_unset_required_fields(jsonified_request)
+ ).expand_ip_cidr_range._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("options_requested_policy_version",))
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1928,8 +1929,8 @@ def test_get_iam_policy_rest_required_fields(
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
+ assert "subnetwork" in jsonified_request
+ assert jsonified_request["subnetwork"] == "subnetwork_value"
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1938,7 +1939,7 @@ def test_get_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1949,44 +1950,46 @@ def test_get_iam_policy_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get_iam_policy(request)
+ response = client.expand_ip_cidr_range_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_iam_policy_rest_unset_required_fields():
+def test_expand_ip_cidr_range_unary_rest_unset_required_fields():
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.expand_ip_cidr_range._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("optionsRequestedPolicyVersion",))
+ set(("requestId",))
& set(
(
"project",
"region",
- "resource",
+ "subnetwork",
+ "subnetworksExpandIpCidrRangeRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_iam_policy_rest_interceptors(null_interceptor):
+def test_expand_ip_cidr_range_unary_rest_interceptors(null_interceptor):
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1999,9 +2002,9 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SubnetworksRestInterceptor, "post_get_iam_policy"
+ transports.SubnetworksRestInterceptor, "post_expand_ip_cidr_range"
) as post, mock.patch.object(
- transports.SubnetworksRestInterceptor, "pre_get_iam_policy"
+ transports.SubnetworksRestInterceptor, "pre_expand_ip_cidr_range"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2016,17 +2019,17 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetIamPolicySubnetworkRequest()
+ request = compute.ExpandIpCidrRangeSubnetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.get_iam_policy(
+ client.expand_ip_cidr_range_unary(
request,
metadata=[
("key", "val"),
@@ -2038,8 +2041,8 @@ def test_get_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.GetIamPolicySubnetworkRequest
+def test_expand_ip_cidr_range_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.ExpandIpCidrRangeSubnetworkRequest
):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2047,7 +2050,10 @@ def test_get_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
+ request_init["subnetworks_expand_ip_cidr_range_request_resource"] = {
+ "ip_cidr_range": "ip_cidr_range_value"
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2059,10 +2065,10 @@ def test_get_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get_iam_policy(request)
+ client.expand_ip_cidr_range_unary(request)
-def test_get_iam_policy_rest_flattened():
+def test_expand_ip_cidr_range_unary_rest_flattened():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2071,45 +2077,48 @@ def test_get_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
"project": "sample1",
"region": "sample2",
- "resource": "sample3",
+ "subnetwork": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- resource="resource_value",
+ subnetwork="subnetwork_value",
+ subnetworks_expand_ip_cidr_range_request_resource=compute.SubnetworksExpandIpCidrRangeRequest(
+ ip_cidr_range="ip_cidr_range_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get_iam_policy(**mock_args)
+ client.expand_ip_cidr_range_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/subnetworks/{resource}/getIamPolicy"
+ "%s/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}/expandIpCidrRange"
% client.transport._host,
args[1],
)
-def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_expand_ip_cidr_range_unary_rest_flattened_error(transport: str = "rest"):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2118,15 +2127,18 @@ def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get_iam_policy(
- compute.GetIamPolicySubnetworkRequest(),
+ client.expand_ip_cidr_range_unary(
+ compute.ExpandIpCidrRangeSubnetworkRequest(),
project="project_value",
region="region_value",
- resource="resource_value",
+ subnetwork="subnetwork_value",
+ subnetworks_expand_ip_cidr_range_request_resource=compute.SubnetworksExpandIpCidrRangeRequest(
+ ip_cidr_range="ip_cidr_range_value"
+ ),
)
-def test_get_iam_policy_rest_error():
+def test_expand_ip_cidr_range_unary_rest_error():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2135,125 +2147,89 @@ def test_get_iam_policy_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertSubnetworkRequest,
+ compute.GetSubnetworkRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["subnetwork_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "enable_flow_logs": True,
- "external_ipv6_prefix": "external_ipv6_prefix_value",
- "fingerprint": "fingerprint_value",
- "gateway_address": "gateway_address_value",
- "id": 205,
- "internal_ipv6_prefix": "internal_ipv6_prefix_value",
- "ip_cidr_range": "ip_cidr_range_value",
- "ipv6_access_type": "ipv6_access_type_value",
- "ipv6_cidr_range": "ipv6_cidr_range_value",
- "kind": "kind_value",
- "log_config": {
- "aggregation_interval": "aggregation_interval_value",
- "enable": True,
- "filter_expr": "filter_expr_value",
- "flow_sampling": 0.1394,
- "metadata": "metadata_value",
- "metadata_fields": ["metadata_fields_value_1", "metadata_fields_value_2"],
- },
- "name": "name_value",
- "network": "network_value",
- "private_ip_google_access": True,
- "private_ipv6_google_access": "private_ipv6_google_access_value",
- "purpose": "purpose_value",
- "region": "region_value",
- "role": "role_value",
- "secondary_ip_ranges": [
- {"ip_cidr_range": "ip_cidr_range_value", "range_name": "range_name_value"}
- ],
- "self_link": "self_link_value",
- "stack_type": "stack_type_value",
- "state": "state_value",
- }
+ request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.Subnetwork(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ enable_flow_logs=True,
+ external_ipv6_prefix="external_ipv6_prefix_value",
+ fingerprint="fingerprint_value",
+ gateway_address="gateway_address_value",
id=205,
- insert_time="insert_time_value",
+ internal_ipv6_prefix="internal_ipv6_prefix_value",
+ ip_cidr_range="ip_cidr_range_value",
+ ipv6_access_type="ipv6_access_type_value",
+ ipv6_cidr_range="ipv6_cidr_range_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ network="network_value",
+ private_ip_google_access=True,
+ private_ipv6_google_access="private_ipv6_google_access_value",
+ purpose="purpose_value",
region="region_value",
+ role="role_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ stack_type="stack_type_value",
+ state="state_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Subnetwork.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.Subnetwork)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.enable_flow_logs is True
+ assert response.external_ipv6_prefix == "external_ipv6_prefix_value"
+ assert response.fingerprint == "fingerprint_value"
+ assert response.gateway_address == "gateway_address_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
+ assert response.internal_ipv6_prefix == "internal_ipv6_prefix_value"
+ assert response.ip_cidr_range == "ip_cidr_range_value"
+ assert response.ipv6_access_type == "ipv6_access_type_value"
+ assert response.ipv6_cidr_range == "ipv6_cidr_range_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.network == "network_value"
+ assert response.private_ip_google_access is True
+ assert response.private_ipv6_google_access == "private_ipv6_google_access_value"
+ assert response.purpose == "purpose_value"
assert response.region == "region_value"
+ assert response.role == "role_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.stack_type == "stack_type_value"
+ assert response.state == "state_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertSubnetworkRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetSubnetworkRequest):
transport_class = transports.SubnetworksRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
+ request_init["subnetwork"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2265,19 +2241,18 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
+ jsonified_request["subnetwork"] = "subnetwork_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2285,6 +2260,8 @@ def test_insert_unary_rest_required_fields(
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
+ assert "subnetwork" in jsonified_request
+ assert jsonified_request["subnetwork"] == "subnetwork_value"
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2293,7 +2270,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Subnetwork()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2304,45 +2281,44 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Subnetwork.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"project",
"region",
- "subnetworkResource",
+ "subnetwork",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2355,9 +2331,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SubnetworksRestInterceptor, "post_insert"
+ transports.SubnetworksRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.SubnetworksRestInterceptor, "pre_insert"
+ transports.SubnetworksRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2372,17 +2348,17 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.Subnetwork.to_json(compute.Subnetwork())
- request = compute.InsertSubnetworkRequest()
+ request = compute.GetSubnetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.Subnetwork
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -2394,8 +2370,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertSubnetworkRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetSubnetworkRequest
):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2403,42 +2379,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
- request_init["subnetwork_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "enable_flow_logs": True,
- "external_ipv6_prefix": "external_ipv6_prefix_value",
- "fingerprint": "fingerprint_value",
- "gateway_address": "gateway_address_value",
- "id": 205,
- "internal_ipv6_prefix": "internal_ipv6_prefix_value",
- "ip_cidr_range": "ip_cidr_range_value",
- "ipv6_access_type": "ipv6_access_type_value",
- "ipv6_cidr_range": "ipv6_cidr_range_value",
- "kind": "kind_value",
- "log_config": {
- "aggregation_interval": "aggregation_interval_value",
- "enable": True,
- "filter_expr": "filter_expr_value",
- "flow_sampling": 0.1394,
- "metadata": "metadata_value",
- "metadata_fields": ["metadata_fields_value_1", "metadata_fields_value_2"],
- },
- "name": "name_value",
- "network": "network_value",
- "private_ip_google_access": True,
- "private_ipv6_google_access": "private_ipv6_google_access_value",
- "purpose": "purpose_value",
- "region": "region_value",
- "role": "role_value",
- "secondary_ip_ranges": [
- {"ip_cidr_range": "ip_cidr_range_value", "range_name": "range_name_value"}
- ],
- "self_link": "self_link_value",
- "stack_type": "stack_type_value",
- "state": "state_value",
- }
+ request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2450,10 +2391,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get(request)
-def test_insert_unary_rest_flattened():
+def test_get_rest_flattened():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2462,43 +2403,45 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.Subnetwork()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "subnetwork": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- subnetwork_resource=compute.Subnetwork(
- creation_timestamp="creation_timestamp_value"
- ),
+ subnetwork="subnetwork_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.Subnetwork.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.get(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/subnetworks"
+ "%s/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_get_rest_flattened_error(transport: str = "rest"):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2507,17 +2450,15 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertSubnetworkRequest(),
+ client.get(
+ compute.GetSubnetworkRequest(),
project="project_value",
region="region_value",
- subnetwork_resource=compute.Subnetwork(
- creation_timestamp="creation_timestamp_value"
- ),
+ subnetwork="subnetwork_value",
)
-def test_insert_unary_rest_error():
+def test_get_rest_error():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2526,52 +2467,53 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListSubnetworksRequest,
+ compute.GetIamPolicySubnetworkRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_get_iam_policy_rest(request_type):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SubnetworkList(
- id="id_value",
- kind="kind_value",
- next_page_token="next_page_token_value",
- self_link="self_link_value",
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SubnetworkList.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get_iam_policy(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
-def test_list_rest_required_fields(request_type=compute.ListSubnetworksRequest):
+def test_get_iam_policy_rest_required_fields(
+ request_type=compute.GetIamPolicySubnetworkRequest,
+):
transport_class = transports.SubnetworksRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
+ request_init["resource"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2583,27 +2525,20 @@ def test_list_rest_required_fields(request_type=compute.ListSubnetworksRequest):
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
+ jsonified_request["resource"] = "resource_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).get_iam_policy._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("options_requested_policy_version",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -2611,6 +2546,8 @@ def test_list_rest_required_fields(request_type=compute.ListSubnetworksRequest):
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2619,7 +2556,7 @@ def test_list_rest_required_fields(request_type=compute.ListSubnetworksRequest):
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.SubnetworkList()
+ return_value = compute.Policy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2637,44 +2574,37 @@ def test_list_rest_required_fields(request_type=compute.ListSubnetworksRequest):
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SubnetworkList.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.get_iam_policy(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_get_iam_policy_rest_unset_required_fields():
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.get_iam_policy._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
- )
- )
+ set(("optionsRequestedPolicyVersion",))
& set(
(
"project",
"region",
+ "resource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_get_iam_policy_rest_interceptors(null_interceptor):
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2687,9 +2617,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SubnetworksRestInterceptor, "post_list"
+ transports.SubnetworksRestInterceptor, "post_get_iam_policy"
) as post, mock.patch.object(
- transports.SubnetworksRestInterceptor, "pre_list"
+ transports.SubnetworksRestInterceptor, "pre_get_iam_policy"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2704,19 +2634,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.SubnetworkList.to_json(
- compute.SubnetworkList()
- )
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
- request = compute.ListSubnetworksRequest()
+ request = compute.GetIamPolicySubnetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.SubnetworkList
+ post.return_value = compute.Policy
- client.list(
+ client.get_iam_policy(
request,
metadata=[
("key", "val"),
@@ -2728,8 +2656,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListSubnetworksRequest
+def test_get_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetIamPolicySubnetworkRequest
):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2737,7 +2665,7 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2"}
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2749,10 +2677,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.get_iam_policy(request)
-def test_list_rest_flattened():
+def test_get_iam_policy_rest_flattened():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2761,40 +2689,45 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.SubnetworkList()
+ return_value = compute.Policy()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1", "region": "sample2"}
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "resource": "sample3",
+ }
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
+ resource="resource_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.SubnetworkList.to_json(return_value)
+ json_return_value = compute.Policy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.get_iam_policy(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/subnetworks"
+ "%s/compute/v1/projects/{project}/regions/{region}/subnetworks/{resource}/getIamPolicy"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_get_iam_policy_rest_flattened_error(transport: str = "rest"):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2803,126 +2736,140 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListSubnetworksRequest(),
+ client.get_iam_policy(
+ compute.GetIamPolicySubnetworkRequest(),
project="project_value",
region="region_value",
+ resource="resource_value",
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_get_iam_policy_rest_error():
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertSubnetworkRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
- )
-
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.SubnetworkList(
- items=[
- compute.Subnetwork(),
- compute.Subnetwork(),
- compute.Subnetwork(),
- ],
- next_page_token="abc",
- ),
- compute.SubnetworkList(
- items=[],
- next_page_token="def",
- ),
- compute.SubnetworkList(
- items=[
- compute.Subnetwork(),
- ],
- next_page_token="ghi",
- ),
- compute.SubnetworkList(
- items=[
- compute.Subnetwork(),
- compute.Subnetwork(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.SubnetworkList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1", "region": "sample2"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.Subnetwork) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
-
-@pytest.mark.parametrize(
- "request_type",
- [
- compute.ListUsableSubnetworksRequest,
- dict,
- ],
-)
-def test_list_usable_rest(request_type):
- client = SubnetworksClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport="rest",
+ transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["subnetwork_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable_flow_logs": True,
+ "external_ipv6_prefix": "external_ipv6_prefix_value",
+ "fingerprint": "fingerprint_value",
+ "gateway_address": "gateway_address_value",
+ "id": 205,
+ "internal_ipv6_prefix": "internal_ipv6_prefix_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_cidr_range": "ipv6_cidr_range_value",
+ "kind": "kind_value",
+ "log_config": {
+ "aggregation_interval": "aggregation_interval_value",
+ "enable": True,
+ "filter_expr": "filter_expr_value",
+ "flow_sampling": 0.1394,
+ "metadata": "metadata_value",
+ "metadata_fields": ["metadata_fields_value_1", "metadata_fields_value_2"],
+ },
+ "name": "name_value",
+ "network": "network_value",
+ "private_ip_google_access": True,
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "purpose": "purpose_value",
+ "region": "region_value",
+ "role": "role_value",
+ "secondary_ip_ranges": [
+ {"ip_cidr_range": "ip_cidr_range_value", "range_name": "range_name_value"}
+ ],
+ "self_link": "self_link_value",
+ "stack_type": "stack_type_value",
+ "state": "state_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.UsableSubnetworksAggregatedList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.UsableSubnetworksAggregatedList.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_usable(request)
+ response = client.insert(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListUsablePager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_usable_rest_required_fields(
- request_type=compute.ListUsableSubnetworksRequest,
-):
+def test_insert_rest_required_fields(request_type=compute.InsertSubnetworkRequest):
transport_class = transports.SubnetworksRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["region"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -2934,31 +2881,26 @@ def test_list_usable_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_usable._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list_usable._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2967,7 +2909,7 @@ def test_list_usable_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.UsableSubnetworksAggregatedList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -2978,48 +2920,45 @@ def test_list_usable_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "post",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.UsableSubnetworksAggregatedList.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list_usable(request)
+ response = client.insert(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_usable_rest_unset_required_fields():
+def test_insert_rest_unset_required_fields():
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list_usable._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "project",
+ "region",
+ "subnetworkResource",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_usable_rest_interceptors(null_interceptor):
+def test_insert_rest_interceptors(null_interceptor):
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3032,9 +2971,9 @@ def test_list_usable_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SubnetworksRestInterceptor, "post_list_usable"
+ transports.SubnetworksRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.SubnetworksRestInterceptor, "pre_list_usable"
+ transports.SubnetworksRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3049,19 +2988,17 @@ def test_list_usable_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.UsableSubnetworksAggregatedList.to_json(
- compute.UsableSubnetworksAggregatedList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListUsableSubnetworksRequest()
+ request = compute.InsertSubnetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.UsableSubnetworksAggregatedList
+ post.return_value = compute.Operation
- client.list_usable(
+ client.insert(
request,
metadata=[
("key", "val"),
@@ -3073,8 +3010,8 @@ def test_list_usable_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_usable_rest_bad_request(
- transport: str = "rest", request_type=compute.ListUsableSubnetworksRequest
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertSubnetworkRequest
):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3082,7 +3019,42 @@ def test_list_usable_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "region": "sample2"}
+ request_init["subnetwork_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable_flow_logs": True,
+ "external_ipv6_prefix": "external_ipv6_prefix_value",
+ "fingerprint": "fingerprint_value",
+ "gateway_address": "gateway_address_value",
+ "id": 205,
+ "internal_ipv6_prefix": "internal_ipv6_prefix_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_cidr_range": "ipv6_cidr_range_value",
+ "kind": "kind_value",
+ "log_config": {
+ "aggregation_interval": "aggregation_interval_value",
+ "enable": True,
+ "filter_expr": "filter_expr_value",
+ "flow_sampling": 0.1394,
+ "metadata": "metadata_value",
+ "metadata_fields": ["metadata_fields_value_1", "metadata_fields_value_2"],
+ },
+ "name": "name_value",
+ "network": "network_value",
+ "private_ip_google_access": True,
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "purpose": "purpose_value",
+ "region": "region_value",
+ "role": "role_value",
+ "secondary_ip_ranges": [
+ {"ip_cidr_range": "ip_cidr_range_value", "range_name": "range_name_value"}
+ ],
+ "self_link": "self_link_value",
+ "stack_type": "stack_type_value",
+ "state": "state_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -3094,10 +3066,10 @@ def test_list_usable_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list_usable(request)
+ client.insert(request)
-def test_list_usable_rest_flattened():
+def test_insert_rest_flattened():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3106,41 +3078,43 @@ def test_list_usable_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.UsableSubnetworksAggregatedList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "region": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ region="region_value",
+ subnetwork_resource=compute.Subnetwork(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.UsableSubnetworksAggregatedList.to_json(
- return_value
- )
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list_usable(**mock_args)
+ client.insert(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/aggregated/subnetworks/listUsable"
+ "%s/compute/v1/projects/{project}/regions/{region}/subnetworks"
% client.transport._host,
args[1],
)
-def test_list_usable_rest_flattened_error(transport: str = "rest"):
+def test_insert_rest_flattened_error(transport: str = "rest"):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3149,90 +3123,37 @@ def test_list_usable_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list_usable(
- compute.ListUsableSubnetworksRequest(),
+ client.insert(
+ compute.InsertSubnetworkRequest(),
project="project_value",
+ region="region_value",
+ subnetwork_resource=compute.Subnetwork(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
-def test_list_usable_rest_pager(transport: str = "rest"):
+def test_insert_rest_error():
client = SubnetworksClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.UsableSubnetworksAggregatedList(
- items=[
- compute.UsableSubnetwork(),
- compute.UsableSubnetwork(),
- compute.UsableSubnetwork(),
- ],
- next_page_token="abc",
- ),
- compute.UsableSubnetworksAggregatedList(
- items=[],
- next_page_token="def",
- ),
- compute.UsableSubnetworksAggregatedList(
- items=[
- compute.UsableSubnetwork(),
- ],
- next_page_token="ghi",
- ),
- compute.UsableSubnetworksAggregatedList(
- items=[
- compute.UsableSubnetwork(),
- compute.UsableSubnetwork(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(
- compute.UsableSubnetworksAggregatedList.to_json(x) for x in response
- )
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list_usable(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.UsableSubnetwork) for i in results)
-
- pages = list(client.list_usable(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchSubnetworkRequest,
+ compute.InsertSubnetworkRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_insert_unary_rest(request_type):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
+ request_init = {"project": "sample1", "region": "sample2"}
request_init["subnetwork_resource"] = {
"creation_timestamp": "creation_timestamp_value",
"description": "description_value",
@@ -3304,41 +3225,20 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.insert_unary(request)
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(request_type=compute.PatchSubnetworkRequest):
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertSubnetworkRequest,
+):
transport_class = transports.SubnetworksRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
- request_init["subnetwork"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -3350,25 +3250,19 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchSubnetworkRe
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
- jsonified_request["subnetwork"] = "subnetwork_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).insert._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "drain_timeout_seconds",
- "request_id",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -3376,8 +3270,6 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchSubnetworkRe
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
- assert "subnetwork" in jsonified_request
- assert jsonified_request["subnetwork"] == "subnetwork_value"
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3397,7 +3289,7 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchSubnetworkRe
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -3409,31 +3301,25 @@ def test_patch_unary_rest_required_fields(request_type=compute.PatchSubnetworkRe
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.insert_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_insert_unary_rest_unset_required_fields():
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.insert._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
- (
- "drainTimeoutSeconds",
- "requestId",
- )
- )
+ set(("requestId",))
& set(
(
"project",
"region",
- "subnetwork",
"subnetworkResource",
)
)
@@ -3441,7 +3327,7 @@ def test_patch_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_insert_unary_rest_interceptors(null_interceptor):
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3454,9 +3340,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SubnetworksRestInterceptor, "post_patch"
+ transports.SubnetworksRestInterceptor, "post_insert"
) as post, mock.patch.object(
- transports.SubnetworksRestInterceptor, "pre_patch"
+ transports.SubnetworksRestInterceptor, "pre_insert"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3473,7 +3359,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchSubnetworkRequest()
+ request = compute.InsertSubnetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -3481,7 +3367,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.insert_unary(
request,
metadata=[
("key", "val"),
@@ -3493,8 +3379,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchSubnetworkRequest
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertSubnetworkRequest
):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3502,7 +3388,7 @@ def test_patch_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
+ request_init = {"project": "sample1", "region": "sample2"}
request_init["subnetwork_resource"] = {
"creation_timestamp": "creation_timestamp_value",
"description": "description_value",
@@ -3549,10 +3435,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.insert_unary(request)
-def test_patch_unary_rest_flattened():
+def test_insert_unary_rest_flattened():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -3564,17 +3450,12 @@ def test_patch_unary_rest_flattened():
return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {
- "project": "sample1",
- "region": "sample2",
- "subnetwork": "sample3",
- }
+ sample_request = {"project": "sample1", "region": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- subnetwork="subnetwork_value",
subnetwork_resource=compute.Subnetwork(
creation_timestamp="creation_timestamp_value"
),
@@ -3589,20 +3470,20 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.insert_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}"
+ "%s/compute/v1/projects/{project}/regions/{region}/subnetworks"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -3611,18 +3492,17 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchSubnetworkRequest(),
+ client.insert_unary(
+ compute.InsertSubnetworkRequest(),
project="project_value",
region="region_value",
- subnetwork="subnetwork_value",
subnetwork_resource=compute.Subnetwork(
creation_timestamp="creation_timestamp_value"
),
)
-def test_patch_unary_rest_error():
+def test_insert_unary_rest_error():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -3631,130 +3511,2033 @@ def test_patch_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.SetIamPolicySubnetworkRequest,
+ compute.ListSubnetworksRequest,
dict,
],
)
-def test_set_iam_policy_rest(request_type):
+def test_list_rest(request_type):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
- request_init["region_set_policy_request_resource"] = {
- "bindings": [
- {
- "binding_id": "binding_id_value",
- "condition": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "members": ["members_value_1", "members_value_2"],
- "role": "role_value",
- }
- ],
- "etag": "etag_value",
- "policy": {
- "audit_configs": [
- {
- "audit_log_configs": [
- {
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "ignore_child_exemptions": True,
- "log_type": "log_type_value",
- }
- ],
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "service": "service_value",
- }
- ],
- "bindings": {},
- "etag": "etag_value",
- "iam_owned": True,
- "rules": [
- {
- "action": "action_value",
- "conditions": [
- {
- "iam": "iam_value",
- "op": "op_value",
- "svc": "svc_value",
- "sys": "sys_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "description": "description_value",
- "ins": ["ins_value_1", "ins_value_2"],
- "log_configs": [
- {
- "cloud_audit": {
- "authorization_logging_options": {
- "permission_type": "permission_type_value"
- },
- "log_name": "log_name_value",
- },
- "counter": {
- "custom_fields": [
- {"name": "name_value", "value": "value_value"}
- ],
- "field": "field_value",
- "metric": "metric_value",
- },
- "data_access": {"log_mode": "log_mode_value"},
- }
- ],
- "not_ins": ["not_ins_value_1", "not_ins_value_2"],
- "permissions": ["permissions_value_1", "permissions_value_2"],
- }
- ],
- "version": 774,
- },
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SubnetworkList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SubnetworkList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListSubnetworksRequest):
+ transport_class = transports.SubnetworksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SubnetworkList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SubnetworkList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.SubnetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.SubnetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SubnetworksRestInterceptor(),
+ )
+ client = SubnetworksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SubnetworksRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.SubnetworksRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.SubnetworkList.to_json(
+ compute.SubnetworkList()
+ )
+
+ request = compute.ListSubnetworksRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.SubnetworkList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListSubnetworksRequest
+):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.SubnetworkList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.SubnetworkList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/subnetworks"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListSubnetworksRequest(),
+ project="project_value",
+ region="region_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.SubnetworkList(
+ items=[
+ compute.Subnetwork(),
+ compute.Subnetwork(),
+ compute.Subnetwork(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.SubnetworkList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.SubnetworkList(
+ items=[
+ compute.Subnetwork(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.SubnetworkList(
+ items=[
+ compute.Subnetwork(),
+ compute.Subnetwork(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.SubnetworkList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1", "region": "sample2"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.Subnetwork) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListUsableSubnetworksRequest,
+ dict,
+ ],
+)
+def test_list_usable_rest(request_type):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.UsableSubnetworksAggregatedList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.UsableSubnetworksAggregatedList.to_json(
+ return_value
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list_usable(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListUsablePager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_usable_rest_required_fields(
+ request_type=compute.ListUsableSubnetworksRequest,
+):
+ transport_class = transports.SubnetworksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_usable._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list_usable._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.UsableSubnetworksAggregatedList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.UsableSubnetworksAggregatedList.to_json(
+ return_value
+ )
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list_usable(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_usable_rest_unset_required_fields():
+ transport = transports.SubnetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list_usable._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_usable_rest_interceptors(null_interceptor):
+ transport = transports.SubnetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SubnetworksRestInterceptor(),
+ )
+ client = SubnetworksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SubnetworksRestInterceptor, "post_list_usable"
+ ) as post, mock.patch.object(
+ transports.SubnetworksRestInterceptor, "pre_list_usable"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.UsableSubnetworksAggregatedList.to_json(
+ compute.UsableSubnetworksAggregatedList()
+ )
+
+ request = compute.ListUsableSubnetworksRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.UsableSubnetworksAggregatedList
+
+ client.list_usable(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_usable_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListUsableSubnetworksRequest
+):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list_usable(request)
+
+
+def test_list_usable_rest_flattened():
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.UsableSubnetworksAggregatedList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.UsableSubnetworksAggregatedList.to_json(
+ return_value
+ )
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list_usable(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/aggregated/subnetworks/listUsable"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_usable_rest_flattened_error(transport: str = "rest"):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list_usable(
+ compute.ListUsableSubnetworksRequest(),
+ project="project_value",
+ )
+
+
+def test_list_usable_rest_pager(transport: str = "rest"):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.UsableSubnetworksAggregatedList(
+ items=[
+ compute.UsableSubnetwork(),
+ compute.UsableSubnetwork(),
+ compute.UsableSubnetwork(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.UsableSubnetworksAggregatedList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.UsableSubnetworksAggregatedList(
+ items=[
+ compute.UsableSubnetwork(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.UsableSubnetworksAggregatedList(
+ items=[
+ compute.UsableSubnetwork(),
+ compute.UsableSubnetwork(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(
+ compute.UsableSubnetworksAggregatedList.to_json(x) for x in response
+ )
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list_usable(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.UsableSubnetwork) for i in results)
+
+ pages = list(client.list_usable(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchSubnetworkRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
+ request_init["subnetwork_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable_flow_logs": True,
+ "external_ipv6_prefix": "external_ipv6_prefix_value",
+ "fingerprint": "fingerprint_value",
+ "gateway_address": "gateway_address_value",
+ "id": 205,
+ "internal_ipv6_prefix": "internal_ipv6_prefix_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_cidr_range": "ipv6_cidr_range_value",
+ "kind": "kind_value",
+ "log_config": {
+ "aggregation_interval": "aggregation_interval_value",
+ "enable": True,
+ "filter_expr": "filter_expr_value",
+ "flow_sampling": 0.1394,
+ "metadata": "metadata_value",
+ "metadata_fields": ["metadata_fields_value_1", "metadata_fields_value_2"],
+ },
+ "name": "name_value",
+ "network": "network_value",
+ "private_ip_google_access": True,
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "purpose": "purpose_value",
+ "region": "region_value",
+ "role": "role_value",
+ "secondary_ip_ranges": [
+ {"ip_cidr_range": "ip_cidr_range_value", "range_name": "range_name_value"}
+ ],
+ "self_link": "self_link_value",
+ "stack_type": "stack_type_value",
+ "state": "state_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchSubnetworkRequest):
+ transport_class = transports.SubnetworksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["subnetwork"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["subnetwork"] = "subnetwork_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "drain_timeout_seconds",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "subnetwork" in jsonified_request
+ assert jsonified_request["subnetwork"] == "subnetwork_value"
+
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.SubnetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "drainTimeoutSeconds",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ "subnetwork",
+ "subnetworkResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.SubnetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SubnetworksRestInterceptor(),
+ )
+ client = SubnetworksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SubnetworksRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.SubnetworksRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchSubnetworkRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchSubnetworkRequest
+):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
+ request_init["subnetwork_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable_flow_logs": True,
+ "external_ipv6_prefix": "external_ipv6_prefix_value",
+ "fingerprint": "fingerprint_value",
+ "gateway_address": "gateway_address_value",
+ "id": 205,
+ "internal_ipv6_prefix": "internal_ipv6_prefix_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_cidr_range": "ipv6_cidr_range_value",
+ "kind": "kind_value",
+ "log_config": {
+ "aggregation_interval": "aggregation_interval_value",
+ "enable": True,
+ "filter_expr": "filter_expr_value",
+ "flow_sampling": 0.1394,
+ "metadata": "metadata_value",
+ "metadata_fields": ["metadata_fields_value_1", "metadata_fields_value_2"],
+ },
+ "name": "name_value",
+ "network": "network_value",
+ "private_ip_google_access": True,
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "purpose": "purpose_value",
+ "region": "region_value",
+ "role": "role_value",
+ "secondary_ip_ranges": [
+ {"ip_cidr_range": "ip_cidr_range_value", "range_name": "range_name_value"}
+ ],
+ "self_link": "self_link_value",
+ "stack_type": "stack_type_value",
+ "state": "state_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "subnetwork": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ subnetwork="subnetwork_value",
+ subnetwork_resource=compute.Subnetwork(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchSubnetworkRequest(),
+ project="project_value",
+ region="region_value",
+ subnetwork="subnetwork_value",
+ subnetwork_resource=compute.Subnetwork(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_patch_rest_error():
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchSubnetworkRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
+ request_init["subnetwork_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable_flow_logs": True,
+ "external_ipv6_prefix": "external_ipv6_prefix_value",
+ "fingerprint": "fingerprint_value",
+ "gateway_address": "gateway_address_value",
+ "id": 205,
+ "internal_ipv6_prefix": "internal_ipv6_prefix_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_cidr_range": "ipv6_cidr_range_value",
+ "kind": "kind_value",
+ "log_config": {
+ "aggregation_interval": "aggregation_interval_value",
+ "enable": True,
+ "filter_expr": "filter_expr_value",
+ "flow_sampling": 0.1394,
+ "metadata": "metadata_value",
+ "metadata_fields": ["metadata_fields_value_1", "metadata_fields_value_2"],
+ },
+ "name": "name_value",
+ "network": "network_value",
+ "private_ip_google_access": True,
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "purpose": "purpose_value",
+ "region": "region_value",
+ "role": "role_value",
+ "secondary_ip_ranges": [
+ {"ip_cidr_range": "ip_cidr_range_value", "range_name": "range_name_value"}
+ ],
+ "self_link": "self_link_value",
+ "stack_type": "stack_type_value",
+ "state": "state_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(request_type=compute.PatchSubnetworkRequest):
+ transport_class = transports.SubnetworksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["subnetwork"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["subnetwork"] = "subnetwork_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "drain_timeout_seconds",
+ "request_id",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "subnetwork" in jsonified_request
+ assert jsonified_request["subnetwork"] == "subnetwork_value"
+
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_unary_rest_unset_required_fields():
+ transport = transports.SubnetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "drainTimeoutSeconds",
+ "requestId",
+ )
+ )
+ & set(
+ (
+ "project",
+ "region",
+ "subnetwork",
+ "subnetworkResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_unary_rest_interceptors(null_interceptor):
+ transport = transports.SubnetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SubnetworksRestInterceptor(),
+ )
+ client = SubnetworksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SubnetworksRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.SubnetworksRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchSubnetworkRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchSubnetworkRequest
+):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
+ request_init["subnetwork_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "enable_flow_logs": True,
+ "external_ipv6_prefix": "external_ipv6_prefix_value",
+ "fingerprint": "fingerprint_value",
+ "gateway_address": "gateway_address_value",
+ "id": 205,
+ "internal_ipv6_prefix": "internal_ipv6_prefix_value",
+ "ip_cidr_range": "ip_cidr_range_value",
+ "ipv6_access_type": "ipv6_access_type_value",
+ "ipv6_cidr_range": "ipv6_cidr_range_value",
+ "kind": "kind_value",
+ "log_config": {
+ "aggregation_interval": "aggregation_interval_value",
+ "enable": True,
+ "filter_expr": "filter_expr_value",
+ "flow_sampling": 0.1394,
+ "metadata": "metadata_value",
+ "metadata_fields": ["metadata_fields_value_1", "metadata_fields_value_2"],
+ },
+ "name": "name_value",
+ "network": "network_value",
+ "private_ip_google_access": True,
+ "private_ipv6_google_access": "private_ipv6_google_access_value",
+ "purpose": "purpose_value",
+ "region": "region_value",
+ "role": "role_value",
+ "secondary_ip_ranges": [
+ {"ip_cidr_range": "ip_cidr_range_value", "range_name": "range_name_value"}
+ ],
+ "self_link": "self_link_value",
+ "stack_type": "stack_type_value",
+ "state": "state_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch_unary(request)
+
+
+def test_patch_unary_rest_flattened():
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "subnetwork": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ subnetwork="subnetwork_value",
+ subnetwork_resource=compute.Subnetwork(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch_unary(
+ compute.PatchSubnetworkRequest(),
+ project="project_value",
+ region="region_value",
+ subnetwork="subnetwork_value",
+ subnetwork_resource=compute.Subnetwork(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_patch_unary_rest_error():
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetIamPolicySubnetworkRequest,
+ dict,
+ ],
+)
+def test_set_iam_policy_rest(request_type):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init["region_set_policy_request_resource"] = {
+ "bindings": [
+ {
+ "binding_id": "binding_id_value",
+ "condition": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "members": ["members_value_1", "members_value_2"],
+ "role": "role_value",
+ }
+ ],
+ "etag": "etag_value",
+ "policy": {
+ "audit_configs": [
+ {
+ "audit_log_configs": [
+ {
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "ignore_child_exemptions": True,
+ "log_type": "log_type_value",
+ }
+ ],
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "service": "service_value",
+ }
+ ],
+ "bindings": {},
+ "etag": "etag_value",
+ "iam_owned": True,
+ "rules": [
+ {
+ "action": "action_value",
+ "conditions": [
+ {
+ "iam": "iam_value",
+ "op": "op_value",
+ "svc": "svc_value",
+ "sys": "sys_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "ins": ["ins_value_1", "ins_value_2"],
+ "log_configs": [
+ {
+ "cloud_audit": {
+ "authorization_logging_options": {
+ "permission_type": "permission_type_value"
+ },
+ "log_name": "log_name_value",
+ },
+ "counter": {
+ "custom_fields": [
+ {"name": "name_value", "value": "value_value"}
+ ],
+ "field": "field_value",
+ "metric": "metric_value",
+ },
+ "data_access": {"log_mode": "log_mode_value"},
+ }
+ ],
+ "not_ins": ["not_ins_value_1", "not_ins_value_2"],
+ "permissions": ["permissions_value_1", "permissions_value_2"],
+ }
+ ],
+ "version": 774,
+ },
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy(
+ etag="etag_value",
+ iam_owned=True,
+ version=774,
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.set_iam_policy(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Policy)
+ assert response.etag == "etag_value"
+ assert response.iam_owned is True
+ assert response.version == 774
+
+
+def test_set_iam_policy_rest_required_fields(
+ request_type=compute.SetIamPolicySubnetworkRequest,
+):
+ transport_class = transports.SubnetworksRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["region"] = ""
+ request_init["resource"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["region"] = "region_value"
+ jsonified_request["resource"] = "resource_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "region" in jsonified_request
+ assert jsonified_request["region"] == "region_value"
+ assert "resource" in jsonified_request
+ assert jsonified_request["resource"] == "resource_value"
+
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.set_iam_policy(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_set_iam_policy_rest_unset_required_fields():
+ transport = transports.SubnetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(())
+ & set(
+ (
+ "project",
+ "region",
+ "regionSetPolicyRequestResource",
+ "resource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_set_iam_policy_rest_interceptors(null_interceptor):
+ transport = transports.SubnetworksRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.SubnetworksRestInterceptor(),
+ )
+ client = SubnetworksClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.SubnetworksRestInterceptor, "post_set_iam_policy"
+ ) as post, mock.patch.object(
+ transports.SubnetworksRestInterceptor, "pre_set_iam_policy"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Policy.to_json(compute.Policy())
+
+ request = compute.SetIamPolicySubnetworkRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Policy
+
+ client.set_iam_policy(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_set_iam_policy_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetIamPolicySubnetworkRequest
+):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
+ request_init["region_set_policy_request_resource"] = {
+ "bindings": [
+ {
+ "binding_id": "binding_id_value",
+ "condition": {
+ "description": "description_value",
+ "expression": "expression_value",
+ "location": "location_value",
+ "title": "title_value",
+ },
+ "members": ["members_value_1", "members_value_2"],
+ "role": "role_value",
+ }
+ ],
+ "etag": "etag_value",
+ "policy": {
+ "audit_configs": [
+ {
+ "audit_log_configs": [
+ {
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "ignore_child_exemptions": True,
+ "log_type": "log_type_value",
+ }
+ ],
+ "exempted_members": [
+ "exempted_members_value_1",
+ "exempted_members_value_2",
+ ],
+ "service": "service_value",
+ }
+ ],
+ "bindings": {},
+ "etag": "etag_value",
+ "iam_owned": True,
+ "rules": [
+ {
+ "action": "action_value",
+ "conditions": [
+ {
+ "iam": "iam_value",
+ "op": "op_value",
+ "svc": "svc_value",
+ "sys": "sys_value",
+ "values": ["values_value_1", "values_value_2"],
+ }
+ ],
+ "description": "description_value",
+ "ins": ["ins_value_1", "ins_value_2"],
+ "log_configs": [
+ {
+ "cloud_audit": {
+ "authorization_logging_options": {
+ "permission_type": "permission_type_value"
+ },
+ "log_name": "log_name_value",
+ },
+ "counter": {
+ "custom_fields": [
+ {"name": "name_value", "value": "value_value"}
+ ],
+ "field": "field_value",
+ "metric": "metric_value",
+ },
+ "data_access": {"log_mode": "log_mode_value"},
+ }
+ ],
+ "not_ins": ["not_ins_value_1", "not_ins_value_2"],
+ "permissions": ["permissions_value_1", "permissions_value_2"],
+ }
+ ],
+ "version": 774,
+ },
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.set_iam_policy(request)
+
+
+def test_set_iam_policy_rest_flattened():
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Policy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {
+ "project": "sample1",
+ "region": "sample2",
+ "resource": "sample3",
+ }
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ region="region_value",
+ resource="resource_value",
+ region_set_policy_request_resource=compute.RegionSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Policy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.set_iam_policy(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/regions/{region}/subnetworks/{resource}/setIamPolicy"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.set_iam_policy(
+ compute.SetIamPolicySubnetworkRequest(),
+ project="project_value",
+ region="region_value",
+ resource="resource_value",
+ region_set_policy_request_resource=compute.RegionSetPolicyRequest(
+ bindings=[compute.Binding(binding_id="binding_id_value")]
+ ),
+ )
+
+
+def test_set_iam_policy_rest_error():
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.SetPrivateIpGoogleAccessSubnetworkRequest,
+ dict,
+ ],
+)
+def test_set_private_ip_google_access_rest(request_type):
+ client = SubnetworksClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
+ request_init["subnetworks_set_private_ip_google_access_request_resource"] = {
+ "private_ip_google_access": True
}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy(
- etag="etag_value",
- iam_owned=True,
- version=774,
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.set_private_ip_google_access(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Policy)
- assert response.etag == "etag_value"
- assert response.iam_owned is True
- assert response.version == 774
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_set_iam_policy_rest_required_fields(
- request_type=compute.SetIamPolicySubnetworkRequest,
+def test_set_private_ip_google_access_rest_required_fields(
+ request_type=compute.SetPrivateIpGoogleAccessSubnetworkRequest,
):
transport_class = transports.SubnetworksRestTransport
request_init = {}
request_init["project"] = ""
request_init["region"] = ""
- request_init["resource"] = ""
+ request_init["subnetwork"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -3766,18 +5549,20 @@ def test_set_iam_policy_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).set_private_ip_google_access._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
jsonified_request["region"] = "region_value"
- jsonified_request["resource"] = "resource_value"
+ jsonified_request["subnetwork"] = "subnetwork_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).set_iam_policy._get_unset_required_fields(jsonified_request)
+ ).set_private_ip_google_access._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -3785,8 +5570,8 @@ def test_set_iam_policy_rest_required_fields(
assert jsonified_request["project"] == "project_value"
assert "region" in jsonified_request
assert jsonified_request["region"] == "region_value"
- assert "resource" in jsonified_request
- assert jsonified_request["resource"] == "resource_value"
+ assert "subnetwork" in jsonified_request
+ assert jsonified_request["subnetwork"] == "subnetwork_value"
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3795,7 +5580,7 @@ def test_set_iam_policy_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -3814,38 +5599,38 @@ def test_set_iam_policy_rest_required_fields(
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.set_iam_policy(request)
+ response = client.set_private_ip_google_access(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_set_iam_policy_rest_unset_required_fields():
+def test_set_private_ip_google_access_rest_unset_required_fields():
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.set_iam_policy._get_unset_required_fields({})
+ unset_fields = transport.set_private_ip_google_access._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
"region",
- "regionSetPolicyRequestResource",
- "resource",
+ "subnetwork",
+ "subnetworksSetPrivateIpGoogleAccessRequestResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_set_iam_policy_rest_interceptors(null_interceptor):
+def test_set_private_ip_google_access_rest_interceptors(null_interceptor):
transport = transports.SubnetworksRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -3858,9 +5643,9 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.SubnetworksRestInterceptor, "post_set_iam_policy"
+ transports.SubnetworksRestInterceptor, "post_set_private_ip_google_access"
) as post, mock.patch.object(
- transports.SubnetworksRestInterceptor, "pre_set_iam_policy"
+ transports.SubnetworksRestInterceptor, "pre_set_private_ip_google_access"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -3875,17 +5660,17 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Policy.to_json(compute.Policy())
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.SetIamPolicySubnetworkRequest()
+ request = compute.SetPrivateIpGoogleAccessSubnetworkRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Policy
+ post.return_value = compute.Operation
- client.set_iam_policy(
+ client.set_private_ip_google_access(
request,
metadata=[
("key", "val"),
@@ -3897,8 +5682,9 @@ def test_set_iam_policy_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_set_iam_policy_rest_bad_request(
- transport: str = "rest", request_type=compute.SetIamPolicySubnetworkRequest
+def test_set_private_ip_google_access_rest_bad_request(
+ transport: str = "rest",
+ request_type=compute.SetPrivateIpGoogleAccessSubnetworkRequest,
):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -3906,83 +5692,9 @@ def test_set_iam_policy_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"}
- request_init["region_set_policy_request_resource"] = {
- "bindings": [
- {
- "binding_id": "binding_id_value",
- "condition": {
- "description": "description_value",
- "expression": "expression_value",
- "location": "location_value",
- "title": "title_value",
- },
- "members": ["members_value_1", "members_value_2"],
- "role": "role_value",
- }
- ],
- "etag": "etag_value",
- "policy": {
- "audit_configs": [
- {
- "audit_log_configs": [
- {
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "ignore_child_exemptions": True,
- "log_type": "log_type_value",
- }
- ],
- "exempted_members": [
- "exempted_members_value_1",
- "exempted_members_value_2",
- ],
- "service": "service_value",
- }
- ],
- "bindings": {},
- "etag": "etag_value",
- "iam_owned": True,
- "rules": [
- {
- "action": "action_value",
- "conditions": [
- {
- "iam": "iam_value",
- "op": "op_value",
- "svc": "svc_value",
- "sys": "sys_value",
- "values": ["values_value_1", "values_value_2"],
- }
- ],
- "description": "description_value",
- "ins": ["ins_value_1", "ins_value_2"],
- "log_configs": [
- {
- "cloud_audit": {
- "authorization_logging_options": {
- "permission_type": "permission_type_value"
- },
- "log_name": "log_name_value",
- },
- "counter": {
- "custom_fields": [
- {"name": "name_value", "value": "value_value"}
- ],
- "field": "field_value",
- "metric": "metric_value",
- },
- "data_access": {"log_mode": "log_mode_value"},
- }
- ],
- "not_ins": ["not_ins_value_1", "not_ins_value_2"],
- "permissions": ["permissions_value_1", "permissions_value_2"],
- }
- ],
- "version": 774,
- },
+ request_init = {"project": "sample1", "region": "sample2", "subnetwork": "sample3"}
+ request_init["subnetworks_set_private_ip_google_access_request_resource"] = {
+ "private_ip_google_access": True
}
request = request_type(request_init)
@@ -3995,10 +5707,10 @@ def test_set_iam_policy_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.set_iam_policy(request)
+ client.set_private_ip_google_access(request)
-def test_set_iam_policy_rest_flattened():
+def test_set_private_ip_google_access_rest_flattened():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -4007,22 +5719,22 @@ def test_set_iam_policy_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Policy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {
"project": "sample1",
"region": "sample2",
- "resource": "sample3",
+ "subnetwork": "sample3",
}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
region="region_value",
- resource="resource_value",
- region_set_policy_request_resource=compute.RegionSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
+ subnetwork="subnetwork_value",
+ subnetworks_set_private_ip_google_access_request_resource=compute.SubnetworksSetPrivateIpGoogleAccessRequest(
+ private_ip_google_access=True
),
)
mock_args.update(sample_request)
@@ -4030,25 +5742,25 @@ def test_set_iam_policy_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Policy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.set_iam_policy(**mock_args)
+ client.set_private_ip_google_access(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/regions/{region}/subnetworks/{resource}/setIamPolicy"
+ "%s/compute/v1/projects/{project}/regions/{region}/subnetworks/{subnetwork}/setPrivateIpGoogleAccess"
% client.transport._host,
args[1],
)
-def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
+def test_set_private_ip_google_access_rest_flattened_error(transport: str = "rest"):
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -4057,18 +5769,18 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.set_iam_policy(
- compute.SetIamPolicySubnetworkRequest(),
+ client.set_private_ip_google_access(
+ compute.SetPrivateIpGoogleAccessSubnetworkRequest(),
project="project_value",
region="region_value",
- resource="resource_value",
- region_set_policy_request_resource=compute.RegionSetPolicyRequest(
- bindings=[compute.Binding(binding_id="binding_id_value")]
+ subnetwork="subnetwork_value",
+ subnetworks_set_private_ip_google_access_request_resource=compute.SubnetworksSetPrivateIpGoogleAccessRequest(
+ private_ip_google_access=True
),
)
-def test_set_iam_policy_rest_error():
+def test_set_private_ip_google_access_rest_error():
client = SubnetworksClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -4132,28 +5844,6 @@ def test_set_private_ip_google_access_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_set_private_ip_google_access_unary_rest_required_fields(
@@ -4786,6 +6476,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = SubnetworksClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_subnetworks_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -4828,6 +6531,14 @@ def test_subnetworks_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_subnetworks_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_target_grpc_proxies.py b/tests/unit/gapic/compute_v1/test_target_grpc_proxies.py
index 625fd1c9e..be381d35b 100644
--- a/tests/unit/gapic/compute_v1/test_target_grpc_proxies.py
+++ b/tests/unit/gapic/compute_v1/test_target_grpc_proxies.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -545,7 +547,7 @@ def test_target_grpc_proxies_client_client_options_credentials_file(
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -589,10 +591,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -617,9 +619,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteTargetGrpcProxyRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteTargetGrpcProxyRequest):
transport_class = transports.TargetGrpcProxiesRestTransport
request_init = {}
@@ -686,14 +686,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.TargetGrpcProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -711,7 +711,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.TargetGrpcProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -751,7 +751,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -763,7 +763,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteTargetGrpcProxyRequest
):
client = TargetGrpcProxiesClient(
@@ -784,10 +784,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -816,7 +816,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -829,7 +829,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -838,14 +838,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteTargetGrpcProxyRequest(),
project="project_value",
target_grpc_proxy="target_grpc_proxy_value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -854,11 +854,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetTargetGrpcProxyRequest,
+ compute.DeleteTargetGrpcProxyRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -871,42 +871,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetGrpcProxy(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
- self_link_with_id="self_link_with_id_value",
- url_map="url_map_value",
- validate_for_proxyless=True,
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetGrpcProxy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.TargetGrpcProxy)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.self_link == "self_link_value"
- assert response.self_link_with_id == "self_link_with_id_value"
- assert response.url_map == "url_map_value"
- assert response.validate_for_proxyless is True
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetTargetGrpcProxyRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteTargetGrpcProxyRequest,
+):
transport_class = transports.TargetGrpcProxiesRestTransport
request_init = {}
@@ -923,7 +927,7 @@ def test_get_rest_required_fields(request_type=compute.GetTargetGrpcProxyRequest
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -933,7 +937,9 @@ def test_get_rest_required_fields(request_type=compute.GetTargetGrpcProxyRequest
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -949,7 +955,7 @@ def test_get_rest_required_fields(request_type=compute.GetTargetGrpcProxyRequest
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.TargetGrpcProxy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -960,32 +966,32 @@ def test_get_rest_required_fields(request_type=compute.GetTargetGrpcProxyRequest
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetGrpcProxy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.TargetGrpcProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -996,7 +1002,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.TargetGrpcProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1009,9 +1015,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.TargetGrpcProxiesRestInterceptor, "post_get"
+ transports.TargetGrpcProxiesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.TargetGrpcProxiesRestInterceptor, "pre_get"
+ transports.TargetGrpcProxiesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1026,19 +1032,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.TargetGrpcProxy.to_json(
- compute.TargetGrpcProxy()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetTargetGrpcProxyRequest()
+ request = compute.DeleteTargetGrpcProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.TargetGrpcProxy
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1050,8 +1054,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetTargetGrpcProxyRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteTargetGrpcProxyRequest
):
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1071,10 +1075,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1083,7 +1087,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetGrpcProxy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "target_grpc_proxy": "sample2"}
@@ -1098,12 +1102,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetGrpcProxy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1116,7 +1120,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1125,14 +1129,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetTargetGrpcProxyRequest(),
+ client.delete_unary(
+ compute.DeleteTargetGrpcProxyRequest(),
project="project_value",
target_grpc_proxy="target_grpc_proxy_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1141,101 +1145,64 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertTargetGrpcProxyRequest,
+ compute.GetTargetGrpcProxyRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["target_grpc_proxy_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "url_map": "url_map_value",
- "validate_for_proxyless": True,
- }
+ request_init = {"project": "sample1", "target_grpc_proxy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.TargetGrpcProxy(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
- region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ self_link_with_id="self_link_with_id_value",
+ url_map="url_map_value",
+ validate_for_proxyless=True,
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TargetGrpcProxy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.TargetGrpcProxy)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.self_link_with_id == "self_link_with_id_value"
+ assert response.url_map == "url_map_value"
+ assert response.validate_for_proxyless is True
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertTargetGrpcProxyRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetTargetGrpcProxyRequest):
transport_class = transports.TargetGrpcProxiesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["target_grpc_proxy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1247,23 +1214,24 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["targetGrpcProxy"] = "target_grpc_proxy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "targetGrpcProxy" in jsonified_request
+ assert jsonified_request["targetGrpcProxy"] == "target_grpc_proxy_value"
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1272,7 +1240,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.TargetGrpcProxy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1283,44 +1251,43 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TargetGrpcProxy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.TargetGrpcProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"project",
- "targetGrpcProxyResource",
+ "targetGrpcProxy",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.TargetGrpcProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1333,9 +1300,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.TargetGrpcProxiesRestInterceptor, "post_insert"
+ transports.TargetGrpcProxiesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.TargetGrpcProxiesRestInterceptor, "pre_insert"
+ transports.TargetGrpcProxiesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1350,17 +1317,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.TargetGrpcProxy.to_json(
+ compute.TargetGrpcProxy()
+ )
- request = compute.InsertTargetGrpcProxyRequest()
+ request = compute.GetTargetGrpcProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.TargetGrpcProxy
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1372,8 +1341,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertTargetGrpcProxyRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetTargetGrpcProxyRequest
):
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1381,19 +1350,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["target_grpc_proxy_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "self_link": "self_link_value",
- "self_link_with_id": "self_link_with_id_value",
- "url_map": "url_map_value",
- "validate_for_proxyless": True,
- }
+ request_init = {"project": "sample1", "target_grpc_proxy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1405,10 +1362,658 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get(request)
-def test_insert_unary_rest_flattened():
+def test_get_rest_flattened():
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetGrpcProxy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "target_grpc_proxy": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ target_grpc_proxy="target_grpc_proxy_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetGrpcProxy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/targetGrpcProxies/{target_grpc_proxy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetTargetGrpcProxyRequest(),
+ project="project_value",
+ target_grpc_proxy="target_grpc_proxy_value",
+ )
+
+
+def test_get_rest_error():
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertTargetGrpcProxyRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["target_grpc_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "url_map": "url_map_value",
+ "validate_for_proxyless": True,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertTargetGrpcProxyRequest):
+ transport_class = transports.TargetGrpcProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.TargetGrpcProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "targetGrpcProxyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.TargetGrpcProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.TargetGrpcProxiesRestInterceptor(),
+ )
+ client = TargetGrpcProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.TargetGrpcProxiesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.TargetGrpcProxiesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertTargetGrpcProxyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertTargetGrpcProxyRequest
+):
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["target_grpc_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "url_map": "url_map_value",
+ "validate_for_proxyless": True,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ target_grpc_proxy_resource=compute.TargetGrpcProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/targetGrpcProxies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertTargetGrpcProxyRequest(),
+ project="project_value",
+ target_grpc_proxy_resource=compute.TargetGrpcProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertTargetGrpcProxyRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["target_grpc_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "url_map": "url_map_value",
+ "validate_for_proxyless": True,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertTargetGrpcProxyRequest,
+):
+ transport_class = transports.TargetGrpcProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.TargetGrpcProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "targetGrpcProxyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.TargetGrpcProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.TargetGrpcProxiesRestInterceptor(),
+ )
+ client = TargetGrpcProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.TargetGrpcProxiesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.TargetGrpcProxiesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertTargetGrpcProxyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertTargetGrpcProxyRequest
+):
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["target_grpc_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "url_map": "url_map_value",
+ "validate_for_proxyless": True,
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1425,21 +2030,306 @@ def test_insert_unary_rest_flattened():
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- target_grpc_proxy_resource=compute.TargetGrpcProxy(
- creation_timestamp="creation_timestamp_value"
- ),
+ target_grpc_proxy_resource=compute.TargetGrpcProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/targetGrpcProxies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertTargetGrpcProxyRequest(),
+ project="project_value",
+ target_grpc_proxy_resource=compute.TargetGrpcProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListTargetGrpcProxiesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetGrpcProxyList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetGrpcProxyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListTargetGrpcProxiesRequest):
+ transport_class = transports.TargetGrpcProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetGrpcProxyList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetGrpcProxyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.TargetGrpcProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.TargetGrpcProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.TargetGrpcProxiesRestInterceptor(),
+ )
+ client = TargetGrpcProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.TargetGrpcProxiesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.TargetGrpcProxiesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.TargetGrpcProxyList.to_json(
+ compute.TargetGrpcProxyList()
+ )
+
+ request = compute.ListTargetGrpcProxiesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.TargetGrpcProxyList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListTargetGrpcProxiesRequest
+):
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = TargetGrpcProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetGrpcProxyList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TargetGrpcProxyList.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.list(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1452,7 +2342,7 @@ def test_insert_unary_rest_flattened():
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_list_rest_flattened_error(transport: str = "rest"):
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1461,69 +2351,170 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertTargetGrpcProxyRequest(),
+ client.list(
+ compute.ListTargetGrpcProxiesRequest(),
project="project_value",
- target_grpc_proxy_resource=compute.TargetGrpcProxy(
- creation_timestamp="creation_timestamp_value"
- ),
)
-def test_insert_unary_rest_error():
+def test_list_rest_pager(transport: str = "rest"):
client = TargetGrpcProxiesClient(
- credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
)
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.TargetGrpcProxyList(
+ items=[
+ compute.TargetGrpcProxy(),
+ compute.TargetGrpcProxy(),
+ compute.TargetGrpcProxy(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.TargetGrpcProxyList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.TargetGrpcProxyList(
+ items=[
+ compute.TargetGrpcProxy(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.TargetGrpcProxyList(
+ items=[
+ compute.TargetGrpcProxy(),
+ compute.TargetGrpcProxy(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.TargetGrpcProxyList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.TargetGrpcProxy) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
@pytest.mark.parametrize(
"request_type",
[
- compute.ListTargetGrpcProxiesRequest,
+ compute.PatchTargetGrpcProxyRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_patch_rest(request_type):
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "target_grpc_proxy": "sample2"}
+ request_init["target_grpc_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "url_map": "url_map_value",
+ "validate_for_proxyless": True,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetGrpcProxyList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetGrpcProxyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
-def test_list_rest_required_fields(request_type=compute.ListTargetGrpcProxiesRequest):
+def test_patch_rest_required_fields(request_type=compute.PatchTargetGrpcProxyRequest):
transport_class = transports.TargetGrpcProxiesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["target_grpc_proxy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1535,31 +2526,26 @@ def test_list_rest_required_fields(request_type=compute.ListTargetGrpcProxiesReq
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["targetGrpcProxy"] = "target_grpc_proxy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "targetGrpcProxy" in jsonified_request
+ assert jsonified_request["targetGrpcProxy"] == "target_grpc_proxy_value"
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1568,7 +2554,7 @@ def test_list_rest_required_fields(request_type=compute.ListTargetGrpcProxiesReq
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.TargetGrpcProxyList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1579,46 +2565,45 @@ def test_list_rest_required_fields(request_type=compute.ListTargetGrpcProxiesReq
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetGrpcProxyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_rest_unset_required_fields():
transport = transports.TargetGrpcProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "project",
+ "targetGrpcProxy",
+ "targetGrpcProxyResource",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_rest_interceptors(null_interceptor):
transport = transports.TargetGrpcProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1631,9 +2616,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.TargetGrpcProxiesRestInterceptor, "post_list"
+ transports.TargetGrpcProxiesRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.TargetGrpcProxiesRestInterceptor, "pre_list"
+ transports.TargetGrpcProxiesRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1648,19 +2633,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.TargetGrpcProxyList.to_json(
- compute.TargetGrpcProxyList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListTargetGrpcProxiesRequest()
+ request = compute.PatchTargetGrpcProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.TargetGrpcProxyList
+ post.return_value = compute.Operation
- client.list(
+ client.patch(
request,
metadata=[
("key", "val"),
@@ -1672,8 +2655,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListTargetGrpcProxiesRequest
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchTargetGrpcProxyRequest
):
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1681,7 +2664,19 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "target_grpc_proxy": "sample2"}
+ request_init["target_grpc_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "self_link": "self_link_value",
+ "self_link_with_id": "self_link_with_id_value",
+ "url_map": "url_map_value",
+ "validate_for_proxyless": True,
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1693,10 +2688,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch(request)
-def test_list_rest_flattened():
+def test_patch_rest_flattened():
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1705,39 +2700,43 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetGrpcProxyList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "target_grpc_proxy": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ target_grpc_proxy="target_grpc_proxy_value",
+ target_grpc_proxy_resource=compute.TargetGrpcProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetGrpcProxyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/targetGrpcProxies"
+ "%s/compute/v1/projects/{project}/global/targetGrpcProxies/{target_grpc_proxy}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = TargetGrpcProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1746,72 +2745,21 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListTargetGrpcProxiesRequest(),
+ client.patch(
+ compute.PatchTargetGrpcProxyRequest(),
project="project_value",
+ target_grpc_proxy="target_grpc_proxy_value",
+ target_grpc_proxy_resource=compute.TargetGrpcProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_rest_error():
client = TargetGrpcProxiesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.TargetGrpcProxyList(
- items=[
- compute.TargetGrpcProxy(),
- compute.TargetGrpcProxy(),
- compute.TargetGrpcProxy(),
- ],
- next_page_token="abc",
- ),
- compute.TargetGrpcProxyList(
- items=[],
- next_page_token="def",
- ),
- compute.TargetGrpcProxyList(
- items=[
- compute.TargetGrpcProxy(),
- ],
- next_page_token="ghi",
- ),
- compute.TargetGrpcProxyList(
- items=[
- compute.TargetGrpcProxy(),
- compute.TargetGrpcProxy(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.TargetGrpcProxyList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.TargetGrpcProxy) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
@@ -1880,28 +2828,6 @@ def test_patch_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_patch_unary_rest_required_fields(
@@ -2233,6 +3159,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = TargetGrpcProxiesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_target_grpc_proxies_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2268,6 +3207,14 @@ def test_target_grpc_proxies_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_target_grpc_proxies_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_target_http_proxies.py b/tests/unit/gapic/compute_v1/test_target_http_proxies.py
index 20857075e..ea20d0c42 100644
--- a/tests/unit/gapic/compute_v1/test_target_http_proxies.py
+++ b/tests/unit/gapic/compute_v1/test_target_http_proxies.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -904,7 +906,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -948,10 +950,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -976,9 +978,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
- request_type=compute.DeleteTargetHttpProxyRequest,
-):
+def test_delete_rest_required_fields(request_type=compute.DeleteTargetHttpProxyRequest):
transport_class = transports.TargetHttpProxiesRestTransport
request_init = {}
@@ -1045,14 +1045,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.TargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1070,7 +1070,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.TargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1110,7 +1110,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1122,7 +1122,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteTargetHttpProxyRequest
):
client = TargetHttpProxiesClient(
@@ -1143,10 +1143,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1175,7 +1175,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1188,7 +1188,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1197,14 +1197,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteTargetHttpProxyRequest(),
project="project_value",
target_http_proxy="target_http_proxy_value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1213,11 +1213,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetTargetHttpProxyRequest,
+ compute.DeleteTargetHttpProxyRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1230,42 +1230,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpProxy(
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- proxy_bind=True,
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- url_map="url_map_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpProxy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.TargetHttpProxy)
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.proxy_bind is True
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.url_map == "url_map_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetTargetHttpProxyRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteTargetHttpProxyRequest,
+):
transport_class = transports.TargetHttpProxiesRestTransport
request_init = {}
@@ -1282,7 +1286,7 @@ def test_get_rest_required_fields(request_type=compute.GetTargetHttpProxyRequest
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1292,7 +1296,9 @@ def test_get_rest_required_fields(request_type=compute.GetTargetHttpProxyRequest
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1308,7 +1314,7 @@ def test_get_rest_required_fields(request_type=compute.GetTargetHttpProxyRequest
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpProxy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1319,32 +1325,32 @@ def test_get_rest_required_fields(request_type=compute.GetTargetHttpProxyRequest
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpProxy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.TargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -1355,7 +1361,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.TargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1368,9 +1374,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.TargetHttpProxiesRestInterceptor, "post_get"
+ transports.TargetHttpProxiesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.TargetHttpProxiesRestInterceptor, "pre_get"
+ transports.TargetHttpProxiesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1385,19 +1391,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.TargetHttpProxy.to_json(
- compute.TargetHttpProxy()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetTargetHttpProxyRequest()
+ request = compute.DeleteTargetHttpProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.TargetHttpProxy
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1409,8 +1413,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetTargetHttpProxyRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteTargetHttpProxyRequest
):
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1430,10 +1434,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1442,7 +1446,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpProxy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "target_http_proxy": "sample2"}
@@ -1457,12 +1461,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpProxy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1475,7 +1479,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1484,14 +1488,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetTargetHttpProxyRequest(),
+ client.delete_unary(
+ compute.DeleteTargetHttpProxyRequest(),
project="project_value",
target_http_proxy="target_http_proxy_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1500,101 +1504,64 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertTargetHttpProxyRequest,
+ compute.GetTargetHttpProxyRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["target_http_proxy_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "proxy_bind": True,
- "region": "region_value",
- "self_link": "self_link_value",
- "url_map": "url_map_value",
- }
+ request_init = {"project": "sample1", "target_http_proxy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.TargetHttpProxy(
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ proxy_bind=True,
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ url_map="url_map_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TargetHttpProxy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.TargetHttpProxy)
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.proxy_bind is True
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.url_map == "url_map_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertTargetHttpProxyRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetTargetHttpProxyRequest):
transport_class = transports.TargetHttpProxiesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["target_http_proxy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1606,23 +1573,24 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["targetHttpProxy"] = "target_http_proxy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "targetHttpProxy" in jsonified_request
+ assert jsonified_request["targetHttpProxy"] == "target_http_proxy_value"
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1631,7 +1599,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.TargetHttpProxy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1642,44 +1610,43 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TargetHttpProxy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.TargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"project",
- "targetHttpProxyResource",
+ "targetHttpProxy",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.TargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1692,9 +1659,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.TargetHttpProxiesRestInterceptor, "post_insert"
+ transports.TargetHttpProxiesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.TargetHttpProxiesRestInterceptor, "pre_insert"
+ transports.TargetHttpProxiesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1709,17 +1676,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.TargetHttpProxy.to_json(
+ compute.TargetHttpProxy()
+ )
- request = compute.InsertTargetHttpProxyRequest()
+ request = compute.GetTargetHttpProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.TargetHttpProxy
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1731,8 +1700,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertTargetHttpProxyRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetTargetHttpProxyRequest
):
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1740,19 +1709,7 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["target_http_proxy_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "proxy_bind": True,
- "region": "region_value",
- "self_link": "self_link_value",
- "url_map": "url_map_value",
- }
+ request_init = {"project": "sample1", "target_http_proxy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -1764,10 +1721,10 @@ def test_insert_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.insert_unary(request)
+ client.get(request)
-def test_insert_unary_rest_flattened():
+def test_get_rest_flattened():
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1776,16 +1733,1343 @@ def test_insert_unary_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.TargetHttpProxy()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "target_http_proxy": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
- target_http_proxy_resource=compute.TargetHttpProxy(
- creation_timestamp="creation_timestamp_value"
+ target_http_proxy="target_http_proxy_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetHttpProxy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/targetHttpProxies/{target_http_proxy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetTargetHttpProxyRequest(),
+ project="project_value",
+ target_http_proxy="target_http_proxy_value",
+ )
+
+
+def test_get_rest_error():
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertTargetHttpProxyRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["target_http_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(request_type=compute.InsertTargetHttpProxyRequest):
+ transport_class = transports.TargetHttpProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.TargetHttpProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "targetHttpProxyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.TargetHttpProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.TargetHttpProxiesRestInterceptor(),
+ )
+ client = TargetHttpProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.TargetHttpProxiesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.TargetHttpProxiesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertTargetHttpProxyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertTargetHttpProxyRequest
+):
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["target_http_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ target_http_proxy_resource=compute.TargetHttpProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/targetHttpProxies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertTargetHttpProxyRequest(),
+ project="project_value",
+ target_http_proxy_resource=compute.TargetHttpProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertTargetHttpProxyRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["target_http_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertTargetHttpProxyRequest,
+):
+ transport_class = transports.TargetHttpProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.TargetHttpProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "targetHttpProxyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.TargetHttpProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.TargetHttpProxiesRestInterceptor(),
+ )
+ client = TargetHttpProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.TargetHttpProxiesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.TargetHttpProxiesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertTargetHttpProxyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertTargetHttpProxyRequest
+):
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["target_http_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ target_http_proxy_resource=compute.TargetHttpProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/targetHttpProxies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertTargetHttpProxyRequest(),
+ project="project_value",
+ target_http_proxy_resource=compute.TargetHttpProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListTargetHttpProxiesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetHttpProxyList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetHttpProxyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListTargetHttpProxiesRequest):
+ transport_class = transports.TargetHttpProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetHttpProxyList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetHttpProxyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.TargetHttpProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.TargetHttpProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.TargetHttpProxiesRestInterceptor(),
+ )
+ client = TargetHttpProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.TargetHttpProxiesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.TargetHttpProxiesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.TargetHttpProxyList.to_json(
+ compute.TargetHttpProxyList()
+ )
+
+ request = compute.ListTargetHttpProxiesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.TargetHttpProxyList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListTargetHttpProxiesRequest
+):
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetHttpProxyList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetHttpProxyList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/targetHttpProxies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListTargetHttpProxiesRequest(),
+ project="project_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.TargetHttpProxyList(
+ items=[
+ compute.TargetHttpProxy(),
+ compute.TargetHttpProxy(),
+ compute.TargetHttpProxy(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.TargetHttpProxyList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.TargetHttpProxyList(
+ items=[
+ compute.TargetHttpProxy(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.TargetHttpProxyList(
+ items=[
+ compute.TargetHttpProxy(),
+ compute.TargetHttpProxy(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.TargetHttpProxyList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.TargetHttpProxy) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchTargetHttpProxyRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "target_http_proxy": "sample2"}
+ request_init["target_http_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchTargetHttpProxyRequest):
+ transport_class = transports.TargetHttpProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["target_http_proxy"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["targetHttpProxy"] = "target_http_proxy_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "targetHttpProxy" in jsonified_request
+ assert jsonified_request["targetHttpProxy"] == "target_http_proxy_value"
+
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.TargetHttpProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "targetHttpProxy",
+ "targetHttpProxyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.TargetHttpProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.TargetHttpProxiesRestInterceptor(),
+ )
+ client = TargetHttpProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.TargetHttpProxiesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.TargetHttpProxiesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchTargetHttpProxyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchTargetHttpProxyRequest
+):
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "target_http_proxy": "sample2"}
+ request_init["target_http_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = TargetHttpProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "target_http_proxy": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ target_http_proxy="target_http_proxy_value",
+ target_http_proxy_resource=compute.TargetHttpProxy(
+ creation_timestamp="creation_timestamp_value"
),
)
mock_args.update(sample_request)
@@ -1798,20 +3082,20 @@ def test_insert_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.insert_unary(**mock_args)
+ client.patch(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/targetHttpProxies"
+ "%s/compute/v1/projects/{project}/global/targetHttpProxies/{target_http_proxy}"
% client.transport._host,
args[1],
)
-def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+def test_patch_rest_flattened_error(transport: str = "rest"):
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1820,16 +3104,17 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.insert_unary(
- compute.InsertTargetHttpProxyRequest(),
+ client.patch(
+ compute.PatchTargetHttpProxyRequest(),
project="project_value",
+ target_http_proxy="target_http_proxy_value",
target_http_proxy_resource=compute.TargetHttpProxy(
creation_timestamp="creation_timestamp_value"
),
)
-def test_insert_unary_rest_error():
+def test_patch_rest_error():
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1838,51 +3123,80 @@ def test_insert_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.ListTargetHttpProxiesRequest,
+ compute.PatchTargetHttpProxyRequest,
dict,
],
)
-def test_list_rest(request_type):
+def test_patch_unary_rest(request_type):
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "target_http_proxy": "sample2"}
+ request_init["target_http_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "url_map": "url_map_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpProxyList(
- id="id_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
kind="kind_value",
- next_page_token="next_page_token_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpProxyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, pagers.ListPager)
- assert response.id == "id_value"
- assert response.kind == "kind_value"
- assert response.next_page_token == "next_page_token_value"
- assert response.self_link == "self_link_value"
+ assert isinstance(response, compute.Operation)
-def test_list_rest_required_fields(request_type=compute.ListTargetHttpProxiesRequest):
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchTargetHttpProxyRequest,
+):
transport_class = transports.TargetHttpProxiesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["target_http_proxy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1894,31 +3208,26 @@ def test_list_rest_required_fields(request_type=compute.ListTargetHttpProxiesReq
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["targetHttpProxy"] = "target_http_proxy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).list._get_unset_required_fields(jsonified_request)
+ ).patch._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(
- (
- "filter",
- "max_results",
- "order_by",
- "page_token",
- "return_partial_success",
- )
- )
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "targetHttpProxy" in jsonified_request
+ assert jsonified_request["targetHttpProxy"] == "target_http_proxy_value"
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1927,7 +3236,7 @@ def test_list_rest_required_fields(request_type=compute.ListTargetHttpProxiesReq
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpProxyList()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1938,46 +3247,45 @@ def test_list_rest_required_fields(request_type=compute.ListTargetHttpProxiesReq
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "patch",
"query_params": request_init,
}
+ transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpProxyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.list(request)
+ response = client.patch_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_list_rest_unset_required_fields():
+def test_patch_unary_rest_unset_required_fields():
transport = transports.TargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.list._get_unset_required_fields({})
+ unset_fields = transport.patch._get_unset_required_fields({})
assert set(unset_fields) == (
- set(
+ set(("requestId",))
+ & set(
(
- "filter",
- "maxResults",
- "orderBy",
- "pageToken",
- "returnPartialSuccess",
+ "project",
+ "targetHttpProxy",
+ "targetHttpProxyResource",
)
)
- & set(("project",))
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_list_rest_interceptors(null_interceptor):
+def test_patch_unary_rest_interceptors(null_interceptor):
transport = transports.TargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1990,9 +3298,9 @@ def test_list_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.TargetHttpProxiesRestInterceptor, "post_list"
+ transports.TargetHttpProxiesRestInterceptor, "post_patch"
) as post, mock.patch.object(
- transports.TargetHttpProxiesRestInterceptor, "pre_list"
+ transports.TargetHttpProxiesRestInterceptor, "pre_patch"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2007,19 +3315,17 @@ def test_list_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.TargetHttpProxyList.to_json(
- compute.TargetHttpProxyList()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.ListTargetHttpProxiesRequest()
+ request = compute.PatchTargetHttpProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.TargetHttpProxyList
+ post.return_value = compute.Operation
- client.list(
+ client.patch_unary(
request,
metadata=[
("key", "val"),
@@ -2031,8 +3337,8 @@ def test_list_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_list_rest_bad_request(
- transport: str = "rest", request_type=compute.ListTargetHttpProxiesRequest
+def test_patch_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchTargetHttpProxyRequest
):
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2040,7 +3346,19 @@ def test_list_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "target_http_proxy": "sample2"}
+ request_init["target_http_proxy_resource"] = {
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "url_map": "url_map_value",
+ }
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2052,10 +3370,10 @@ def test_list_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.list(request)
+ client.patch_unary(request)
-def test_list_rest_flattened():
+def test_patch_unary_rest_flattened():
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2064,39 +3382,43 @@ def test_list_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpProxyList()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
- sample_request = {"project": "sample1"}
+ sample_request = {"project": "sample1", "target_http_proxy": "sample2"}
# get truthy value for each flattened field
mock_args = dict(
project="project_value",
+ target_http_proxy="target_http_proxy_value",
+ target_http_proxy_resource=compute.TargetHttpProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
mock_args.update(sample_request)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpProxyList.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.list(**mock_args)
+ client.patch_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/targetHttpProxies"
+ "%s/compute/v1/projects/{project}/global/targetHttpProxies/{target_http_proxy}"
% client.transport._host,
args[1],
)
-def test_list_rest_flattened_error(transport: str = "rest"):
+def test_patch_unary_rest_flattened_error(transport: str = "rest"):
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2105,81 +3427,30 @@ def test_list_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.list(
- compute.ListTargetHttpProxiesRequest(),
+ client.patch_unary(
+ compute.PatchTargetHttpProxyRequest(),
project="project_value",
+ target_http_proxy="target_http_proxy_value",
+ target_http_proxy_resource=compute.TargetHttpProxy(
+ creation_timestamp="creation_timestamp_value"
+ ),
)
-def test_list_rest_pager(transport: str = "rest"):
+def test_patch_unary_rest_error():
client = TargetHttpProxiesClient(
- credentials=ga_credentials.AnonymousCredentials(),
- transport=transport,
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
- # Mock the http request call within the method and fake a response.
- with mock.patch.object(Session, "request") as req:
- # TODO(kbandes): remove this mock unless there's a good reason for it.
- # with mock.patch.object(path_template, 'transcode') as transcode:
- # Set the response as a series of pages
- response = (
- compute.TargetHttpProxyList(
- items=[
- compute.TargetHttpProxy(),
- compute.TargetHttpProxy(),
- compute.TargetHttpProxy(),
- ],
- next_page_token="abc",
- ),
- compute.TargetHttpProxyList(
- items=[],
- next_page_token="def",
- ),
- compute.TargetHttpProxyList(
- items=[
- compute.TargetHttpProxy(),
- ],
- next_page_token="ghi",
- ),
- compute.TargetHttpProxyList(
- items=[
- compute.TargetHttpProxy(),
- compute.TargetHttpProxy(),
- ],
- ),
- )
- # Two responses for two calls
- response = response + response
-
- # Wrap the values into proper Response objs
- response = tuple(compute.TargetHttpProxyList.to_json(x) for x in response)
- return_values = tuple(Response() for i in response)
- for return_val, response_val in zip(return_values, response):
- return_val._content = response_val.encode("UTF-8")
- return_val.status_code = 200
- req.side_effect = return_values
-
- sample_request = {"project": "sample1"}
-
- pager = client.list(request=sample_request)
-
- results = list(pager)
- assert len(results) == 6
- assert all(isinstance(i, compute.TargetHttpProxy) for i in results)
-
- pages = list(client.list(request=sample_request).pages)
- for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
- assert page_.raw_page.next_page_token == token
-
@pytest.mark.parametrize(
"request_type",
[
- compute.PatchTargetHttpProxyRequest,
+ compute.SetUrlMapTargetHttpProxyRequest,
dict,
],
)
-def test_patch_unary_rest(request_type):
+def test_set_url_map_rest(request_type):
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2187,18 +3458,7 @@ def test_patch_unary_rest(request_type):
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "target_http_proxy": "sample2"}
- request_init["target_http_proxy_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "proxy_bind": True,
- "region": "region_value",
- "self_link": "self_link_value",
- "url_map": "url_map_value",
- }
+ request_init["url_map_reference_resource"] = {"url_map": "url_map_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
@@ -2235,10 +3495,10 @@ def test_patch_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.set_url_map(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -2263,8 +3523,8 @@ def test_patch_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_patch_unary_rest_required_fields(
- request_type=compute.PatchTargetHttpProxyRequest,
+def test_set_url_map_rest_required_fields(
+ request_type=compute.SetUrlMapTargetHttpProxyRequest,
):
transport_class = transports.TargetHttpProxiesRestTransport
@@ -2282,7 +3542,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).set_url_map._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -2292,7 +3552,7 @@ def test_patch_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).patch._get_unset_required_fields(jsonified_request)
+ ).set_url_map._get_unset_required_fields(jsonified_request)
# Check that path parameters and body parameters are not mixing in.
assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
@@ -2321,7 +3581,7 @@ def test_patch_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "patch",
+ "method": "post",
"query_params": request_init,
}
transcode_result["body"] = {}
@@ -2333,33 +3593,33 @@ def test_patch_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.patch_unary(request)
+ response = client.set_url_map(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_patch_unary_rest_unset_required_fields():
+def test_set_url_map_rest_unset_required_fields():
transport = transports.TargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.patch._get_unset_required_fields({})
+ unset_fields = transport.set_url_map._get_unset_required_fields({})
assert set(unset_fields) == (
set(("requestId",))
& set(
(
"project",
"targetHttpProxy",
- "targetHttpProxyResource",
+ "urlMapReferenceResource",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_patch_unary_rest_interceptors(null_interceptor):
+def test_set_url_map_rest_interceptors(null_interceptor):
transport = transports.TargetHttpProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -2372,9 +3632,9 @@ def test_patch_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.TargetHttpProxiesRestInterceptor, "post_patch"
+ transports.TargetHttpProxiesRestInterceptor, "post_set_url_map"
) as post, mock.patch.object(
- transports.TargetHttpProxiesRestInterceptor, "pre_patch"
+ transports.TargetHttpProxiesRestInterceptor, "pre_set_url_map"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -2391,7 +3651,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
req.return_value.request = PreparedRequest()
req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.PatchTargetHttpProxyRequest()
+ request = compute.SetUrlMapTargetHttpProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
@@ -2399,7 +3659,7 @@ def test_patch_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.patch_unary(
+ client.set_url_map(
request,
metadata=[
("key", "val"),
@@ -2411,8 +3671,8 @@ def test_patch_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_patch_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.PatchTargetHttpProxyRequest
+def test_set_url_map_rest_bad_request(
+ transport: str = "rest", request_type=compute.SetUrlMapTargetHttpProxyRequest
):
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -2421,18 +3681,7 @@ def test_patch_unary_rest_bad_request(
# send a request that will satisfy transcoding
request_init = {"project": "sample1", "target_http_proxy": "sample2"}
- request_init["target_http_proxy_resource"] = {
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "proxy_bind": True,
- "region": "region_value",
- "self_link": "self_link_value",
- "url_map": "url_map_value",
- }
+ request_init["url_map_reference_resource"] = {"url_map": "url_map_value"}
request = request_type(request_init)
# Mock the http request call within the method and fake a BadRequest error.
@@ -2444,10 +3693,10 @@ def test_patch_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.patch_unary(request)
+ client.set_url_map(request)
-def test_patch_unary_rest_flattened():
+def test_set_url_map_rest_flattened():
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -2465,9 +3714,7 @@ def test_patch_unary_rest_flattened():
mock_args = dict(
project="project_value",
target_http_proxy="target_http_proxy_value",
- target_http_proxy_resource=compute.TargetHttpProxy(
- creation_timestamp="creation_timestamp_value"
- ),
+ url_map_reference_resource=compute.UrlMapReference(url_map="url_map_value"),
)
mock_args.update(sample_request)
@@ -2479,20 +3726,20 @@ def test_patch_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.patch_unary(**mock_args)
+ client.set_url_map(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
assert len(req.mock_calls) == 1
_, args, _ = req.mock_calls[0]
assert path_template.validate(
- "%s/compute/v1/projects/{project}/global/targetHttpProxies/{target_http_proxy}"
+ "%s/compute/v1/projects/{project}/targetHttpProxies/{target_http_proxy}/setUrlMap"
% client.transport._host,
args[1],
)
-def test_patch_unary_rest_flattened_error(transport: str = "rest"):
+def test_set_url_map_rest_flattened_error(transport: str = "rest"):
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -2501,17 +3748,15 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.patch_unary(
- compute.PatchTargetHttpProxyRequest(),
+ client.set_url_map(
+ compute.SetUrlMapTargetHttpProxyRequest(),
project="project_value",
target_http_proxy="target_http_proxy_value",
- target_http_proxy_resource=compute.TargetHttpProxy(
- creation_timestamp="creation_timestamp_value"
- ),
+ url_map_reference_resource=compute.UrlMapReference(url_map="url_map_value"),
)
-def test_patch_unary_rest_error():
+def test_set_url_map_rest_error():
client = TargetHttpProxiesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -2573,28 +3818,6 @@ def test_set_url_map_unary_rest(request_type):
# Establish that the response is the type that we expect.
assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
- assert response.id == 205
- assert response.insert_time == "insert_time_value"
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
def test_set_url_map_unary_rest_required_fields(
@@ -2911,6 +4134,19 @@ def test_transport_adc(transport_class):
adc.assert_called_once()
+@pytest.mark.parametrize(
+ "transport_name",
+ [
+ "rest",
+ ],
+)
+def test_transport_kind(transport_name):
+ transport = TargetHttpProxiesClient.get_transport_class(transport_name)(
+ credentials=ga_credentials.AnonymousCredentials(),
+ )
+ assert transport.kind == transport_name
+
+
def test_target_http_proxies_base_transport_error():
# Passing both a credentials object and credentials_file should raise an error
with pytest.raises(core_exceptions.DuplicateCredentialArgs):
@@ -2948,6 +4184,14 @@ def test_target_http_proxies_base_transport():
with pytest.raises(NotImplementedError):
transport.close()
+ # Catch all for all remaining methods and properties
+ remainder = [
+ "kind",
+ ]
+ for r in remainder:
+ with pytest.raises(NotImplementedError):
+ getattr(transport, r)()
+
def test_target_http_proxies_base_transport_with_credentials_file():
# Instantiate the base transport with a credentials file
diff --git a/tests/unit/gapic/compute_v1/test_target_https_proxies.py b/tests/unit/gapic/compute_v1/test_target_https_proxies.py
index afc55bf2d..51a150805 100644
--- a/tests/unit/gapic/compute_v1/test_target_https_proxies.py
+++ b/tests/unit/gapic/compute_v1/test_target_https_proxies.py
@@ -30,6 +30,8 @@
from google.api_core import client_options
from google.api_core import exceptions as core_exceptions
+from google.api_core import extended_operation # type: ignore
+from google.api_core import future
from google.api_core import gapic_v1
from google.api_core import grpc_helpers
from google.api_core import grpc_helpers_async
@@ -907,7 +909,7 @@ def test_aggregated_list_rest_pager(transport: str = "rest"):
dict,
],
)
-def test_delete_unary_rest(request_type):
+def test_delete_rest(request_type):
client = TargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -951,10 +953,10 @@ def test_delete_unary_rest(request_type):
json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
+ assert isinstance(response, extended_operation.ExtendedOperation)
assert response.client_operation_id == "client_operation_id_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
@@ -979,7 +981,7 @@ def test_delete_unary_rest(request_type):
assert response.zone == "zone_value"
-def test_delete_unary_rest_required_fields(
+def test_delete_rest_required_fields(
request_type=compute.DeleteTargetHttpsProxyRequest,
):
transport_class = transports.TargetHttpsProxiesRestTransport
@@ -1048,14 +1050,14 @@ def test_delete_unary_rest_required_fields(
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.delete_unary(request)
+ response = client.delete(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_delete_unary_rest_unset_required_fields():
+def test_delete_rest_unset_required_fields():
transport = transports.TargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
@@ -1073,7 +1075,7 @@ def test_delete_unary_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_delete_unary_rest_interceptors(null_interceptor):
+def test_delete_rest_interceptors(null_interceptor):
transport = transports.TargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1113,7 +1115,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
pre.return_value = request, metadata
post.return_value = compute.Operation
- client.delete_unary(
+ client.delete(
request,
metadata=[
("key", "val"),
@@ -1125,7 +1127,7 @@ def test_delete_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_delete_unary_rest_bad_request(
+def test_delete_rest_bad_request(
transport: str = "rest", request_type=compute.DeleteTargetHttpsProxyRequest
):
client = TargetHttpsProxiesClient(
@@ -1146,10 +1148,10 @@ def test_delete_unary_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.delete_unary(request)
+ client.delete(request)
-def test_delete_unary_rest_flattened():
+def test_delete_rest_flattened():
client = TargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1178,7 +1180,7 @@ def test_delete_unary_rest_flattened():
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.delete_unary(**mock_args)
+ client.delete(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1191,7 +1193,7 @@ def test_delete_unary_rest_flattened():
)
-def test_delete_unary_rest_flattened_error(transport: str = "rest"):
+def test_delete_rest_flattened_error(transport: str = "rest"):
client = TargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1200,14 +1202,14 @@ def test_delete_unary_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.delete_unary(
+ client.delete(
compute.DeleteTargetHttpsProxyRequest(),
project="project_value",
target_https_proxy="target_https_proxy_value",
)
-def test_delete_unary_rest_error():
+def test_delete_rest_error():
client = TargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1216,11 +1218,11 @@ def test_delete_unary_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.GetTargetHttpsProxyRequest,
+ compute.DeleteTargetHttpsProxyRequest,
dict,
],
)
-def test_get_rest(request_type):
+def test_delete_unary_rest(request_type):
client = TargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1233,52 +1235,46 @@ def test_get_rest(request_type):
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpsProxy(
- authorization_policy="authorization_policy_value",
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- fingerprint="fingerprint_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
id=205,
+ insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- proxy_bind=True,
- quic_override="quic_override_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
region="region_value",
self_link="self_link_value",
- server_tls_policy="server_tls_policy_value",
- ssl_certificates=["ssl_certificates_value"],
- ssl_policy="ssl_policy_value",
- url_map="url_map_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpsProxy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.TargetHttpsProxy)
- assert response.authorization_policy == "authorization_policy_value"
- assert response.creation_timestamp == "creation_timestamp_value"
- assert response.description == "description_value"
- assert response.fingerprint == "fingerprint_value"
- assert response.id == 205
- assert response.kind == "kind_value"
- assert response.name == "name_value"
- assert response.proxy_bind is True
- assert response.quic_override == "quic_override_value"
- assert response.region == "region_value"
- assert response.self_link == "self_link_value"
- assert response.server_tls_policy == "server_tls_policy_value"
- assert response.ssl_certificates == ["ssl_certificates_value"]
- assert response.ssl_policy == "ssl_policy_value"
- assert response.url_map == "url_map_value"
+ assert isinstance(response, compute.Operation)
-def test_get_rest_required_fields(request_type=compute.GetTargetHttpsProxyRequest):
+def test_delete_unary_rest_required_fields(
+ request_type=compute.DeleteTargetHttpsProxyRequest,
+):
transport_class = transports.TargetHttpsProxiesRestTransport
request_init = {}
@@ -1295,7 +1291,7 @@ def test_get_rest_required_fields(request_type=compute.GetTargetHttpsProxyReques
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
@@ -1305,7 +1301,9 @@ def test_get_rest_required_fields(request_type=compute.GetTargetHttpsProxyReques
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).get._get_unset_required_fields(jsonified_request)
+ ).delete._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
@@ -1321,7 +1319,7 @@ def test_get_rest_required_fields(request_type=compute.GetTargetHttpsProxyReques
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpsProxy()
+ return_value = compute.Operation()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1332,32 +1330,32 @@ def test_get_rest_required_fields(request_type=compute.GetTargetHttpsProxyReques
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "get",
+ "method": "delete",
"query_params": request_init,
}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpsProxy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.get(request)
+ response = client.delete_unary(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_get_rest_unset_required_fields():
+def test_delete_unary_rest_unset_required_fields():
transport = transports.TargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.get._get_unset_required_fields({})
+ unset_fields = transport.delete._get_unset_required_fields({})
assert set(unset_fields) == (
- set(())
+ set(("requestId",))
& set(
(
"project",
@@ -1368,7 +1366,7 @@ def test_get_rest_unset_required_fields():
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_get_rest_interceptors(null_interceptor):
+def test_delete_unary_rest_interceptors(null_interceptor):
transport = transports.TargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1381,9 +1379,9 @@ def test_get_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.TargetHttpsProxiesRestInterceptor, "post_get"
+ transports.TargetHttpsProxiesRestInterceptor, "post_delete"
) as post, mock.patch.object(
- transports.TargetHttpsProxiesRestInterceptor, "pre_get"
+ transports.TargetHttpsProxiesRestInterceptor, "pre_delete"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1398,19 +1396,17 @@ def test_get_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.TargetHttpsProxy.to_json(
- compute.TargetHttpsProxy()
- )
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
- request = compute.GetTargetHttpsProxyRequest()
+ request = compute.DeleteTargetHttpsProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.TargetHttpsProxy
+ post.return_value = compute.Operation
- client.get(
+ client.delete_unary(
request,
metadata=[
("key", "val"),
@@ -1422,8 +1418,8 @@ def test_get_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_get_rest_bad_request(
- transport: str = "rest", request_type=compute.GetTargetHttpsProxyRequest
+def test_delete_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.DeleteTargetHttpsProxyRequest
):
client = TargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1443,10 +1439,10 @@ def test_get_rest_bad_request(
response_value.status_code = 400
response_value.request = Request()
req.return_value = response_value
- client.get(request)
+ client.delete_unary(request)
-def test_get_rest_flattened():
+def test_delete_unary_rest_flattened():
client = TargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
@@ -1455,7 +1451,7 @@ def test_get_rest_flattened():
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.TargetHttpsProxy()
+ return_value = compute.Operation()
# get arguments that satisfy an http rule for this method
sample_request = {"project": "sample1", "target_https_proxy": "sample2"}
@@ -1470,12 +1466,12 @@ def test_get_rest_flattened():
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.TargetHttpsProxy.to_json(return_value)
+ json_return_value = compute.Operation.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- client.get(**mock_args)
+ client.delete_unary(**mock_args)
# Establish that the underlying call was made with the expected
# request object values.
@@ -1488,7 +1484,7 @@ def test_get_rest_flattened():
)
-def test_get_rest_flattened_error(transport: str = "rest"):
+def test_delete_unary_rest_flattened_error(transport: str = "rest"):
client = TargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport=transport,
@@ -1497,14 +1493,14 @@ def test_get_rest_flattened_error(transport: str = "rest"):
# Attempting to call a method with both a request object and flattened
# fields is an error.
with pytest.raises(ValueError):
- client.get(
- compute.GetTargetHttpsProxyRequest(),
+ client.delete_unary(
+ compute.DeleteTargetHttpsProxyRequest(),
project="project_value",
target_https_proxy="target_https_proxy_value",
)
-def test_get_rest_error():
+def test_delete_unary_rest_error():
client = TargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(), transport="rest"
)
@@ -1513,106 +1509,74 @@ def test_get_rest_error():
@pytest.mark.parametrize(
"request_type",
[
- compute.InsertTargetHttpsProxyRequest,
+ compute.GetTargetHttpsProxyRequest,
dict,
],
)
-def test_insert_unary_rest(request_type):
+def test_get_rest(request_type):
client = TargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
transport="rest",
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
- request_init["target_https_proxy_resource"] = {
- "authorization_policy": "authorization_policy_value",
- "creation_timestamp": "creation_timestamp_value",
- "description": "description_value",
- "fingerprint": "fingerprint_value",
- "id": 205,
- "kind": "kind_value",
- "name": "name_value",
- "proxy_bind": True,
- "quic_override": "quic_override_value",
- "region": "region_value",
- "self_link": "self_link_value",
- "server_tls_policy": "server_tls_policy_value",
- "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
- "ssl_policy": "ssl_policy_value",
- "url_map": "url_map_value",
- }
+ request_init = {"project": "sample1", "target_https_proxy": "sample2"}
request = request_type(request_init)
# Mock the http request call within the method and fake a response.
with mock.patch.object(type(client.transport._session), "request") as req:
# Designate an appropriate value for the returned response.
- return_value = compute.Operation(
- client_operation_id="client_operation_id_value",
+ return_value = compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value",
creation_timestamp="creation_timestamp_value",
description="description_value",
- end_time="end_time_value",
- http_error_message="http_error_message_value",
- http_error_status_code=2374,
+ fingerprint="fingerprint_value",
id=205,
- insert_time="insert_time_value",
kind="kind_value",
name="name_value",
- operation_group_id="operation_group_id_value",
- operation_type="operation_type_value",
- progress=885,
+ proxy_bind=True,
+ quic_override="quic_override_value",
region="region_value",
self_link="self_link_value",
- start_time="start_time_value",
- status=compute.Operation.Status.DONE,
- status_message="status_message_value",
- target_id=947,
- target_link="target_link_value",
- user="user_value",
- zone="zone_value",
+ server_tls_policy="server_tls_policy_value",
+ ssl_certificates=["ssl_certificates_value"],
+ ssl_policy="ssl_policy_value",
+ url_map="url_map_value",
)
# Wrap the value into a proper Response obj
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TargetHttpsProxy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
# Establish that the response is the type that we expect.
- assert isinstance(response, compute.Operation)
- assert response.client_operation_id == "client_operation_id_value"
+ assert isinstance(response, compute.TargetHttpsProxy)
+ assert response.authorization_policy == "authorization_policy_value"
assert response.creation_timestamp == "creation_timestamp_value"
assert response.description == "description_value"
- assert response.end_time == "end_time_value"
- assert response.http_error_message == "http_error_message_value"
- assert response.http_error_status_code == 2374
+ assert response.fingerprint == "fingerprint_value"
assert response.id == 205
- assert response.insert_time == "insert_time_value"
assert response.kind == "kind_value"
assert response.name == "name_value"
- assert response.operation_group_id == "operation_group_id_value"
- assert response.operation_type == "operation_type_value"
- assert response.progress == 885
+ assert response.proxy_bind is True
+ assert response.quic_override == "quic_override_value"
assert response.region == "region_value"
assert response.self_link == "self_link_value"
- assert response.start_time == "start_time_value"
- assert response.status == compute.Operation.Status.DONE
- assert response.status_message == "status_message_value"
- assert response.target_id == 947
- assert response.target_link == "target_link_value"
- assert response.user == "user_value"
- assert response.zone == "zone_value"
+ assert response.server_tls_policy == "server_tls_policy_value"
+ assert response.ssl_certificates == ["ssl_certificates_value"]
+ assert response.ssl_policy == "ssl_policy_value"
+ assert response.url_map == "url_map_value"
-def test_insert_unary_rest_required_fields(
- request_type=compute.InsertTargetHttpsProxyRequest,
-):
+def test_get_rest_required_fields(request_type=compute.GetTargetHttpsProxyRequest):
transport_class = transports.TargetHttpsProxiesRestTransport
request_init = {}
request_init["project"] = ""
+ request_init["target_https_proxy"] = ""
request = request_type(request_init)
jsonified_request = json.loads(
request_type.to_json(
@@ -1624,23 +1588,24 @@ def test_insert_unary_rest_required_fields(
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with default values are now present
jsonified_request["project"] = "project_value"
+ jsonified_request["targetHttpsProxy"] = "target_https_proxy_value"
unset_fields = transport_class(
credentials=ga_credentials.AnonymousCredentials()
- ).insert._get_unset_required_fields(jsonified_request)
- # Check that path parameters and body parameters are not mixing in.
- assert not set(unset_fields) - set(("request_id",))
+ ).get._get_unset_required_fields(jsonified_request)
jsonified_request.update(unset_fields)
# verify required fields with non-default values are left alone
assert "project" in jsonified_request
assert jsonified_request["project"] == "project_value"
+ assert "targetHttpsProxy" in jsonified_request
+ assert jsonified_request["targetHttpsProxy"] == "target_https_proxy_value"
client = TargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1649,7 +1614,7 @@ def test_insert_unary_rest_required_fields(
request = request_type(request_init)
# Designate an appropriate value for the returned response.
- return_value = compute.Operation()
+ return_value = compute.TargetHttpsProxy()
# Mock the http request call within the method and fake a response.
with mock.patch.object(Session, "request") as req:
# We need to mock transcode() because providing default values
@@ -1660,44 +1625,43 @@ def test_insert_unary_rest_required_fields(
# request fields to show up in the query_params.
transcode_result = {
"uri": "v1/sample_method",
- "method": "post",
+ "method": "get",
"query_params": request_init,
}
- transcode_result["body"] = {}
transcode.return_value = transcode_result
response_value = Response()
response_value.status_code = 200
- json_return_value = compute.Operation.to_json(return_value)
+ json_return_value = compute.TargetHttpsProxy.to_json(return_value)
response_value._content = json_return_value.encode("UTF-8")
req.return_value = response_value
- response = client.insert_unary(request)
+ response = client.get(request)
expected_params = []
actual_params = req.call_args.kwargs["params"]
assert expected_params == actual_params
-def test_insert_unary_rest_unset_required_fields():
+def test_get_rest_unset_required_fields():
transport = transports.TargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials
)
- unset_fields = transport.insert._get_unset_required_fields({})
+ unset_fields = transport.get._get_unset_required_fields({})
assert set(unset_fields) == (
- set(("requestId",))
+ set(())
& set(
(
"project",
- "targetHttpsProxyResource",
+ "targetHttpsProxy",
)
)
)
@pytest.mark.parametrize("null_interceptor", [True, False])
-def test_insert_unary_rest_interceptors(null_interceptor):
+def test_get_rest_interceptors(null_interceptor):
transport = transports.TargetHttpsProxiesRestTransport(
credentials=ga_credentials.AnonymousCredentials(),
interceptor=None
@@ -1710,9 +1674,9 @@ def test_insert_unary_rest_interceptors(null_interceptor):
) as req, mock.patch.object(
path_template, "transcode"
) as transcode, mock.patch.object(
- transports.TargetHttpsProxiesRestInterceptor, "post_insert"
+ transports.TargetHttpsProxiesRestInterceptor, "post_get"
) as post, mock.patch.object(
- transports.TargetHttpsProxiesRestInterceptor, "pre_insert"
+ transports.TargetHttpsProxiesRestInterceptor, "pre_get"
) as pre:
pre.assert_not_called()
post.assert_not_called()
@@ -1727,17 +1691,19 @@ def test_insert_unary_rest_interceptors(null_interceptor):
req.return_value = Response()
req.return_value.status_code = 200
req.return_value.request = PreparedRequest()
- req.return_value._content = compute.Operation.to_json(compute.Operation())
+ req.return_value._content = compute.TargetHttpsProxy.to_json(
+ compute.TargetHttpsProxy()
+ )
- request = compute.InsertTargetHttpsProxyRequest()
+ request = compute.GetTargetHttpsProxyRequest()
metadata = [
("key", "val"),
("cephalopod", "squid"),
]
pre.return_value = request, metadata
- post.return_value = compute.Operation
+ post.return_value = compute.TargetHttpsProxy
- client.insert_unary(
+ client.get(
request,
metadata=[
("key", "val"),
@@ -1749,8 +1715,8 @@ def test_insert_unary_rest_interceptors(null_interceptor):
post.assert_called_once()
-def test_insert_unary_rest_bad_request(
- transport: str = "rest", request_type=compute.InsertTargetHttpsProxyRequest
+def test_get_rest_bad_request(
+ transport: str = "rest", request_type=compute.GetTargetHttpsProxyRequest
):
client = TargetHttpsProxiesClient(
credentials=ga_credentials.AnonymousCredentials(),
@@ -1758,7 +1724,100 @@ def test_insert_unary_rest_bad_request(
)
# send a request that will satisfy transcoding
- request_init = {"project": "sample1"}
+ request_init = {"project": "sample1", "target_https_proxy": "sample2"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.get(request)
+
+
+def test_get_rest_flattened():
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetHttpsProxy()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "target_https_proxy": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ target_https_proxy="target_https_proxy_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetHttpsProxy.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.get(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/targetHttpsProxies/{target_https_proxy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_get_rest_flattened_error(transport: str = "rest"):
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.get(
+ compute.GetTargetHttpsProxyRequest(),
+ project="project_value",
+ target_https_proxy="target_https_proxy_value",
+ )
+
+
+def test_get_rest_error():
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertTargetHttpsProxyRequest,
+ dict,
+ ],
+)
+def test_insert_rest(request_type):
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
request_init["target_https_proxy_resource"] = {
"authorization_policy": "authorization_policy_value",
"creation_timestamp": "creation_timestamp_value",
@@ -1778,6 +1837,2219 @@ def test_insert_unary_rest_bad_request(
}
request = request_type(request_init)
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_insert_rest_required_fields(
+ request_type=compute.InsertTargetHttpsProxyRequest,
+):
+ transport_class = transports.TargetHttpsProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_rest_unset_required_fields():
+ transport = transports.TargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "targetHttpsProxyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_rest_interceptors(null_interceptor):
+ transport = transports.TargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.TargetHttpsProxiesRestInterceptor(),
+ )
+ client = TargetHttpsProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.TargetHttpsProxiesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.TargetHttpsProxiesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertTargetHttpsProxyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertTargetHttpsProxyRequest
+):
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["target_https_proxy_resource"] = {
+ "authorization_policy": "authorization_policy_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "quic_override": "quic_override_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_tls_policy": "server_tls_policy_value",
+ "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
+ "ssl_policy": "ssl_policy_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert(request)
+
+
+def test_insert_rest_flattened():
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ target_https_proxy_resource=compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/targetHttpsProxies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_rest_flattened_error(transport: str = "rest"):
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert(
+ compute.InsertTargetHttpsProxyRequest(),
+ project="project_value",
+ target_https_proxy_resource=compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value"
+ ),
+ )
+
+
+def test_insert_rest_error():
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.InsertTargetHttpsProxyRequest,
+ dict,
+ ],
+)
+def test_insert_unary_rest(request_type):
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["target_https_proxy_resource"] = {
+ "authorization_policy": "authorization_policy_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "quic_override": "quic_override_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_tls_policy": "server_tls_policy_value",
+ "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
+ "ssl_policy": "ssl_policy_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.insert_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_insert_unary_rest_required_fields(
+ request_type=compute.InsertTargetHttpsProxyRequest,
+):
+ transport_class = transports.TargetHttpsProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).insert._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "post",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.insert_unary(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_insert_unary_rest_unset_required_fields():
+ transport = transports.TargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.insert._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "targetHttpsProxyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_insert_unary_rest_interceptors(null_interceptor):
+ transport = transports.TargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.TargetHttpsProxiesRestInterceptor(),
+ )
+ client = TargetHttpsProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.TargetHttpsProxiesRestInterceptor, "post_insert"
+ ) as post, mock.patch.object(
+ transports.TargetHttpsProxiesRestInterceptor, "pre_insert"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.InsertTargetHttpsProxyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.insert_unary(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_insert_unary_rest_bad_request(
+ transport: str = "rest", request_type=compute.InsertTargetHttpsProxyRequest
+):
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request_init["target_https_proxy_resource"] = {
+ "authorization_policy": "authorization_policy_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "quic_override": "quic_override_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_tls_policy": "server_tls_policy_value",
+ "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
+ "ssl_policy": "ssl_policy_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.insert_unary(request)
+
+
+def test_insert_unary_rest_flattened():
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ target_https_proxy_resource=compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.insert_unary(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/targetHttpsProxies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_insert_unary_rest_flattened_error(transport: str = "rest"):
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.insert_unary(
+ compute.InsertTargetHttpsProxyRequest(),
+ project="project_value",
+ target_https_proxy_resource=compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value"
+ ),
+ )
+
+
+def test_insert_unary_rest_error():
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.ListTargetHttpsProxiesRequest,
+ dict,
+ ],
+)
+def test_list_rest(request_type):
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetHttpsProxyList(
+ id="id_value",
+ kind="kind_value",
+ next_page_token="next_page_token_value",
+ self_link="self_link_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetHttpsProxyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.list(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, pagers.ListPager)
+ assert response.id == "id_value"
+ assert response.kind == "kind_value"
+ assert response.next_page_token == "next_page_token_value"
+ assert response.self_link == "self_link_value"
+
+
+def test_list_rest_required_fields(request_type=compute.ListTargetHttpsProxiesRequest):
+ transport_class = transports.TargetHttpsProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).list._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(
+ (
+ "filter",
+ "max_results",
+ "order_by",
+ "page_token",
+ "return_partial_success",
+ )
+ )
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetHttpsProxyList()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "get",
+ "query_params": request_init,
+ }
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetHttpsProxyList.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.list(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_list_rest_unset_required_fields():
+ transport = transports.TargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.list._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(
+ (
+ "filter",
+ "maxResults",
+ "orderBy",
+ "pageToken",
+ "returnPartialSuccess",
+ )
+ )
+ & set(("project",))
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_list_rest_interceptors(null_interceptor):
+ transport = transports.TargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.TargetHttpsProxiesRestInterceptor(),
+ )
+ client = TargetHttpsProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.TargetHttpsProxiesRestInterceptor, "post_list"
+ ) as post, mock.patch.object(
+ transports.TargetHttpsProxiesRestInterceptor, "pre_list"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.TargetHttpsProxyList.to_json(
+ compute.TargetHttpsProxyList()
+ )
+
+ request = compute.ListTargetHttpsProxiesRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.TargetHttpsProxyList
+
+ client.list(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_list_rest_bad_request(
+ transport: str = "rest", request_type=compute.ListTargetHttpsProxiesRequest
+):
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1"}
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.list(request)
+
+
+def test_list_rest_flattened():
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.TargetHttpsProxyList()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.TargetHttpsProxyList.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.list(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/targetHttpsProxies"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_list_rest_flattened_error(transport: str = "rest"):
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.list(
+ compute.ListTargetHttpsProxiesRequest(),
+ project="project_value",
+ )
+
+
+def test_list_rest_pager(transport: str = "rest"):
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # TODO(kbandes): remove this mock unless there's a good reason for it.
+ # with mock.patch.object(path_template, 'transcode') as transcode:
+ # Set the response as a series of pages
+ response = (
+ compute.TargetHttpsProxyList(
+ items=[
+ compute.TargetHttpsProxy(),
+ compute.TargetHttpsProxy(),
+ compute.TargetHttpsProxy(),
+ ],
+ next_page_token="abc",
+ ),
+ compute.TargetHttpsProxyList(
+ items=[],
+ next_page_token="def",
+ ),
+ compute.TargetHttpsProxyList(
+ items=[
+ compute.TargetHttpsProxy(),
+ ],
+ next_page_token="ghi",
+ ),
+ compute.TargetHttpsProxyList(
+ items=[
+ compute.TargetHttpsProxy(),
+ compute.TargetHttpsProxy(),
+ ],
+ ),
+ )
+ # Two responses for two calls
+ response = response + response
+
+ # Wrap the values into proper Response objs
+ response = tuple(compute.TargetHttpsProxyList.to_json(x) for x in response)
+ return_values = tuple(Response() for i in response)
+ for return_val, response_val in zip(return_values, response):
+ return_val._content = response_val.encode("UTF-8")
+ return_val.status_code = 200
+ req.side_effect = return_values
+
+ sample_request = {"project": "sample1"}
+
+ pager = client.list(request=sample_request)
+
+ results = list(pager)
+ assert len(results) == 6
+ assert all(isinstance(i, compute.TargetHttpsProxy) for i in results)
+
+ pages = list(client.list(request=sample_request).pages)
+ for page_, token in zip(pages, ["abc", "def", "ghi", ""]):
+ assert page_.raw_page.next_page_token == token
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchTargetHttpsProxyRequest,
+ dict,
+ ],
+)
+def test_patch_rest(request_type):
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "target_https_proxy": "sample2"}
+ request_init["target_https_proxy_resource"] = {
+ "authorization_policy": "authorization_policy_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "quic_override": "quic_override_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_tls_policy": "server_tls_policy_value",
+ "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
+ "ssl_policy": "ssl_policy_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, extended_operation.ExtendedOperation)
+ assert response.client_operation_id == "client_operation_id_value"
+ assert response.creation_timestamp == "creation_timestamp_value"
+ assert response.description == "description_value"
+ assert response.end_time == "end_time_value"
+ assert response.http_error_message == "http_error_message_value"
+ assert response.http_error_status_code == 2374
+ assert response.id == 205
+ assert response.insert_time == "insert_time_value"
+ assert response.kind == "kind_value"
+ assert response.name == "name_value"
+ assert response.operation_group_id == "operation_group_id_value"
+ assert response.operation_type == "operation_type_value"
+ assert response.progress == 885
+ assert response.region == "region_value"
+ assert response.self_link == "self_link_value"
+ assert response.start_time == "start_time_value"
+ assert response.status == compute.Operation.Status.DONE
+ assert response.status_message == "status_message_value"
+ assert response.target_id == 947
+ assert response.target_link == "target_link_value"
+ assert response.user == "user_value"
+ assert response.zone == "zone_value"
+
+
+def test_patch_rest_required_fields(request_type=compute.PatchTargetHttpsProxyRequest):
+ transport_class = transports.TargetHttpsProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["target_https_proxy"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["targetHttpsProxy"] = "target_https_proxy_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "targetHttpsProxy" in jsonified_request
+ assert jsonified_request["targetHttpsProxy"] == "target_https_proxy_value"
+
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as req:
+ # We need to mock transcode() because providing default values
+ # for required fields will fail the real version if the http_options
+ # expect actual values for those fields.
+ with mock.patch.object(path_template, "transcode") as transcode:
+ # A uri without fields and an empty body will force all the
+ # request fields to show up in the query_params.
+ transcode_result = {
+ "uri": "v1/sample_method",
+ "method": "patch",
+ "query_params": request_init,
+ }
+ transcode_result["body"] = {}
+ transcode.return_value = transcode_result
+
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ response = client.patch(request)
+
+ expected_params = []
+ actual_params = req.call_args.kwargs["params"]
+ assert expected_params == actual_params
+
+
+def test_patch_rest_unset_required_fields():
+ transport = transports.TargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials
+ )
+
+ unset_fields = transport.patch._get_unset_required_fields({})
+ assert set(unset_fields) == (
+ set(("requestId",))
+ & set(
+ (
+ "project",
+ "targetHttpsProxy",
+ "targetHttpsProxyResource",
+ )
+ )
+ )
+
+
+@pytest.mark.parametrize("null_interceptor", [True, False])
+def test_patch_rest_interceptors(null_interceptor):
+ transport = transports.TargetHttpsProxiesRestTransport(
+ credentials=ga_credentials.AnonymousCredentials(),
+ interceptor=None
+ if null_interceptor
+ else transports.TargetHttpsProxiesRestInterceptor(),
+ )
+ client = TargetHttpsProxiesClient(transport=transport)
+ with mock.patch.object(
+ type(client.transport._session), "request"
+ ) as req, mock.patch.object(
+ path_template, "transcode"
+ ) as transcode, mock.patch.object(
+ transports.TargetHttpsProxiesRestInterceptor, "post_patch"
+ ) as post, mock.patch.object(
+ transports.TargetHttpsProxiesRestInterceptor, "pre_patch"
+ ) as pre:
+ pre.assert_not_called()
+ post.assert_not_called()
+
+ transcode.return_value = {
+ "method": "post",
+ "uri": "my_uri",
+ "body": None,
+ "query_params": {},
+ }
+
+ req.return_value = Response()
+ req.return_value.status_code = 200
+ req.return_value.request = PreparedRequest()
+ req.return_value._content = compute.Operation.to_json(compute.Operation())
+
+ request = compute.PatchTargetHttpsProxyRequest()
+ metadata = [
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ]
+ pre.return_value = request, metadata
+ post.return_value = compute.Operation
+
+ client.patch(
+ request,
+ metadata=[
+ ("key", "val"),
+ ("cephalopod", "squid"),
+ ],
+ )
+
+ pre.assert_called_once()
+ post.assert_called_once()
+
+
+def test_patch_rest_bad_request(
+ transport: str = "rest", request_type=compute.PatchTargetHttpsProxyRequest
+):
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "target_https_proxy": "sample2"}
+ request_init["target_https_proxy_resource"] = {
+ "authorization_policy": "authorization_policy_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "quic_override": "quic_override_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_tls_policy": "server_tls_policy_value",
+ "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
+ "ssl_policy": "ssl_policy_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a BadRequest error.
+ with mock.patch.object(Session, "request") as req, pytest.raises(
+ core_exceptions.BadRequest
+ ):
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 400
+ response_value.request = Request()
+ req.return_value = response_value
+ client.patch(request)
+
+
+def test_patch_rest_flattened():
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+
+ # get arguments that satisfy an http rule for this method
+ sample_request = {"project": "sample1", "target_https_proxy": "sample2"}
+
+ # get truthy value for each flattened field
+ mock_args = dict(
+ project="project_value",
+ target_https_proxy="target_https_proxy_value",
+ target_https_proxy_resource=compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value"
+ ),
+ )
+ mock_args.update(sample_request)
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+
+ client.patch(**mock_args)
+
+ # Establish that the underlying call was made with the expected
+ # request object values.
+ assert len(req.mock_calls) == 1
+ _, args, _ = req.mock_calls[0]
+ assert path_template.validate(
+ "%s/compute/v1/projects/{project}/global/targetHttpsProxies/{target_https_proxy}"
+ % client.transport._host,
+ args[1],
+ )
+
+
+def test_patch_rest_flattened_error(transport: str = "rest"):
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport=transport,
+ )
+
+ # Attempting to call a method with both a request object and flattened
+ # fields is an error.
+ with pytest.raises(ValueError):
+ client.patch(
+ compute.PatchTargetHttpsProxyRequest(),
+ project="project_value",
+ target_https_proxy="target_https_proxy_value",
+ target_https_proxy_resource=compute.TargetHttpsProxy(
+ authorization_policy="authorization_policy_value"
+ ),
+ )
+
+
+def test_patch_rest_error():
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(), transport="rest"
+ )
+
+
+@pytest.mark.parametrize(
+ "request_type",
+ [
+ compute.PatchTargetHttpsProxyRequest,
+ dict,
+ ],
+)
+def test_patch_unary_rest(request_type):
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+
+ # send a request that will satisfy transcoding
+ request_init = {"project": "sample1", "target_https_proxy": "sample2"}
+ request_init["target_https_proxy_resource"] = {
+ "authorization_policy": "authorization_policy_value",
+ "creation_timestamp": "creation_timestamp_value",
+ "description": "description_value",
+ "fingerprint": "fingerprint_value",
+ "id": 205,
+ "kind": "kind_value",
+ "name": "name_value",
+ "proxy_bind": True,
+ "quic_override": "quic_override_value",
+ "region": "region_value",
+ "self_link": "self_link_value",
+ "server_tls_policy": "server_tls_policy_value",
+ "ssl_certificates": ["ssl_certificates_value_1", "ssl_certificates_value_2"],
+ "ssl_policy": "ssl_policy_value",
+ "url_map": "url_map_value",
+ }
+ request = request_type(request_init)
+
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(type(client.transport._session), "request") as req:
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation(
+ client_operation_id="client_operation_id_value",
+ creation_timestamp="creation_timestamp_value",
+ description="description_value",
+ end_time="end_time_value",
+ http_error_message="http_error_message_value",
+ http_error_status_code=2374,
+ id=205,
+ insert_time="insert_time_value",
+ kind="kind_value",
+ name="name_value",
+ operation_group_id="operation_group_id_value",
+ operation_type="operation_type_value",
+ progress=885,
+ region="region_value",
+ self_link="self_link_value",
+ start_time="start_time_value",
+ status=compute.Operation.Status.DONE,
+ status_message="status_message_value",
+ target_id=947,
+ target_link="target_link_value",
+ user="user_value",
+ zone="zone_value",
+ )
+
+ # Wrap the value into a proper Response obj
+ response_value = Response()
+ response_value.status_code = 200
+ json_return_value = compute.Operation.to_json(return_value)
+ response_value._content = json_return_value.encode("UTF-8")
+ req.return_value = response_value
+ response = client.patch_unary(request)
+
+ # Establish that the response is the type that we expect.
+ assert isinstance(response, compute.Operation)
+
+
+def test_patch_unary_rest_required_fields(
+ request_type=compute.PatchTargetHttpsProxyRequest,
+):
+ transport_class = transports.TargetHttpsProxiesRestTransport
+
+ request_init = {}
+ request_init["project"] = ""
+ request_init["target_https_proxy"] = ""
+ request = request_type(request_init)
+ jsonified_request = json.loads(
+ request_type.to_json(
+ request, including_default_value_fields=False, use_integers_for_enums=False
+ )
+ )
+
+ # verify fields with default values are dropped
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with default values are now present
+
+ jsonified_request["project"] = "project_value"
+ jsonified_request["targetHttpsProxy"] = "target_https_proxy_value"
+
+ unset_fields = transport_class(
+ credentials=ga_credentials.AnonymousCredentials()
+ ).patch._get_unset_required_fields(jsonified_request)
+ # Check that path parameters and body parameters are not mixing in.
+ assert not set(unset_fields) - set(("request_id",))
+ jsonified_request.update(unset_fields)
+
+ # verify required fields with non-default values are left alone
+ assert "project" in jsonified_request
+ assert jsonified_request["project"] == "project_value"
+ assert "targetHttpsProxy" in jsonified_request
+ assert jsonified_request["targetHttpsProxy"] == "target_https_proxy_value"
+
+ client = TargetHttpsProxiesClient(
+ credentials=ga_credentials.AnonymousCredentials(),
+ transport="rest",
+ )
+ request = request_type(request_init)
+
+ # Designate an appropriate value for the returned response.
+ return_value = compute.Operation()
+ # Mock the http request call within the method and fake a response.
+ with mock.patch.object(Session, "request") as r